{"version":3,"sources":["webpack:///./node_modules/ag-grid-community/dist/lib/rendering/columnHoverService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellEditors/selectCellEditor.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/defaultColumnTypes.js","webpack:///./node_modules/ag-grid-community/dist/lib/misc/simpleHttpRequest.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerContainer.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/clientSide/sortStage.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/clientSide/changedPath.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridOptionsWrapper.js","webpack:///./node_modules/ag-grid-community/dist/lib/exporter/xmlFactory.js","webpack:///./node_modules/ag-grid-community/dist/lib/context/context.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/beans.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/checkboxSelectionComponent.js","webpack:///./node_modules/vue-class-component/dist/vue-class-component.esm.js","webpack:///./node_modules/vue-property-decorator/lib/vue-property-decorator.js","webpack:///./node_modules/ag-grid-vue/lib/VueComponentFactory.js","webpack:///./node_modules/ag-grid-vue/lib/VueFrameworkComponentWrapper.js","webpack:///./node_modules/ag-grid-vue/lib/Utils.js","webpack:///./node_modules/ag-grid-vue/lib/AgGridColumn.js","webpack:///./node_modules/ag-grid-vue/lib/AgGridVue.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/overlays/overlayWrapperComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerGroup/headerGroupComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/column.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/horizontalResizeService.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/cssClassApplier.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/colDefUtil.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/columnApi.js","webpack:///./node_modules/ag-grid-community/dist/lib/exporter/csvCreator.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/columnKeyCreator.js","webpack:///./node_modules/ag-grid-community/dist/lib/eventKeys.js","webpack:///./node_modules/ag-grid-community/dist/lib/filter/filterManager.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridApi.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/columnController.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellEditors/popupEditorWrapper.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/displayedGroupCreator.js","webpack:///./node_modules/ag-grid-community/dist/lib/functions.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerRowComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/cache/rowNodeBlock.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/clientSide/filterStage.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/bodyDropTarget.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerGroup/headerGroupWrapperComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/standardMenu.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/framework/userComponentRegistry.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/header/headerWrapperComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/filter/floatingFilterWrapper.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/framework/agComponentUtils.js","webpack:///./node_modules/ag-grid-vue/main.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridPanel/navigationService.js","webpack:///./node_modules/ag-grid-community/dist/lib/misc/resizeObserverService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/infinite/infiniteRowModel.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/autoGroupColService.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/touchListener.js","webpack:///./node_modules/ag-grid-community/dist/lib/misc/animationFrameService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowNodes/selectableService.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/gridRow.js","webpack:///./node_modules/ag-grid-community/dist/lib/exporter/downloader.js","webpack:///./node_modules/ag-grid-community/dist/lib/filter/dateFilter.js","webpack:///./node_modules/ag-grid-community/dist/lib/cellNavigationService.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/columnGroup.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/componentAnnotations.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/framework/componentMetadataProvider.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/agGridNg1.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/tooltipComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/popupService.js","webpack:///./node_modules/ag-grid-community/dist/lib/filter/baseFilter.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/rowContainerComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/cache/rowNodeBlockLoader.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/pagination/paginationComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/tooltipManager.js","webpack:///./node_modules/ag-grid-community/dist/lib/logger.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/valueFormatterService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/rowDragComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellEditors/popupSelectCellEditor.js","webpack:///./node_modules/ag-grid-community/dist/lib/valueService/valueService.js","webpack:///./node_modules/ag-grid-community/dist/lib/exporter/gridSerializer.js","webpack:///./node_modules/ag-grid-community/dist/lib/context/beanStub.js","webpack:///./node_modules/ag-grid-community/dist/lib/filter/floatingFilter.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/infinite/infiniteBlock.js","webpack:///./node_modules/ag-grid-community/dist/lib/exporter/files/zip/zipContainer.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/paginationProxy.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/componentUtil.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/rowRenderer.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/component.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/columnUtils.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/clientSide/clientSideNodeManager.js","webpack:///./node_modules/ag-grid-community/dist/lib/selectionController.js","webpack:///./node_modules/ag-grid-community/dist/lib/layout/verticalStack.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/moveColumnController.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowNodes/filterService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellEditors/textCellEditor.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/maxDivHeightScaler.js","webpack:///./node_modules/ag-grid-community/main.js","webpack:///./node_modules/ag-grid-community/dist/lib/constants.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridCore.js","webpack:///./node_modules/ag-grid-community/dist/lib/filter/textFilter.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/overlays/noRowsOverlayComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/autoWidthCalculator.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/columnFactory.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/popupMessageBox.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/framework/userComponentFactory.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/originalColumnGroup.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/cache/rowNodeCache.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellRenderers/loadingCellRenderer.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/agCheckbox.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/popupWindow.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/popupComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/utils.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridPanel/scrollVisibleService.js","webpack:///./node_modules/ag-grid-community/dist/lib/valueService/changeDetectionService.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/rowNode.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridPanel/rowDragFeature.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/framework/frameworkComponentWrapper.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/gridCell.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellEditors/popupTextCellEditor.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellRenderers/animateShowChangeCellRenderer.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/bodyDropPivotTarget.js","webpack:///./node_modules/ag-grid-community/dist/lib/grid.js","webpack:///./node_modules/ag-grid-community/dist/lib/eventService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowNodes/sortService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/environment.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/clientSide/clientSideRowModel.js","webpack:///./node_modules/ag-grid-community/dist/lib/templateService.js","webpack:///./node_modules/ag-grid-community/dist/lib/alignedGridsService.js","webpack:///./node_modules/ag-grid-community/dist/lib/dragAndDrop/dragAndDropService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/clientSide/immutableService.js","webpack:///./node_modules/ag-grid-community/dist/lib/styling/stylingService.js","webpack:///./node_modules/ag-grid-community/dist/lib/sortController.js","webpack:///./node_modules/ag-grid-community/dist/lib/dragAndDrop/dragService.js","webpack:///./node_modules/ag-grid-community/dist/lib/baseFrameworkFactory.js","webpack:///./node_modules/ag-grid-community/dist/lib/filter/numberFilter.js","webpack:///./node_modules/ag-grid-community/dist/lib/events.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/overlays/loadingOverlayComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/rowComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/pinnedRowModel.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/agGridWebComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/layout/tabbedLayout.js","webpack:///./node_modules/ag-grid-community/dist/lib/valueService/valueCache.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridPanel/gridPanel.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/header/headerComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridPanel/mouseEventService.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/header/selectAllFeature.js","webpack:///./node_modules/ag-grid-community/dist/lib/propertyKeys.js","webpack:///./node_modules/ag-grid-community/dist/lib/valueService/expressionService.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/groupInstanceIdCreator.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellRenderers/groupCellRenderer.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/sideBar.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/features/setLeftFeature.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellEditors/largeTextCellEditor.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellRenderers/animateSlideCellRenderer.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/infinite/infiniteCache.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/autoHeightCalculator.js","webpack:///./node_modules/ag-grid-community/dist/lib/focusedCellController.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/clientSide/flattenStage.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/columnAnimationService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellRendererFactory.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerRootComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/hoverFeature.js"],"names":["__extends","this","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__metadata","k","v","metadata","exports","value","eventService_1","context_1","events_1","beanStub_1","columnApi_1","gridApi_1","ColumnHoverService","_super","apply","setMouseOver","columns","selectedColumns","event","type","Events","EVENT_COLUMN_HOVER_CHANGED","api","gridApi","columnApi","eventService","dispatchEvent","clearMouseOver","isHovered","column","indexOf","Autowired","EventService","ColumnApi","GridApi","Bean","BeanStub","popupComponent_1","constants_1","gridOptionsWrapper_1","valueFormatterService_1","utils_1","SelectCellEditor","_this","call","eSelect","getGui","querySelector","init","params","focusAfterAttached","cellStartedEdit","_","missing","values","console","warn","forEach","option","document","createElement","valueFormatted","valueFormatterService","formatValue","valueFormattedExits","undefined","text","selected","appendChild","gridOptionsWrapper","isFullRowEdit","addDestroyableEventListener","stopEditing","isNavigationKey","keyCode","Constants","KEY_UP","KEY_DOWN","stopPropagation","afterGuiAttached","focus","focusIn","getValue","isPopup","GridOptionsWrapper","ValueFormatterService","PopupComponent","DefaultColumnTypes","numericColumn","headerClass","cellClass","simpleHttpRequest","Promise","resolve","httpRequest","XMLHttpRequest","open","url","send","onreadystatechange","readyState","status","httpResponse","JSON","parse","responseText","dragAndDropService_1","columnController_1","headerRowComp_1","bodyDropTarget_1","column_1","scrollVisibleService_1","HeaderContainer","eContainer","eViewport","pinned","headerRowComps","registerGridComp","gridPanel","setupDragAndDrop","forEachHeaderElement","callback","headerRowComp","scrollWidth","getScrollbarWidth","addEventListener","EVENT_COLUMN_VALUE_CHANGED","onColumnValueChanged","bind","EVENT_COLUMN_ROW_GROUP_CHANGED","onColumnRowGroupChanged","EVENT_GRID_COLUMNS_CHANGED","onGridColumnsChanged","EVENT_SCROLL_VISIBILITY_CHANGED","onScrollVisibilityChanged","EVENT_COLUMN_RESIZED","onColumnResized","EVENT_DISPLAYED_COLUMNS_CHANGED","onDisplayedColumnsChanged","setWidthOfPinnedContainer","pinningLeft","Column","PINNED_LEFT","pinningRight","PINNED_RIGHT","controller","columnController","isRtl","isEnableRtl","width","addPaddingForScrollbar","scrollVisibleService","isVerticalScrollShowing","setFixedWidth","destroy","removeHeaderRowComps","removeAndCreateAllRowComps","createHeaderRowComps","refresh","gridComp","dropContainer","bodyDropTarget","BodyDropTarget","context","wireBean","clearElement","rowCount","getHeaderRowCount","dept","groupRow","HeaderRowType","COLUMN_GROUP","COLUMN","HeaderRowComp","dropTarget","push","includeFloatingFilterRow","isFloatingFilter","isPivotMode","FLOATING_FILTER","Context","DragAndDropService","ColumnController","ScrollVisibleService","PostConstruct","Function","sortService_1","sortController_1","SortStage","execute","sortOptions","sortController","getSortForRowController","sortActive","exists","deltaSort","rowNodeTransactions","isDeltaSort","dirtyLeafNodes","calculateDirtyNodes","valueColumns","getValueColumns","noAggregations","missingOrEmpty","sortService","sort","changedPath","dirtyNodes","addNodesFunc","rowNodes","rowNode","id","tran","add","update","remove","SortService","SortController","ChangedPath","keepingColumns","rootNode","active","nodeIdsToColumns","mapToItems","pathRoot","children","setInactive","isActive","depthFirstSearchChangedPath","pathItem","depthFirstSearchEverything","traverseEverything","childrenAfterGroup","childNode","forEachChangedNodeDepthFirst","traverseLeafNodes","executeFromRootNode","createPathItems","pointer","newEntryCount","newEntry","parent","populateColumnsMap","col","getId","linkPathItems","thisItem","parentItem","addParentNode","canSkip","getValueColumnsForNode","colsForThisNode","result","filter","getNotValueColumnsForNode","__param","paramIndex","decorator","componentUtil_1","environment_1","propertyKeys_1","colDefUtil_1","eventKeys_1","autoHeightCalculator_1","sideBar_1","DEFAULT_ROW_HEIGHT","DEFAULT_DETAIL_ROW_HEIGHT","DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE","DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE","isTrue","zeroOrGreater","defaultValue","oneOrGreater","propertyEventService","domDataKey","Math","random","toString","layoutElements","GridOptionsWrapper_1","agWire","gridOptions","checkForDeprecated","checkForViolations","suppressPropertyNamesCheck","checkGridOptionsProperties","checkColumnDefProperties","async","useAsyncEvents","addGlobalListener","globalEventHandler","isGroupSelectsChildren","isSuppressParentsInRowNodes","isRowSelectionMulti","isRowModelServerSide","isGroupRemoveSingleChildren","isGroupHideOpenParents","PROP_DOM_LAYOUT","updateLayoutClasses","columnDefs","colDef","userProperties","getOwnPropertyNames","validProperties","ColDefUtil","ALL_PROPERTIES","concat","FRAMEWORK_PROPERTIES","checkProperties","PropertyKeys","keys","it","ComponentUtil","getCallbackForEvent","validPropertiesAndExceptions","containerName","docsUrl","invalidProperties","fuzzyCheckStrings","invalidPropertyKeys","invalidPropertyKey","fuzzySuggestions","slice","join","getDomData","element","domData","setDomData","isEnterprise","enterprise","isRowSelection","rowSelection","isRowDeselection","rowDeselection","isRowMultiSelectWithClick","rowMultiSelectWithClick","getContext","pivotMode","isPivotTotals","pivotTotals","getPivotColumnGroupTotals","pivotColumnGroupTotals","getPivotRowTotals","pivotRowTotals","isRowModelInfinite","rowModelType","ROW_MODEL_TYPE_INFINITE","isRowModelViewport","ROW_MODEL_TYPE_VIEWPORT","ROW_MODEL_TYPE_SERVER_SIDE","isRowModelDefault","ROW_MODEL_TYPE_CLIENT_SIDE","DEPRECATED_ROW_MODEL_TYPE_NORMAL","editType","isSuppressFocusAfterRefresh","suppressFocusAfterRefresh","isSuppressBrowserResizeObserver","suppressBrowserResizeObserver","isSuppressMaintainUnsortedOrder","suppressMaintainUnsortedOrder","isShowToolPanel","sideBar","isArray","getSideBar","toolPanels","isSuppressTouch","suppressTouch","isSuppressRowTransform","suppressRowTransform","isSuppressSetColumnStateEvents","suppressSetColumnStateEvents","suppressAsyncEvents","isEnableCellChangeFlash","enableCellChangeFlash","groupSelectsChildren","isTreeData","isSuppressRowHoverHighlight","suppressRowHoverHighlight","isGroupSelectsFiltered","groupSelectsFiltered","groupHideOpenParents","isGroupMultiAutoColumn","groupMultiAutoColumn","groupRemoveSingleChildren","isGroupRemoveLowestSingleChildren","groupRemoveLowestSingleChildren","isGroupIncludeFooter","groupIncludeFooter","isGroupIncludeTotalFooter","groupIncludeTotalFooter","isGroupSuppressBlankHeader","groupSuppressBlankHeader","isSuppressRowClickSelection","suppressRowClickSelection","isSuppressCellSelection","suppressCellSelection","isSuppressMultiSort","suppressMultiSort","isMultiSortKeyCtrl","multiSortKey","isGroupSuppressAutoColumn","groupSuppressAutoColumn","isSuppressDragLeaveHidesColumns","suppressDragLeaveHidesColumns","isSuppressScrollOnNewData","suppressScrollOnNewData","isRowDragManaged","rowDragManaged","isSuppressRowDrag","suppressRowDrag","getDomLayout","domLayout","DOM_LAYOUT_PRINT","DOM_LAYOUT_AUTO_HEIGHT","DOM_LAYOUT_NORMAL","doOnce","isSuppressHorizontalScroll","suppressHorizontalScroll","isSuppressMaxRenderedRowRestriction","suppressMaxRenderedRowRestriction","isExcludeChildrenWhenTreeDataFiltering","excludeChildrenWhenTreeDataFiltering","isAlwaysShowVerticalScroll","alwaysShowVerticalScroll","isSuppressLoadingOverlay","suppressLoadingOverlay","isSuppressNoRowsOverlay","suppressNoRowsOverlay","isSuppressFieldDotNotation","suppressFieldDotNotation","getPinnedTopRowData","pinnedTopRowData","getPinnedBottomRowData","pinnedBottomRowData","isFunctionsPassive","functionsPassive","isSuppressTabbing","suppressTabbing","isSuppressChangeDetection","suppressChangeDetection","isSuppressAnimationFrame","suppressAnimationFrame","getQuickFilterText","quickFilterText","isCacheQuickFilter","cacheQuickFilter","isUnSortIcon","unSortIcon","isSuppressMenuHide","suppressMenuHide","isEnterMovesDownAfterEdit","enterMovesDownAfterEdit","isEnterMovesDown","enterMovesDown","getRowStyle","rowStyle","getRowClass","rowClass","getRowStyleFunc","getRowClassFunc","rowClassRules","getPopupParent","popupParent","getBlockLoadDebounceMillis","blockLoadDebounceMillis","getPostProcessPopupFunc","postProcessPopup","getDoesDataFlowerFunc","doesDataFlower","getPaginationNumberFormatterFunc","paginationNumberFormatter","getChildCountFunc","getChildCount","getDefaultGroupSortComparator","defaultGroupSortComparator","getIsFullWidthCellFunc","isFullWidthCell","getFullWidthCellRendererParams","fullWidthCellRendererParams","isEmbedFullWidthRows","deprecatedEmbedFullWidthRows","getSuppressKeyboardEventFunc","suppressKeyboardEvent","getBusinessKeyForNodeFunc","getBusinessKeyForNode","getApi","getColumnApi","isDeltaRowDataMode","deltaRowDataMode","isDeltaColumnMode","deltaColumnMode","isEnsureDomOrder","ensureDomOrder","isEnableCharts","enableCharts","getColResizeDefault","colResizeDefault","isSingleClickEdit","singleClickEdit","isSuppressClickEdit","suppressClickEdit","isStopEditingWhenGridLosesFocus","stopEditingWhenGridLosesFocus","getGroupDefaultExpanded","groupDefaultExpanded","getMaxConcurrentDatasourceRequests","maxConcurrentDatasourceRequests","getMaxBlocksInCache","maxBlocksInCache","getCacheOverflowSize","cacheOverflowSize","getPaginationPageSize","paginationPageSize","getCacheBlockSize","cacheBlockSize","getInfiniteInitialRowCount","infiniteInitialRowCount","isPurgeClosedRowNodes","purgeClosedRowNodes","isSuppressPaginationPanel","suppressPaginationPanel","getRowData","rowData","isGroupUseEntireRow","groupUseEntireRow","enableRtl","getAutoGroupColumnDef","autoGroupColumnDef","isGroupSuppressRow","groupSuppressRow","getRowGroupPanelShow","rowGroupPanelShow","getPivotPanelShow","pivotPanelShow","isAngularCompileRows","angularCompileRows","isAngularCompileFilters","angularCompileFilters","isAngularCompileHeaders","angularCompileHeaders","isDebug","debug","getColumnDefs","getColumnTypes","columnTypes","getDatasource","datasource","getViewportDatasource","viewportDatasource","getServerSideDatasource","serverSideDatasource","isAccentedSort","accentedSort","isEnableBrowserTooltips","enableBrowserTooltips","isEnableCellExpressions","enableCellExpressions","isEnableGroupEdit","enableGroupEdit","isSuppressMiddleClickScrolls","suppressMiddleClickScrolls","isSuppressPreventDefaultOnMouseWheel","suppressPreventDefaultOnMouseWheel","isSuppressColumnVirtualisation","suppressColumnVirtualisation","isSuppressContextMenu","suppressContextMenu","isAllowContextMenuWithControlKey","allowContextMenuWithControlKey","isSuppressCopyRowsToClipboard","suppressCopyRowsToClipboard","isCopyHeadersToClipboard","copyHeadersToClipboard","isSuppressClipboardPaste","suppressClipboardPaste","isPagination","pagination","isSuppressEnterpriseResetOnNewColumns","suppressEnterpriseResetOnNewColumns","getProcessDataFromClipboardFunc","processDataFromClipboard","getBatchUpdateWaitMillis","batchUpdateWaitMillis","BATCH_WAIT_MILLIS","isSuppressMovableColumns","suppressMovableColumns","isAnimateRows","animateRows","isSuppressColumnMoveAnimation","suppressColumnMoveAnimation","isSuppressAggFuncInHeader","suppressAggFuncInHeader","isSuppressAggAtRootLevel","suppressAggAtRootLevel","isEnableRangeSelection","enableRangeSelection","isSuppressMultiRangeSelection","suppressMultiRangeSelection","isPaginationAutoPageSize","paginationAutoPageSize","isRememberGroupStateWhenNewData","rememberGroupStateWhenNewData","getIcons","icons","getAggFuncs","aggFuncs","getSortingOrder","sortingOrder","getAlignedGrids","alignedGrids","isMasterDetail","usingMasterDetail","masterDetail","getIsRowMasterFunc","isRowMaster","getIsRowSelectableFunc","isRowSelectable","getGroupRowRendererParams","groupRowRendererParams","getOverlayLoadingTemplate","overlayLoadingTemplate","getOverlayNoRowsTemplate","overlayNoRowsTemplate","isSuppressAutoSize","suppressAutoSize","isEnableCellTextSelection","enableCellTextSelection","suppressParentsInRowNodes","isFunctionsReadOnly","functionsReadOnly","floatingFilter","isEnableCellTextSelect","isEnableOldSetFilterModel","enableOldSetFilterModel","getDefaultColDef","defaultColDef","getDefaultColGroupDef","defaultColGroupDef","getDefaultExportParams","defaultExportParams","isSuppressCsvExport","suppressCsvExport","isSuppressExcelExport","suppressExcelExport","isSuppressMakeColumnVisibleAfterUnGroup","suppressMakeColumnVisibleAfterUnGroup","getNodeChildDetailsFunc","getNodeChildDetails","getDataPathFunc","getDataPath","getIsServerSideGroupFunc","isServerSideGroup","getServerSideGroupKeyFunc","getServerSideGroupKey","getGroupRowAggNodesFunc","groupRowAggNodes","getContextMenuItemsFunc","getContextMenuItems","getMainMenuItemsFunc","getMainMenuItems","getRowNodeIdFunc","getRowNodeId","getNavigateToNextCellFunc","navigateToNextCell","getTabToNextCellFunc","tabToNextCell","usingTreeData","treeData","isValueCache","valueCache","isValueCacheNeverExpires","valueCacheNeverExpires","isAggregateOnlyChangedColumns","aggregateOnlyChangedColumns","getProcessSecondaryColDefFunc","processSecondaryColDef","getProcessSecondaryColGroupDefFunc","processSecondaryColGroupDef","getSendToClipboardFunc","sendToClipboard","getProcessRowPostCreateFunc","processRowPostCreate","getProcessCellForClipboardFunc","processCellForClipboard","getProcessHeaderForClipboardFunc","processHeaderForClipboard","getProcessCellFromClipboardFunc","processCellFromClipboard","getViewportRowModelPageSize","viewportRowModelPageSize","getViewportRowModelBufferSize","viewportRowModelBufferSize","isServerSideSortingAlwaysResets","serverSideSortingAlwaysResets","getPostSortFunc","postSort","getClipboardDeliminator","clipboardDeliminator","setProperty","gridOptionsNoType","previousValue","event_1","currentValue","addLayoutElement","domLayoutAutoHeight","domLayoutPrint","domLayoutNormal","e","addOrRemoveCssClass","listener","checkEventDeprecation","eventName","removeEventListener","getAutoSizePadding","autoSizePadding","getHeaderHeight","headerHeight","specialForNewMaterial","getFloatingFiltersHeight","floatingFiltersHeight","getGroupHeaderHeight","groupHeaderHeight","getPivotHeaderHeight","pivotHeaderHeight","getPivotGroupHeaderHeight","pivotGroupHeaderHeight","isExternalFilterPresent","doesExternalFilterPass","node","getDocument","getMinColWidth","minColWidth","MIN_COL_WIDTH","getMaxColWidth","maxColWidth","getColWidth","colWidth","getRowBufferInPixels","rowsToBuffer","rowBuffer","ROW_BUFFER_SIZE","defaultRowHeight","getRowHeightAsNumber","res","scrollbarWidth","options","suppressUnSort","suppressDescSort","groupAggFields","groupHidePivotColumns","groupKeys","onRowDeselected","rowDeselected","rowsAlreadyGrouped","groupAggFunction","checkboxSelection","paginationInitialRowCount","infinitePageSize","infiniteBlockSize","maxPagesInCache","paginationOverflowSize","suppressMenuFilterPanel","suppressMenuMainPanel","suppressMenuColumnPanel","suppressUseColIdForGroups","groupColumnDef","slaveGrids","floatingTopRowData","floatingBottomRowData","paginationStartPage","getHeaderCellTemplate","headerCellTemplate","headerCellRenderer","layoutInterval","gridAutoHeight","showToolPanel","oldToolPanelProperties","toolPanelSuppressRowGroups","toolPanelSuppressValues","toolPanelSuppressPivots","toolPanelSuppressPivotMode","toolPanelSuppressColumnFilter","toolPanelSuppressColumnSelectAll","toolPanelSuppressSideButtons","toolPanelSuppressColumnExpandAll","contractColumnSelection","toolPanelColumnsCompProps","translation","SideBarDefParser","sideBarDef","columnsDef","mergeDeep","componentParams","enableStatusBar","statusBar","components","component","alwaysShowStatusBar","enableServerSideSorting","enableSorting","sortable","enableFilter","enableServerSideFilter","enableColResize","resizable","embedFullWidthRows","treeDataViolations","getLocaleTextFunc","localeTextFunc","that","localeText","callbackMethodName","rowHeight","getDefaultRowHeight","isNumeric","getRowHeightForNode","allowEstimate","getRowHeight","height","estimated","data","detail","detailRowHeight","minRowHeight","isAutoRowHeightActive","autoHeight","autoHeightCalculator","getPreferredHeightForRow","max","isDynamicRowHeight","getVirtualItemHeight","isNaN","sassVariableName","theme","environment","getTheme","getSassVariable","PROP_HEADER_HEIGHT","PROP_GROUP_REMOVE_SINGLE_CHILDREN","PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN","PROP_PIVOT_HEADER_HEIGHT","PROP_SUPPRESS_CLIPBOARD_PASTE","PROP_GROUP_HEADER_HEIGHT","PROP_PIVOT_GROUP_HEADER_HEIGHT","PROP_FLOATING_FILTERS_HEIGHT","PROP_SUPPRESS_ROW_DRAG","PROP_POPUP_PARENT","Boolean","Environment","AutoHeightCalculator","Qualifier","PreDestroy","LINE_SEPARATOR","XmlFactory","createHeader","headerElement","headerStart","headerEnd","version","encoding","standalone","att","map","createXml","xmlElement","booleanTransformer","props","properties","prefixedAttributes","prefixedSet","returnAttributeIfPopulated","prefix","rawMap","name","textNode","xmlValue","logger","beanWrappers","componentsMappedByName","destroyed","beans","contextParams","log","setupComponents","createBeans","beanInstances","getBeanInstances","wireBeans","mapObject","beanEntry","beanInstance","componentMeta","addComponent","classEscaped","componentName","replace","toLowerCase","classUpperCase","toUpperCase","theClass","createComponentFromElement","afterPreCreateCallback","nodeName","newComponent","bean","Error","autoWireBeans","methodWireBeans","callLifeCycleMethods","createBeanWrapper","overrideBeans","iterateObject","constructorParamsMeta","__agBeanMetaData","autowireMethods","agConstructor","constructorParams","getBeansForParameters","newInstance","applyToConstructor","getBeanName","metaData","beanName","error","forEachMetaDataInHierarchy","attributes","agClassAttributes","attribute","otherBean","lookupBeanInstance","optional","attributeName","methodName","wireParams","initParams","getPrototypeOf","constructorString","substring","parameters","beansList","otherBeanName","Number","wiringBean","seed","lifeCycleMethod","methods","getBean","getEnterpriseDefaultComponents","enterpriseDefaultComponents","argArray","args","factoryFunction","PreConstruct","descriptor","getOrCreateProps","postConstructMethods","preConstructMethods","preDestroyMethods","classConstructor","propertyKey","autowiredFunc","Optional","classPrototype","methodOrAttributeName","index","expressionService_1","rowRenderer_1","templateService_1","valueService_1","columnAnimationService_1","focusedCellController_1","cellRendererFactory_1","popupService_1","stylingService_1","columnHoverService_1","paginationProxy_1","animationFrameService_1","userComponentFactory_1","filterManager_1","maxDivHeightScaler_1","tooltipManager_1","Beans","postConstruct","doingMasterDetail","PaginationProxy","ExpressionService","RowRenderer","TemplateService","ValueService","ColumnAnimationService","FocusedCellController","CellRendererFactory","PopupService","StylingService","UserComponentFactory","AnimationFrameService","FilterManager","MaxDivHeightScaler","TooltipManager","component_1","rowNode_1","CheckboxSelectionComponent","createAndAddIcons","eCheckedIcon","createIconNoSpan","eUncheckedIcon","eIndeterminateIcon","onDataChanged","onSelectionChanged","onSelectableChanged","showOrHideSelect","state","isSelected","setVisible","onCheckedClicked","updatedCount","setSelectedParams","newValue","onUncheckedClicked","rangeSelect","shiftKey","onIndeterminateClicked","addGuiEventListener","stopPropagationForAgGrid","RowNode","EVENT_ROW_SELECTED","EVENT_DATA_CHANGED","EVENT_SELECTABLE_CHANGED","isRowSelectableFunc","checkboxVisibleIsDynamic","checkboxCallbackExists","selectable","isCellCheckboxSelection","getColDef","Component","reflectionIsSupported","defineMetadata","getOwnMetadataKeys","copyReflectionMetadata","to","from","forwardMetadata","metaKeys","metaKey","getOwnMetadata","fakeArray","hasProto","createDecorator","factory","Ctor","__decorators__","isPrimitive","collectDataFromConstructor","vm","originalInit","_init","$options","charAt","get","set","configurable","plainData","$internalHooks","componentFactory","_componentTag","proto","mixins","_a","computed","fn","superProto","Super","Extended","extend","forwardStaticMembers","shouldIgnore","callee","caller","Original","extendedDescriptor","superDescriptor","registerHooks","reflectMetadataIsSupported","getMetadata","applyMetadata","Prop","componentOptions","VueComponentFactory","getComponentType","componentInstance","$parent","createAndMountComponent","componentType","details","freeze","componentDependencies","dependency","$mount","VueFrameworkComponentWrapper","createWrapper","DynamicComponent","hasMethod","wrapper","getFrameworkComponentInstance","callMethod","frameworkComponentInstance","addMethod","overrideProcessing","autoParamsRefresh","processMethod","createComponent","VueComponent","createMethodProxy","mandatory","$el","$destroy","getAgGridProperties","default","rowDataModel","watch","processChanges","propertyName","model","prop","AgGridColumn","hasChildColumns","slots","mapChildColumnDefs","toColDef","createColDefFromGridColumn","getChildColDefs","columnChildren","assign","attrs","BOOLEAN_PROPERTIES","property","colDefAsAny","reduce","o","AgGridVue","gridCreated","isDestroyed","gridReadyFired","emitRowModel","AgGridVue_1","kebabProperty","render","h","globalEventListener","eventType","updateModelIfUsed","kebabName","$listeners","$emit","skipChange","changes","processOnChange","mounted","debounce","frameworkComponentWrapper","copyAttributesToGridOptions","checkForBindingConflicts","getRowDataBasedOnBindings","$slots","gridParams","seedBeanInstances","thisAsAny","forEachNode","ROW_DATA_EVENTS","currentRowData","previousRowData","func","delay","timeout","later","window","clearTimeout","setTimeout","LoadingType","componentAnnotations_1","OverlayWrapperComponent","TEMPLATE","eOverlayWrapper","setWrapperTypeClass","loadingType","Loading","NoRows","showLoadingOverlay","destroyActiveOverlay","userComponentFactory","newLoadingOverlayComponent","then","comp","activeOverlay","showNoRowsOverlay","newNoRowsOverlayComponent","hideOverlay","RefSelector","HTMLElement","touchListener_1","originalColumnGroup_1","HeaderGroupComp","setupLabel","addGroupExpandIcon","setupExpandIcons","addInIcon","expandAction","isStopPropagationForAgGrid","newExpandedValue","columnGroup","isExpanded","setColumnGroupOpened","getOriginalColumnGroup","addTouchAndClickListeners","eCloseIcon","eOpenIcon","stopPropagationAction","updateIconVisibility","originalColumnGroup","OriginalColumnGroup","EVENT_EXPANDED_CHANGED","EVENT_EXPANDABLE_CHANGED","eElement","action","touchListener","TouchListener","EVENT_TAP","addDestroyFunc","isExpandable","expanded","iconName","refName","eIcon","getRefElement","displayName","eInnerText","innerHTML","columnUtils_1","userProvidedColDef","colId","primary","moving","menuVisible","filterActive","rowGroupActive","pivotActive","aggregationActive","visible","hide","sortedAt","lockPosition","lockPinned","lockVisible","setColDef","getUserProvidedColDef","isLockPosition","isLockVisible","isLockPinned","setParent","getParent","setOriginalParent","originalParent","getOriginalParent","initialise","setPinned","minWidth","maxWidth","actualWidth","columnUtils","calculateColInitialWidth","suppressDotNotation","fieldContainsDots","field","tooltipFieldContainsDots","tooltipField","validate","isEmptyGroup","isRowGroupDisplayed","showRowGroup","showingAllGroups","showingThisGroup","getUniqueId","isPrimary","isFilterAllowed","filterDefined","filterFramework","isFieldContainsDots","isTooltipFieldContainsDots","colDefAny","itemsNotAllowedWithoutEnterprise","item","itemsNotAllowedWithTreeData","floatingCellRenderer","pinnedRowCellRenderer","floatingRendererFramework","pinnedRowCellRendererFramework","floatingRendererParams","pinnedRowCellRendererParams","floatingValueFormatter","pinnedRowValueFormatter","cellFormatter","valueFormatter","volatile","suppressSorting","suppressFilter","suppressResize","tooltip","tooltipValueGetter","createIsColumnFuncParams","isSuppressNavigable","suppressNavigable","userFunc","isCellEditable","group","isColumnFunc","editable","isRowDrag","rowDrag","isSuppressPaste","suppressPaste","isResizable","editableFunc","setMoving","source","createColumnEvent","EVENT_MOVING_CHANGED","isMoving","getSort","setSort","EVENT_SORT_CHANGED","setMenuVisible","EVENT_MENU_VISIBLE_CHANGED","isMenuVisible","isSortAscending","SORT_ASC","isSortDescending","SORT_DESC","isSortNone","isSorting","getSortedAt","setSortedAt","setAggFunc","aggFunc","getAggFunc","getLeft","left","getOldLeft","oldLeft","getRight","setLeft","EVENT_LEFT_CHANGED","isFilterActive","setFilterActive","EVENT_FILTER_ACTIVE_CHANGED","EVENT_FILTER_CHANGED","setFirstRightPinned","firstRightPinned","EVENT_FIRST_RIGHT_PINNED_CHANGED","setLastLeftPinned","lastLeftPinned","EVENT_LAST_LEFT_PINNED_CHANGED","isFirstRightPinned","isLastLeftPinned","isPinned","isPinnedLeft","isPinnedRight","getPinned","EVENT_VISIBLE_CHANGED","isVisible","getColumnGroupShow","columnGroupShow","getColId","getDefinition","getActualWidth","createBaseColDefParams","getColSpan","colSpan","getRowSpan","rowSpan","setActualWidth","EVENT_WIDTH_CHANGED","isGreaterThanMax","getMinWidth","getMaxWidth","setMinimum","setRowGroupActive","rowGroup","EVENT_ROW_GROUP_CHANGED","isRowGroupActive","setPivotActive","pivot","EVENT_PIVOT_CHANGED","isPivotActive","isAnyFunctionActive","isValueActive","isAnyFunctionAllowed","isAllowPivot","isAllowRowGroup","isAllowValue","setValueActive","EVENT_VALUE_CHANGED","enablePivot","enableValue","enableRowGroup","getMenuTabs","defaultValues","menuTabs","ColumnUtils","dragService_1","HorizontalResizeService","addResizeBar","dragSource","dragStartPixels","eResizeBar","onDragStart","onDragStop","onDragging","dragService","addDragSource","finishedWithResizeFunc","removeDragSource","mouseEvent","draggingStarted","dragStartX","clientX","setResizeIcons","MouseEvent","onResizeStart","oldBodyCursor","eGridDiv","style","cursor","oldMsUserSelect","msUserSelect","oldWebkitUserSelect","webkitUserSelect","onResizeEnd","resizeAmount","resetIcons","onResizing","DragService","CssClassApplier","addHeaderClassesFromColDef","abstractColDef","eHeaderCell","addColumnClassesFromCollDef","addToolPanelClassesFromColDef","toolPanelClass","classesOrFunc","classToUse","headerClassFunc","addCssClass","cssClassItem","STRING_PROPERTIES","OBJECT_PROPERTIES","ARRAY_PROPERTIES","NUMBER_PROPERTIES","FUNCTION_PROPERTIES","sizeColumnsToFit","gridWidth","getColumnGroup","instanceId","getDisplayNameForColumn","location","getDisplayNameForColumnGroup","getColumn","getPrimaryColumn","setColumnState","columnState","getColumnState","resetColumnState","getColumnGroupState","setColumnGroupState","stateItems","resetColumnGroupState","isPinning","isPinningLeft","isPinningRight","getDisplayedColAfter","getDisplayedColBefore","setColumnVisible","setColumnsVisible","setColumnPinned","setColumnsPinned","getAllColumns","getAllPrimaryColumns","getAllGridColumns","getDisplayedLeftColumns","getDisplayedCenterColumns","getDisplayedRightColumns","getAllDisplayedColumns","getAllDisplayedVirtualColumns","moveColumn","toIndex","moveColumnByIndex","fromIndex","moveColumns","columnsToMoveKeys","moveRowGroupColumn","setColumnAggFunc","setColumnWidth","newWidth","finished","setPivotMode","getSecondaryPivotColumn","pivotKeys","valueColKey","setValueColumns","colKeys","removeValueColumn","colKey","removeValueColumns","addValueColumn","addValueColumns","setRowGroupColumns","removeRowGroupColumn","removeRowGroupColumns","addRowGroupColumn","addRowGroupColumns","getRowGroupColumns","setPivotColumns","removePivotColumn","removePivotColumns","addPivotColumn","addPivotColumns","getPivotColumns","getLeftDisplayedColumnGroups","getCenterDisplayedColumnGroups","getRightDisplayedColumnGroups","getAllDisplayedColumnGroups","autoSizeColumn","autoSizeColumns","autoSizeAllColumns","setSecondaryColumns","colDefs","getSecondaryColumns","getPrimaryColumns","columnGroupOpened","hideColumns","colIds","hideColumn","setState","getState","resetState","getAggregationColumns","removeAggregationColumn","removeAggregationColumns","addAggregationColumn","addAggregationColumns","setColumnAggFunction","getDisplayNameForCol","gridSerializer_1","downloader_1","CsvSerializingSession","config","valueService","processCellCallback","processHeaderCallback","lineOpened","suppressQuotes","columnSeparator","prepare","columnsToExport","addCustomHeader","customHeader","addCustomFooter","customFooter","onNewHeaderGroupingRow","onColumn","onNewHeaderGroupingRowColumn","header","span","putInQuotes","onNewHeaderRow","onNewHeaderRowColumn","extractHeaderValue","onNewBodyRow","onNewBodyRowColumn","extractRowCellValue","EXPORT_TYPE_CSV","stringValue","valueEscaped","BaseGridSerializingSession","BaseCreator","setBeans","export","userParams","isExportSuppressed","getMergedParamsAndData","mergedParams","fileNamePresent","fileName","getDefaultFileName","getDefaultFileExtension","downloader","download","packageFile","getData","mergeDefaultParams","gridSerializer","serialize","createSerializingSession","baseParams","Blob","navigator","msSaveOrOpenBlob","getMimeType","CsvCreator","exportDataAsCsv","getDataAsCsv","_b","Downloader","GridSerializer","ColumnKeyCreator","existingKeys","addExistingKeys","getUniqueKey","colField","toStringOrNull","count","idToTry","EVENT_COLUMN_EVERYTHING_CHANGED","EVENT_NEW_COLUMNS_LOADED","EVENT_COLUMN_PIVOT_MODE_CHANGED","EVENT_EXPAND_COLLAPSE_ALL","EVENT_COLUMN_PIVOT_CHANGED","EVENT_COLUMN_MOVED","EVENT_COLUMN_VISIBLE","EVENT_COLUMN_PINNED","EVENT_COLUMN_GROUP_OPENED","EVENT_VIRTUAL_COLUMNS_CHANGED","EVENT_ROW_GROUP_OPENED","EVENT_ROW_DATA_CHANGED","EVENT_ROW_DATA_UPDATED","EVENT_PINNED_ROW_DATA_CHANGED","EVENT_RANGE_SELECTION_CHANGED","EVENT_TOOL_PANEL_VISIBLE_CHANGED","EVENT_MODEL_UPDATED","EVENT_PASTE_START","EVENT_PASTE_END","EVENT_CELL_CLICKED","EVENT_CELL_DOUBLE_CLICKED","EVENT_CELL_MOUSE_DOWN","EVENT_CELL_CONTEXT_MENU","EVENT_CELL_VALUE_CHANGED","EVENT_ROW_VALUE_CHANGED","EVENT_CELL_FOCUSED","EVENT_SELECTION_CHANGED","EVENT_CELL_KEY_DOWN","EVENT_CELL_KEY_PRESS","EVENT_CELL_MOUSE_OVER","EVENT_CELL_MOUSE_OUT","EVENT_FILTER_MODIFIED","EVENT_FILTER_OPENED","EVENT_VIRTUAL_ROW_REMOVED","EVENT_ROW_CLICKED","EVENT_ROW_DOUBLE_CLICKED","EVENT_GRID_READY","EVENT_GRID_SIZE_CHANGED","EVENT_VIEWPORT_CHANGED","EVENT_FIRST_DATA_RENDERED","EVENT_DRAG_STARTED","EVENT_DRAG_STOPPED","EVENT_ROW_EDITING_STARTED","EVENT_ROW_EDITING_STOPPED","EVENT_CELL_EDITING_STARTED","EVENT_CELL_EDITING_STOPPED","EVENT_BODY_SCROLL","EVENT_ANIMATION_QUEUE_EMPTY","EVENT_HEIGHT_SCALE_CHANGED","EVENT_PAGINATION_CHANGED","EVENT_COMPONENT_STATE_CHANGED","EVENT_BODY_HEIGHT_CHANGED","EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED","EVENT_FLASH_CELLS","EVENT_ROW_DRAG_ENTER","EVENT_ROW_DRAG_MOVE","EVENT_ROW_DRAG_LEAVE","EVENT_ROW_DRAG_END","EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST","EVENT_COLUMN_PIVOT_CHANGE_REQUEST","EVENT_COLUMN_VALUE_CHANGE_REQUEST","EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST","allFilters","quickFilter","quickFilterParts","FilterManager_1","registerGridCore","gridCore","onNewRowsLoaded","onNewColumnsLoaded","parseQuickFilter","setQuickFilterParts","checkExternalFilter","split","setFilterModel","allPromises","modelKeys_1","filterWrapper","removeFromArray","newModel","setModelOnFilterWrapper","filterPromise","iterateArray","getOrCreateFilterWrapper","all","whatever","onFilterChanged","setModel","getFilterModel","resolveNow","getModel","isAdvancedFilterPresent","advancedFilterPresent","setAdvancedFilterPresent","atLeastOneActive","updateFilterFlagInColumns","isAnyFilterPresent","isQuickFilterPresent","externalFilterPresent","doesFilterPass","filterToSkip","l","newFilter","setQuickFilter","parsedFilter","onAnyFilterChanged","doesRowPassOtherFilters","doesRowPassFilter","doesRowPassQuickFilterNoCache","filterPart","getAllColumnsForQuickFilter","filterPasses","part","getQuickFilterTextForColumn","doesRowPassQuickFilterCache","quickFilterAggregateText","aggregateRowForQuickFilter","doesRowPassQuickFilter","usingCache","partPasses","valueAfterCallback","stringParts","QUICK_FILTER_SEPARATOR","createValueGetter","getFilterComponent","cachedFilter","putIntoGui","createFilterWrapper","createFilterInstance","$scope","defaultFilter","sanitisedColDef","cloneObject","filterChangedCallback","filterModifiedCallback","rowModel","valueGetter","doesRowPassOtherFilter","modifyParamsCallback","newFilterComponent","scope","compiledElement","guiPromise","external","$new","eFilterGui","className","guiFromFilter","loadTemplate","$compile","$apply","eGui","atLeastOneFilterGone","oldColumn","disposeFilterWrapper","destroyFilter","csvCreator_1","selectionController_1","gridCell_1","immutableService_1","valueCache_1","alignedGridsService_1","pinnedRowModel_1","detailGridInfoMap","registerHeaderRootComp","headerRootComp","getType","clientSideRowModel","infinitePageRowModel","serverSideRowModel","__getAlignedGridService","alignedGridsService","addDetailGridInfo","gridInfo","removeDetailGridInfo","getDetailGridInfo","forEachDetailGridInfo","csvCreator","getDataAsExcel","excelCreator","getDataAsExcelXml","exportDataAsExcel","setEnterpriseDatasource","setServerSideDatasource","setDatasource","setViewportDatasource","setRowData","immutableService","createTransactionForRowData","transaction","orderIdMap","updateRowData","rowRenderer","refreshFullWidthRows","selectionController","reset","setFloatingTopRowData","rows","setPinnedTopRowData","setFloatingBottomRowData","setPinnedBottomRowData","getFloatingTopRowCount","getPinnedTopRowCount","getFloatingBottomRowCount","getPinnedBottomRowCount","getFloatingTopRow","getPinnedTopRow","getFloatingBottomRow","getPinnedBottomRow","pinnedRowModel","setColumnDefs","expireValueCache","expire","getVerticalPixelRange","getVScrollPosition","getHorizontalPixelRange","getHScrollPosition","setAlwaysShowVerticalScroll","show","refreshToolPanel","refreshSideBar","refreshCells","flashCells","redrawRows","redrawAfterModelUpdate","timeFullRedraw","iterationCount","totalProcessing","totalReflow","doOneIteration","start","Date","getTime","endProcessing","endReflow","durationProcessing","durationReflow","finish","refreshView","refreshRows","rowDataChanged","softRefreshView","refreshGroupRows","setFunctionsReadOnly","readOnly","refreshHeader","setHeaderAndFloatingHeights","filterManager","isColumnFilterPresent","onGroupExpandedOrCollapsed","deprecated_refreshFromIndex","refreshModel","step","STEP_MAP","refreshInMemoryRowModel","refreshClientSideRowModel","paramsStep","STEP_EVERYTHING","stepsMapped","STEP_FILTER","aggregate","STEP_AGGREGATE","STEP_SORT","STEP_PIVOT","modelParams","keepRenderedRows","animate","keepEditingRows","isAnimationFrameQueueEmpty","animationFrameService","isQueueEmpty","getRowNode","expandAll","expandOrCollapseAll","collapseAll","addVirtualRowListener","rowIndex","addRenderedRowListener","selectIndex","tryMulti","suppressEvents","deselectIndex","selectNode","clearSelection","deselectNode","selectAll","selectAllRowNodes","deselectAll","deselectAllRowNodes","selectAllFiltered","deselectAllFiltered","recomputeAggregates","isNodeSelected","getSelectedNodesById","getSelectedNodes","getSelectedRows","getBestCostNodeSelection","getRenderedNodes","ensureColIndexVisible","ensureColumnVisible","ensureIndexVisible","position","ensureNodeVisible","comparator","forEachLeafNode","forEachNodeAfterFilter","forEachNodeAfterFilterAndSort","getFilterApiForColDef","getFilterInstance","filterComp","getFilterApi","getStatusPanel","statusBarService","getColumnDef","onSortChanged","setSortModel","sortModel","getSortModel","getFocusedCell","focusedCellController","clearFocusedCell","setFocusedCell","floating","setSuppressRowDrag","setHeaderHeight","doLayout","setGridAutoHeight","setDomLayout","setEnableCellTextSelection","setCellTextSelection","setGroupHeaderHeight","setFloatingFiltersHeight","setPivotGroupHeaderHeight","setPivotHeaderHeight","isSideBarVisible","setSideBarVisible","openToolPanel","closeToolPanel","getOpenedToolPanel","setSideBar","def","setSuppressClipboardPaste","isToolPanelShowing","checkViewportAndScrolls","resetRowHeights","setGroupRemoveSingleChildren","setGroupRemoveLowestSingleChildren","onRowHeightChanged","getGridColumn","removeGlobalListener","resetQuickFilter","getRangeSelections","rangeController","getCellRanges","camelCaseToHumanReadable","camelCase","camelCaseToHumanText","addRangeSelection","rangeSelection","addRange","clearRangeSelection","copySelectedRowsToClipboard","includeHeader","columnKeys","clipboardService","copySelectedRangeToClipboard","copySelectedRangeDown","copyRangeDown","showColumnMenuAfterButtonClick","buttonElement","menuFactory","showMenuAfterButtonClick","showColumnMenuAfterMouseClick","showMenuAfterMouseEvent","hidePopupMenu","contextMenuFactory","hideActiveMenu","setPopupParent","ePopupParent","tabToPreviousCell","getCellRendererInstances","getCellEditorInstances","getEditingCells","cancel","startEditingCell","gridCellDef","rowPinned","gridCell","GridCell","notPinned","keyPress","charPress","addAggFunc","aggFuncService","addAggFuncs","clearAggFuncs","clear","rowDataTransaction","batchUpdateRowData","insertItemsAtIndex","items","skipRefresh","addIndex","removeItems","dataToRemove","addItems","refreshVirtualPageCache","refreshInfiniteCache","refreshInfinitePageCache","refreshCache","purgeVirtualPageCache","purgeInfinitePageCache","purgeInfiniteCache","purgeCache","purgeEnterpriseCache","route","purgeServerSideCache","getVirtualRowCount","getInfiniteRowCount","isMaxRowFound","setVirtualRowCount","maxRowFound","setInfiniteRowCount","getVirtualPageState","getCacheBlockState","getInfinitePageState","getBlockState","checkGridSize","getFirstRenderedRow","getFirstDisplayedRow","getFirstVirtualRenderedRow","getLastRenderedRow","getLastDisplayedRow","getLastVirtualRenderedRow","getDisplayedRowAtIndex","getRow","getDisplayedRowCount","getRowCount","paginationIsLastPageFound","paginationProxy","isLastPageFound","paginationGetPageSize","getPageSize","paginationSetPageSize","size","paginationGetCurrentPage","getCurrentPage","paginationGetTotalPages","getTotalPages","paginationGetRowCount","getTotalRowCount","paginationGoToNextPage","goToNextPage","paginationGoToPreviousPage","goToPreviousPage","paginationGoToFirstPage","goToFirstPage","paginationGoToLastPage","goToLastPage","paginationGoToPage","page","goToPage","ImmutableService","SelectionController","AlignedGridsService","PinnedRowModel","ValueCache","columnGroup_1","columnFactory_1","displayedGroupCreator_1","autoWidthCalculator_1","logger_1","groupInstanceIdCreator_1","autoGroupColService_1","primaryHeaderRowCount","secondaryHeaderRowCount","secondaryColumnsPresent","gridHeaderRowCount","displayedLeftColumns","displayedRightColumns","displayedCenterColumns","allDisplayedColumns","allDisplayedVirtualColumns","allDisplayedCenterVirtualColumns","rowGroupColumns","pivotColumns","ready","autoGroupsNeedBuilding","bodyWidth","leftWidth","rightWidth","bodyWidthDirty","isPivotSettingAllowed","colsPreviouslyExisted","oldPrimaryColumns","primaryColumns","balancedTreeResult","columnFactory","createColumnTree","primaryColumnTree","columnTree","treeDept","getColumnsFromTree","extractRowGroupColumns","extractPivotColumns","createValueColumns","updateGridColumns","updateDisplayedColumns","checkDisplayedVirtualColumns","eventEverythingChanged","newColumnsLoadedEvent","autoRowHeightColumns","getAllAutoRowHeightCols","setVirtualViewportLeftAndRight","viewportLeft","scrollPosition","viewportRight","getDisplayedColumnsStartingAt","currentColumn","hashBefore","updateVirtualSets","hashAfter","setVirtualViewportPosition","valueColumnToFind","foundColumn","secondaryColumns","thisPivotKeys","pivotValueColumn","pivotKeyMatches","compareArrays","pivotValueMatches","loggerFactory","setFirstRightAndLastLeftPinned","lastLeft","firstRight","gridColumns","columnsAutosized","changesThisTimeAround","actionOnGridColumns","preferredWidth","autoWidthCalculator","getPreferredWidthForColumn","normaliseColumnWidth","event_2","rootColumns","recursiveFindColumns","childColumns","child","getChildren","displayedLeftColumnTree","displayedRightColumnTree","displayedCentreColumnTree","getPrimaryColumnTree","getDisplayedColumnGroups","isColumnDisplayed","getDisplayedLeftColumnsForRow","colSpanActive","getDisplayedColumnsForRow","getDisplayedRightColumnsForRow","displayedColumns","filterCallback","emptySpaceBeforeColumn","out_i_1","lastConsideredCol","_loop_1","maxAllowedColSpan","min","columnsToCheckFilter","colsToRemove","j","colForFilter","gapBeforeColumn","getAllDisplayedCenterVirtualColumnsForRow","isColumnInViewport","columnLeft","columnRight","leftBounds","rightBounds","columnToMuchLeft","columnToMuchRight","getPinnedLeftContainerWidth","getWidthOfColsInList","getPinnedRightContainerWidth","updatePrimaryColumnList","masterList","actionIsAdd","columnCallback","atLeastOne","columnToAdd","setPrimaryColumnList","added","defaultAggFunc","getDefaultAggFunc","getPrimaryOrGridColumn","sets","ratios","defaultIsShift","otherCol","widthDiff","otherColWidth","resizeColumnSets","checkMinAndMaxWidthsForSet","columnResizeSet","minWidthAccumulated","maxWidthAccumulated","maxWidthActive","minWidthPasses","maxWidthPasses","resizeSets","passMinMaxCheck","every","changedCols","allCols","newWidths","finishedCols","finishedColsGrew","loopCount","_loop_2","subsetCols","subsetRatios","subsetRatioTotal","pixelsToDistribute","thisColFinished","ratioThisCol","ratioScale","colNewWidth","lastCol","round","state_1","atLeastOneColChanged","setLeftValues","updateBodyWidths","event_4","event_3","event_5","splice","columnAnimationService","columnsToMove","getGridColumns","failedRules","doesMovePassRules","moveInArray","proposedColumnOrder","doesMovePassMarryChildren","doesMovePassLockedPositions","foundNonLocked","rulePassed","allColumnsCopy","depthFirstOriginalTreeSearch","gridBalancedTree","marryChildren","getColGroupDef","newIndexes","getLeafColumns","newColIndex","maxIndex","minIndex","spread","maxSpread","getBodyContainerWidth","getContainerWidth","newBodyWidth","newLeftWidth","newRightWidth","atLeastOneChanged","event_6","getDisplayedColumns","columnsForQuickFilter","isEmpty","isRowGroupEmpty","actualPinned","createEvent","updatedColumns","resultOfAction","event_7","oldIndex","getDisplayedGroupAfter","getDisplayedLeafColumns","requiredLevel","getLevel","groupPointer","getPrimaryAndSecondaryAndAutoColumns","groupAutoColumns","createStateItemFromColumn","rowGroupIndex","pivotIndex","primaryColumnState","groupAutoColumnState","columnStateList","orderColumnStateList","gridColumnIds","itemA","itemB","posA","posB","suppressEverythingEvent","columnStates","letRowGroupIndex","letPivotIndex","stateItem","columnStateBefore","columnsWithNoState","success","rowGroupIndexes","pivotIndexes","autoGroupColumnStates","getAutoColumn","syncColumnWithStateItem","syncColumnWithNoState","sortColumnListUsingIndexes","autoCol","orderOfColIds_1","colA","colB","indexA","indexB","event_8","raiseColumnEvents","columnStateAfter","raiseEventWithAllColumns","idMapper","unchanged","getChangedColumns","changedPredicate","changedColumns","columnStateBeforeMap","colStateBefore","valueColumnIdMapper","cs","pivotColumnIdMapper","rowGroupColumnIdMapper","pinnedChangePredicate","raiseColumnPinnedEvent","visibilityChangePredicate","cols","raiseColumnVisibleEvent","resizeChangePredicate","raiseColumnResizeEvent","raiseColumnMovedEvent","event_9","event_10","event_11","movedColumns","_loop_3","before","after","predicate","movedColumn","find","this_1","event_12","indexes","getColumns","columnLookupCallback","foundColumns","getColumnWithValidation","columnList","columnsMatch","groupCol","columnMatches","colDefMatches","idMatches","includeAggFunc","headerName","getHeaderName","wrapHeaderNameWithAggFunc","getDisplayNameForOriginalColumnGroup","colGroupDef","headerValueGetter","expressionService","evaluate","aggFuncFound","pivotActiveOnThisColumn","measureActive","aggregationPresent","aggFuncString","aggFuncStringTranslated","ColumnGroup","allColumnGroups","checkInstanceId","depthFirstAllColumnTreeSearch","matched","getGroupId","getInstanceId","isReady","extractColumns","flag","previousCols","setFlagFunc","getIndexFunc","getValueFunc","colPresentInPrimaryFunc","colMissingFromPrimaryFunc","colNewFunc","removedCols","existingCols","newPrimaryCols","newCols","booleanValue","groupState","groupId","openByDefault","columnGroupState","impactedGroups","groupKey","setExpanded","updateGroupsAndDisplayedColumns","keyAsString","calculateColumnsForDisplay","columnsForDisplay","isAutoGroupCol","isValueCol","checkColSpanActiveInCols","calculateColumnsForGroupDisplay","groupDisplayColumns","checkFunc","getGroupDisplayColumns","buildDisplayedTrees","isSecondaryColumnsPresent","newColsPresent","processSecondaryColumnDefinitions","secondaryBalancedTree","groupCallback","searchForColDefs","colDefs2","isGroup","gridColsArePrimary","lastPrimaryOrder","orderGridColsLikeLastPrimary","addAutoGroupToGridColumns","putFixedColumnsFirst","setupQuickFilterColumns","clearDisplayedColumns","noColsFound","oldColsOrdered","newColsOrdered","newGridColumns","newCol","siblings","leafCols","leafCol","presentInNewGriColumns","noYetInSiblings","lastIndex","insertIntoArray","isPrimaryColumnGroupsPresent","locked","unlocked","createGroupAutoColumnsIfNeeded","autoColBalancedTree","createForAutoGroups","displayedLeftHeaderRows","displayedRightHeaderRows","displayedCentreHeaderRows","updateOpenClosedVisibilityInColumnGroups","updateDisplayedColumnsFromTrees","addToDisplayedColumns","setupAllDisplayedColumns","setLeftValuesOfColumns","setLeftValuesOfGroups","allColumns","doingRtl","left_1","left_2","removeAllFromArray","checkLeft","displayedColumnTree","depthFirstDisplayedColumnTreeSearch","updateDisplayedCenterVirtualColumns","filterOutColumnsWithinViewport","getVirtualHeaderGroupRow","updateDisplayedVirtualGroups","virtualColIds","testGroup","returnValue","addThisItem","getDisplayedChildren","colsToNotSpread","suppressSizeToFit","colsToSpread","colsToFireEventFor","finishedResizing","availablePixels","scale","pixelsForLastCol","moveToNotSpread","onLastCol","visibleColumns","leftVisibleColumns","rightVisibleColumns","centerVisibleColumns","groupInstanceIdCreator","GroupInstanceIdCreator","displayedGroupCreator","createDisplayedGroups","calculateDisplayedColumns","getGroupAutoColumns","needAutoColumns","newAutoGroupCols","autoGroupColService","createAutoGroupColumns","autoColsDifferent","autoColsEqual","colsA","colsB","bothMissing","atLeastOneListMissing","getGridBalancedTree","ColumnFactory","DisplayedGroupCreator","AutoWidthCalculator","AutoGroupColService","LoggerFactory","PopupEditorWrapper","cellEditor","getGuiCalledOnChild","onKeyDown","isUserSuppressingKeyboardEvent","DOM_KEY_POPUP_EDITOR_WRAPPER","isCancelBeforeStart","isCancelAfterEnd","focusOut","context_2","sortedVisibleColumns","balancedColumnTree","oldDisplayedGroups","previousRealPath","previousOriginalPath","oldColumnsMapped","mapOldGroupsById","currentOriginalPath","getOriginalPathForColumn","currentRealPath","firstColumn","newGroup","createColumnGroup","addChild","noColumnGroups","leafGroup","setupParentsIntoColumns","originalGroup","getInstanceIdForKey","uniqueId","createUniqueId","displayedGroups","recursive","columnsOrGroups","columnOrGroup","columnsOrGroup","found","recursePath","nextNode","defaultGroupComparator","valueA","valueB","nodeA","nodeB","accentedCompare","nodeAIsGroup","nodeBIsGroup","bothAreGroups","bothAreNormal","defaultComparator","headerWrapperComp_1","headerGroupWrapperComp_1","floatingFilterWrapper_1","headerComps","idsOfAllChildren","removeAndDestroyChildComponents","idsToDestroy","childHeaderComp","removeChild","groupHeight","headerRowCount","sizes","numberOfFloating","numberOfNonGroups","numberOfGroups","top","onVirtualColumnsChanged","setWidth","getWidthForRow","printLayout","centerRow","removeAndDestroyAllChildComponents","getItemsAtDept","centerContainer","result_1","eBefore","currentChildIds","itemsAtDepth","headerComp","eHeaderCompGui","idOfChild","eParentContainer","colAlreadyInDom","createHeaderComp","insertWithDomOrder","columnGroupChild","HeaderWrapperComp","HeaderGroupWrapperComp","FloatingFilterWrapper","RowNodeBlock","blockNumber","rowNodeCacheParams","STATE_DIRTY","startRow","blockSize","endRow","isAnyNodeOpen","forEachNodeCallback","getRowUsingLocalIndex","sequence","deep","next","childrenCache","forEachNodeDeep","forEachNodeShallow","getVersion","getLastAccessed","lastAccessed","dontTouchLastAccessed","lastAccessedSequence","localIndex","createRowNodes","getStartRow","getEndRow","getBlockNumber","setDirty","setDirtyAndPurge","setData","setRowNode","setBlankRowNode","newRowNode","createBlankRowNode","setNewData","dataItem","setDataAndId","setRowHeight","load","STATE_LOADING","loadFromDatasource","pageLoadFailed","STATE_FAILED","EVENT_LOAD_COMPLETE","lastRow","populateWithRowData","rowNodesToRefresh","stub","clearRowTop","pageLoaded","STATE_LOADED","cleanNumber","filterService_1","selectableService_1","FilterStage","filterService","selectableService","updateSelectableAfterFiltering","SelectableService","FilterService","DropType","moveColumnController_1","bodyDropPivotTarget_1","dropListeners","moveColumnController","eSecondaryContainers","getDropTargetLeftContainers","getDropTargetRightContainers","getDropTargetBodyContainers","isInterestedIn","DragSourceType","HeaderCell","ToolPanel","getSecondaryContainers","getContainer","MoveColumnController","bodyDropPivotTarget","BodyDropPivotTarget","ColumnMove","Pivot","dragAndDropService","addDropTarget","getIconName","currentDropListener","getDropType","draggingEvent","onDragEnter","dropType","onDragLeave","horizontalResizeService_1","cssClassApplier_1","setLeftFeature_1","beans_1","hoverFeature_1","dragSourceDropTarget","childColumnsDestroyFuncs","getComponentHolder","appendHeaderGroupComp","setupResize","addClasses","setupWidth","addAttributes","setupMovingCss","setupTooltip","addFeature","HoverFeature","setLeftFeature","SetLeftFeature","leafColumns","onColumnMovingChanged","getTooltipText","headerTooltip","tooltipText","setAttribute","tooltipManager","registerTooltip","afterHeaderCompCreated","newHeaderGroupComponent","headerGroupComp","setupMove","isPadding","eHeaderGroup","isSuppressMoving","allLeafColumns","dragSource_1","dragItemName","dragItemCallback","getDragItemForGroup","dragStarted","dragStopped","allColumnsOriginalOrder","visibleState","allColumnsCurrentOrder","childSuppressesMoving","suppressMovable","addListenersToChildrenColumns","EVENT_DISPLAYED_CHILDREN_CHANGED","onDisplayedChildrenChanged","onWidthChanged","destroyListenersOnChildrenColumns","widthChangedListener","eHeaderCellResize","horizontalResizeService","removeFromParent","resizeCols","resizeStartWidth","resizeRatios","takeFromGroup","takeFromLeafCols","resizeTakeFromCols","resizeTakeFromStartWidth","resizeTakeFromRatios","resizeAmountNormalised","normaliseDragChange","removeCssClass","dragChange","StandardMenuFactory","hidePopup","showPopup","eMenu","popupService","positionPopupUnderMouseEvent","ePopup","eventSource","positionPopupUnderComponent","keepWithinBounds","positionCallback","promise","gui","bodyScrollListener","direction","closedCallback","addAsModalPopup","isMenuEnabled","RegisteredComponentSource","textCellEditor_1","dateFilter_1","headerComp_1","headerGroupComp_1","floatingFilter_1","groupCellRenderer_1","animateShowChangeCellRenderer_1","animateSlideCellRenderer_1","loadingCellRenderer_1","selectCellEditor_1","popupTextCellEditor_1","popupSelectCellEditor_1","largeTextCellEditor_1","textFilter_1","numberFilter_1","loadingOverlayComponent_1","noRowsOverlayComponent_1","tooltipComponent_1","UserComponentRegistry","agGridDefaults","agDateInput","DefaultDateComponent","agColumnHeader","HeaderComp","agColumnGroupHeader","agSetColumnFloatingFilter","SetFloatingFilterComp","agTextColumnFloatingFilter","TextFloatingFilterComp","agNumberColumnFloatingFilter","NumberFloatingFilterComp","agDateColumnFloatingFilter","DateFloatingFilterComp","agAnimateShowChangeCellRenderer","AnimateShowChangeCellRenderer","agAnimateSlideCellRenderer","AnimateSlideCellRenderer","agGroupCellRenderer","GroupCellRenderer","agGroupRowRenderer","agLoadingCellRenderer","LoadingCellRenderer","agCellEditor","TextCellEditor","agTextCellEditor","agSelectCellEditor","agPopupTextCellEditor","PopupTextCellEditor","agPopupSelectCellEditor","PopupSelectCellEditor","agLargeTextCellEditor","LargeTextCellEditor","agTextColumnFilter","TextFilter","agNumberColumnFilter","NumberFilter","agDateColumnFilter","DateFilter","agLoadingOverlay","LoadingOverlayComponent","agNoRowsOverlay","NoRowsOverlayComponent","agTooltipComponent","TooltipComponent","agDeprecatedNames","newComponentName","propertyHolder","number","date","animateShowChange","animateSlide","select","largeText","popupSelect","popupText","richSelect","headerComponent","jsComponents","frameworkComponents","registerDefaultComponent","registerComponent","registerFwComponent","rawName","translateIfDeprecated","retrieve","componentFromFramework","REGISTERED","DEFAULT","raw","deprecatedInfo","agCheckbox_1","selectAllFeature_1","enableMenu","suppressMenu","appendHeaderComp","setupMenuClass","setupSortableClass","addColumnHoverListener","SelectAllFeature","cbSelectAll","onColumnHover","columnHoverService","filterPresent","showColumnMenu","progressSort","multiSort","setSortForColumn","newHeaderComponent","eHeaderCellLabel","suppressMove","createDragItem","eResize","weWantAutoSize","EVENT_DOUBLE_TAP","normaliseResizeAmount","resizeWithShiftKey","onColumnWidthChanged","onMenuVisible","AgCheckbox","setupFloatingFilter","setupLeftPositioning","setupColumnHover","eButtonShowMainFilter","showParentFilter","floatingFilterCompPromise","getFloatingFilterInstance","compInstance","setupWithFloatingFilter","setupEmpty","setupSyncWithFilter","syncWithFilter","filterComponentPromise","onParentModelChanged","floatingFilterComp","disposeFunc","isAlive","floatingFilterCompUi","eFloatingFilterBody","suppressFilterButton","eButtonWrapper","wireQuerySelectors","defaultFloatingFilterType","filterToFloatingFilterNames","currentParentModel","onFloatingFilterChanged","floatingFilterComponentParams","newFloatingFilterComponent","filterComponent","getFilterComponentPrototype","getModelAsStringExists","getModelAsString","rawModelFn_1","parentPromise","createUserComponentFromConcreteClass","ReadModelAsStringFloatingFilterComp","createDynamicParams","resolvedComponent","lookupComponentClassDef","wholeParentFilter","getNullableModel","operator","condition1","change","captureModelChangedResolveFunc","modelChanged","changed","parentModel","combinedFilter","mainModel","agSetColumnFilter","componentMetadataProvider_1","AgComponentUtils","adaptFunction","hardcodedJsFunction","paramsFromSelector","componentMetadataProvider","functionAdapter","adaptCellRendererFunction","Adapter","callbackResult","doesImplementIComponent","candidate","ComponentMetadataProvider","__export","m","mouseEventService_1","NavigationService","timeLastPageEventProcessed","handlePageScrollingKey","which","alt","altKey","ctrl","ctrlKey","currentCell","mouseEventService","getGridCellForEvent","getGridCellDef","processed","KEY_PAGE_HOME","KEY_PAGE_END","onHomeOrEndKey","KEY_LEFT","KEY_RIGHT","onCtrlLeftOrRight","onCtrlUpOrDown","KEY_PAGE_DOWN","onPageDown","KEY_PAGE_UP","onPageUp","preventDefault","isTimeSinceLastPageEventToRecent","now","diff","setTimeLastPageEventProcessed","pixelsInOnePage","bottom","isHorizontalScrollShowing","pagingPixelOffset","getPixelOffset","currentPageBottomPixel","currentPageBottomRow","getRowIndexAtPixel","scrollIndex","currentCellPixel","rowTop","nextCellPixel","focusIndex","pageLastRow","getPageLastRow","navigateTo","currentPageTopPixel","currentPageTopRow","currentRowNode","firstRow","getPageFirstRow","scrollType","scrollColumn","focusColumn","flushAllFrames","setRangeToCell","upKey","rowIndexToScrollTo","leftKey","columnToSelect","homeKey","MouseEventService","ResizeObserverService","observeResize","frameworkFactory","useBrowserResizeObserver","resizeObserver","ResizeObserver","observe","disconnect","usePolyfill","widthLastTime","offsetWidth","heightLastTime","offsetHeight","running","periodicallyCheckWidthAndHeight","newHeight","resizeObserverExists","infiniteCache_1","rowNodeCache_1","rowNodeBlockLoader_1","InfiniteRowModel","getRowBounds","ensureRowHeightsValid","startPixel","endPixel","startLimitIndex","endLimitIndex","addEventListeners","destroyCache","destroyDatasource","datasourceChanged","isLastRowFound","infiniteCache","onColumnEverything","resetRequired","cacheParams","isSortModelDifferent","jsonEquals","ds","maxConcurrentRequests","overflowSize","isRowsToRender","getNodesInRangeForSelection","firstInRange","lastInRange","getRowNodesInRange","userGeneratingIds","resetCache","createModelUpdatedEvent","newPage","newData","rowNodeBlockLoader","RowNodeBlockLoader","filterModel","initialRowCount","NumberSequence","InfiniteCache","RowNodeCache","EVENT_CACHE_UPDATED","onCacheUpdated","getCurrentPageHeight","pixel","rowIndexForPixel","floor","isRowPresent","AutoGroupColService_1","doingTreeData","doingMultiAutoColumn","rowGroupCol","createOneAutoGroupColumn","defaultAutoColDef","generateDefaultColDef","GROUP_AUTO_COLUMN_ID","GROUP_AUTO_COLUMN_BUNDLE_ID","userAutoColDef","mergeColDefs","noFieldOrValueGetter","filterValueGetter","headerCheckboxSelection","userHasProvidedGroupCellRenderer","cellRenderer","cellRendererFramework","rowGroupColDef","cellRendererParams","innerRenderer","innerRendererParams","preventMouseClick","destroyFuncs","touching","startListener","onTouchStart","moveListener","onTouchMove","endListener","onTouchEnd","passive","getActiveTouch","touchList","matches","identifier","touchStart","touchEvent","touches","moved","touchStartCopy","touchesMatch","EVENT_LONG_TAP","touch","eventIsFarAway","areEventsNear","checkForDoubleTap","lastTapTime","interval","DOUBLE_TAP_MILLIS","createRowTasks","destroyRowTasks","ticking","scrollGoingDown","lastScrollTop","setScrollTop","scrollTop","useAnimationFrame","verifyAnimationFrameOn","addP1Task","task","taskItem","schedule","addP2Task","executeFrame","millis","a","frameStart","duration","noMaxMillis","pop","requestFrame","stopTicking","requestAnimationFrame","webkitRequestAnimationFrame","updateSelectableAfterGrouping","nextChildrenFunc","recurseDown","childrenAfterFilter","rowSelectable","hasChildren","firstSelectable","setRowSelectable","GridRow","makeNull","isFloatingTop","PINNED_TOP","isFloatingBottom","PINNED_BOTTOM","isNotFloating","equals","otherSelection","getGridCell","otherFloating","content","URL","createObjectURL","display","body","click","revokeObjectURL","baseFilter_1","modelFromFloatingFilter","dateFrom","dateTo","getDateTo","selectedFilter","filterType","getApplicableFilterTypes","BaseFilter","EQUALS","GREATER_THAN","LESS_THAN","NOT_EQUAL","IN_RANGE","bodyTemplate","fromPanelId","FilterConditionType","MAIN","toPanelId","initialiseFilterBodyUi","createComponents","setDateFrom_date","setDateTo_date","setFilterType","dateFromCondition","CONDITION","dateToCondition","selectedFilterCondition","dateComponentParams","onDateChanged","filterParams","newDateComponent","dateToComponent","dateToConditionComponent","dateToElement","eDateToPanel","eDateToConditionPanel","dateComponent","dateFromComponent","dateFromConditionComponent","dateFromElement","eDateFromPanel","eDateFromConditionPanel","removeTimezone","getDate","refreshFilterBodyUi","panel","filterInput","showFilterInput","doesFilterHaveHiddenInput","EMPTY","filterDate","cellValue","cellAsDate","serializeDateToYyyyMmDd","filterValues","getDateFrom","getFilterType","setDateFrom","parsedDate","parseYyyyMmDdToDate","setDate","setDateTo","resetConditionFilterOnly","setType","getFullYear","getMonth","QuerySelector","ScalarBaseFilter","eDateInput","isBrowserChrome","browserDatePicker","isBrowserIE","gridRow_1","CellNavigationService","getNextCellToFocus","lastCellToFocus","getCellAbove","getCellBelow","getCellToLeft","getCellToRight","isCellGoodToFocusOn","lastCell","colToLeft","colToRight","getRowBelow","isLastRowInContainer","rowBelow","getGridRow","gridRow","lastTopIndex","lastBottomIndex","lastBodyIndex","getRowAbove","getLastFloatingTopRow","getLastBodyCell","rowAbove","lastBodyRow","lastFloatingRow","getNextTabbedCell","backwards","getNextTabbedCellBackwards","getNextTabbedCellForwards","newRowIndex","newFloating","newColumn","displayedChildren","localEventService","allMoving","lastChild","lastChildLeft","firstChildLeft","createAgEvent","isChildInThisGroupDeepSearch","wantedChild","foundChild","groupActualWidth","groupChild","addLeafColumns","addDisplayedLeafColumns","topLevelGroup","abstractColumn","headerGroupShow","HEADER_GROUP_SHOW_OPEN","HEADER_GROUP_SHOW_CLOSED","selector","querySelectorFunc","ref","addToObjectProps","Listener","listenerFunc","Method","methodFunc","alias","instanceName","__agComponentMetaData","agComponentUtils_1","componentMetaData","mandatoryMethodList","optionalMethodList","detailCellRenderer","headerGroupComponent","loadingCellRenderer","loadingOverlayComponent","noRowsOverlayComponent","floatingFilterComponent","floatingFilterWrapperComponent","agComponentUtils","fullWidthCellRenderer","groupRowInnerRenderer","groupRowRenderer","statusPanel","toolPanel","tooltipComponent","grid_1","initialiseAgGridWithAngular1","angular","angularModule","module","directive","restrict","AngularDirectiveController","$element","$attrs","quickFilterOnScope","keyOfGridInScope","agGrid","$eval","grid","Grid","$on","activePopupElements","getRootGui","positionPopupForMenu","parentRect","sourceRect","getBoundingClientRect","eDocument","documentElement","y","keepYWithinBounds","clientWidth","x","widthOfParent","right","maxX","xRightPosition","xLeftPosition","calculatePointerAlign","nudgeX","nudgeY","positionPopup","callPostProcessPopup","documentRect","clientY","minHeight","positionPopupOverComponent","keepXWithinBounds","docElement","isBody","defaultPadding","clientHeight","getAbsoluteHeight","heightOfParent","abs","maxY","getAbsoluteWidth","scrollLeft","eChild","closeOnEsc","addPopup","modal","popupAlreadyShown","contains","eWrapper","popupHidden","hidePopupOnKeyboardEvent","KEY_ESCAPE","hidePopupOnMouseEvent","hidePopupOnTouchEvent","isEventFromCurrentPopup","isEventSameChainAsOriginalEvent","indexOfThisChild","isElementInEventPath","el","classList","parentElement","originalClick","mouseEventOrTouch","screenX_1","screenX","screenY_1","screenY","xMatch","yMatch","DEFAULT_TRANSLATIONS","loadingOoo","empty","notEqual","lessThan","greaterThan","inRange","lessThanOrEqual","greaterThanOrEqual","filterOoo","notContains","startsWith","endsWith","searchOoo","applyFilter","clearFilter","andCondition","orCondition","customFilterOptions","defaultOption","filterOptions","filterOption","displayKey","test","firstFilterOption","customInit","clearActive","clearButton","applyActive","applyButton","newRowsActionKeep","newRowsAction","setTemplate","generateTemplate","eApplyButton","eClearButton","onClearButton","anyButtonVisible","eButtonsPanel","isFilterConditionActive","condition2","conditionValue","asCombinedFilter","redrawCondition","doOnFilterChanged","applyNow","requiresApplyAndIsApplying","notRequiresApply","shouldFilter","filterCondition","eFilterBodyWrapper","acceptsBooleanLogic","eConditionWrapper","createConditionTemplate","refreshOperatorUi","andButton","orButton","checked","casted","generateFilterHeader","translate","mainConditionBody","createConditionBody","bodyWithBooleanLogic","wrapCondition","mainCondition","toTranslate","defaultTranslation","getDebounceMs","debounceMs","customFilterOption","hideFilterInput","LESS_THAN_OR_EQUAL","GREATER_THAN_OR_EQUAL","CONTAINS","NOT_CONTAINS","STARTS_WITH","ENDS_WITH","ComparableBaseFilter","mainFilterResult","individualFilterPasses","eTypeConditionSelector","auxFilterResult","suppressAndOrCondition","getDefaultType","defaultFilterTypes","restrictedFilterTypes","actualFilterTypes","optionsHtml","filterName","localeFilterName","eTypeSelector","onFilterTypeChanged","prevSelectedFilter","prevSelectedFilterHadNoInput","rawFilterValues","filterValueArray","HTMLSelectElement","nullComparator","filterValue","gridValue","nullValue","translateNull","actualComparator","reducedType","DEFAULT_NULL_COMPARATOR","doIndividualFilterPasses","compareResult","compareToResult","inRangeInclusive","RowContainerComponent","childCount","rowTemplatesToAdd","afterGuiAttachedCallbacks","lastMadeVisibleTime","hideWhenNoChildren","setVerticalScrollPosition","verticalScrollPosition","checkDomOrder","checkVisibility","domOrder","getRowElement","compId","setHeight","flushRowTemplates","htmlToAdd","appendHtml","lastPlacedElement","appendRowTemplate","rowTemplate","insertTemplateWithDomOrder","eRow","removeRowElement","isMadeVisibleRecently","millisSinceVisible","rowNodeBlock_1","activeBlockLoadsCount","blocks","checkBlockToLoadDebounce","performCheckBlocksToLoad","addBlock","block","removeBlock","loadComplete","checkBlockToLoad","printCacheStatus","blockToLoad","nodeIdPrefix","getNodeIdPrefix","pageStatus","isLogging","stringify","PaginationComp","getTemplate","isPaging","paginationPanelEnabled","onPaginationChanged","btFirst","onBtFirst","btLast","onBtLast","btNext","onBtNext","btPrevious","onBtPrevious","enableOrDisableButtons","updateRowLabels","setCurrentPageLabel","setTotalLabels","pagesExist","currentPage","toDisplay","lbCurrent","formatNumber","formatNumberCommas","strPage","strTo","strOf","strFirst","strPrevious","strNext","strLast","totalPages","disablePreviousAndFirst","disabled","zeroPagesToDisplay","isZeroPagesToDisplay","onLastPage","disableNext","disableLast","pageSize","lbFirstRowOnPage","lbLastRowOnPage","lastPageFound","lbTotal","lbRecordCount","moreText","HTMLButtonElement","DEFAULT_HIDE_TOOLTIP_TIMEOUT","MOUSEOUT_HIDE_TOOLTIP_TIMEOUT","MOUSEOVER_SHOW_TOOLTIP_TIMEOUT","HIDE_SHOW_ONLY","showTimeoutId","hideTimeoutId","registeredComponents","targetCmp","getCompId","processMouseOver","processMouseMove","hideTooltip","processMouseOut","tooltipComp","destroyFunc","unregisterTooltip","activeComponent","lastHoveredComponent","clearTimers","lastMouseEvent","showTooltip","relatedTarget","registeredComponent","containsElement","cell","createTooltipComponent","cmp","newTooltipComponent","closeFnc","clearRegisteredComponent","showOnly","logging","Logger","isLoggingFunc","message","formatter","refData","RowDragComp","visibleMode","checkCompatibility","ManagedVisibilityStrategy","NonManagedVisibilityStrategy","managed","dragItem","RowDrag","getVisibleMode","setVisibleMode","onSuppressRowDrag","workOutVisibility","EVENT_CELL_CHANGED","isRowDragFunc","isFunction","onRowGroupChanged","updateSortActive","updateFilterActive","updateRowGroupActive","rowGroups","sortOrFilterOrGroupActive","alwaysHide","initialised","cellExpressions","forFilter","ignoreAggData","groupDataExists","groupData","aggDataExists","aggData","executeFilterValueGetter","executeValueGetter","getValueUsingField","cellValueGetter","setValue","newValueHandler","valueSetter","valueWasDifferent","oldValue","setValueUsingField","resetQuickFilterAggregateText","onCellValueChanged","valuesAreSame","fieldPieces","currentObject","fieldPiece","shift","getValueCallback","valueFromCache","otherColumn","getKeyForNode","keyCreator","String","cellAndHeaderEscaper","nameForCol","valueForCell","isRowGrouping","createValueForGroupNode","processCell","reverse","gridSerializingSession","dontSkipRows","skipGroups","skipHeader","columnGroups","skipFooters","skipPinnedTop","skipPinnedBottom","includeCustomHeader","includeCustomFooter","onlySelected","onlySelectedAllPages","rowSkipper","shouldRowBeSkipped","skipSingleChildrenGroup","skipLowestSingleChildrenGroup","rowModelNormal","onlySelectedNonStandardModel","existsAndNotEmpty","recursivelyAddHeaderGroups","gridRowIterator_1","forEachPinnedTopRow","processRow","forEachPivotNode","selectedNodes","shouldSkipLowestGroup","shouldSkipCurrentGroup","allChildrenCount","footer","nodeIsRootNode","level","rowAccumulator","forEachPinnedBottomRow","directChildrenHeaderGroups","doAddHeaderHeader","gridRowIterator","columnIndex","columnName","RowType","destroyFunctions","EVENT_DESTROYED","dispatchEventAsync","addSafePassiveEventListener","Window","InputTextFloatingFilterComp","lastKnownModel","toDebounce","syncUpWithParentFilter","eColumnFloatingFilter","columnDef","parseAsText","title","equalModels","incomingTextValue","asFloatingFilterText","asParentModel","modelUpdated","isKeyPressed","KEY_ENTER","referenceCompare","filterTo","HTMLInputElement","dateComponentPromise","isInRange","setTemplateFromElement","filterValueDate","filterValueText","enrichDateInput","toParse","asNumber","numberTo","filterValueNumber","modelFilterValue","invalidNumber","arrayToDisplay","InfiniteBlock","pageNumber","uiLevel","setIndexAndTopOnRowNode","displayIndex","setRowIndex","successCallback","failCallback","getRows","getRowsParams","getFunctionParameters","crcTable","ZipContainer","folders","files","addFolder","path","created","addFolders","paths","addFile","clearStream","getContent","mimeType","textOutput","buildFileStream","uInt8Output","buildUint8Array","fData","totalFiles","len","foData","lL","cL","_i","totalFiles_1","currentFile","getHeader","fileHeader","folderHeader","foEnd","buildFolderEnd","offset","utf8_encode","decToHex","utfPath","isUTF8","time","convertTime","dt","convertDate","extraFields","uExtraFieldPath","getFromCrc32Table","tLen","cLen","lLen","uint8","Uint8Array","charCodeAt","crc","getHours","getMinutes","getSeconds","PaginationAutoPageSizeService","onBodyHeightChanged","checkPageSize","notActive","bodyHeight","getBodyHeight","newPageSize","topRowIndex","bottomRowIndex","pixelOffset","onModelUpdated","setIndexesAndBounds","modelUpdatedEvent","paginationChangedEvent","topRowBounds","bottomRowBounds","nodeIsInPage","totalLastRow","goToPageWithIndex","lastPage","setPageSize","totalRowCount","maxRowAllowed","getEventCallbacks","EVENT_CALLBACKS","EVENT_CALLBACKS_NO_PREFIX","EVENTS","skipEventDeprecationCheck","pGridOptions","toBoolean","toNumber","funcName","onMethodName","substr","rowComp_1","cellComp_1","cellNavigationService_1","rowCompsByIndex","floatingTopRowComps","floatingBottomRowComps","refreshInProgress","rowContainers","getRowContainers","onPageLoaded","onPinnedRowDataChanged","redrawAfterScroll","onDomLayoutChanged","destroyRows","firstRenderedRow","lastRenderedRow","rowIndexesToRemove","removeRowComps","refreshEvent","getAllCellsForColumn","eCells","rowComp","eCell","getCellForCol","refreshFloatingRowComps","refreshFloatingRows","floatingTopPinnedLeft","floatingTopPinnedRight","floatingTop","floatingTopFullWidth","floatingBottomPinnedLeft","floatingBottomPinnedRight","floatingBottom","floatingBottomFullWith","rowComps","pinnedLeftContainerComp","pinnedRightContainerComp","bodyContainerComp","fullWidthContainerComp","row","RowComp","flushContainers","recycleRows","onlyBody","getRenderedIndexesForRowNodes","renderedRow","indexesToRemove","getCellToRestoreFocusToAfterRefresh","focusedCell","suppressKeepFocus","getFocusCellToUseAfterRefresh","activeElement","CellComp","DOM_DATA_KEY_CELL_COMP","elementIsNotACellDev","getLockOnRefresh","sizeContainerToPageHeight","scrollToTopIfNewData","rowsToRecycle","binRowComps","redraw","restoreFocusedCell","releaseLockOnRefresh","scrollToTop","suppressScrollToTop","containers","fullWidth","pinnedLeft","pinnedRight","container","containerHeight","maxDivHeightScaler","setModelHeight","realHeight","getUiContainerHeight","forEachRowComp","forEachCellComp","forEachCellCompFiltered","cellComp","flashCell","refreshCellParams","forceRefresh","force","refreshCell","getCellRenderer","getCellEditor","isEditing","rowIdsMap","colIdsMap","normal","excludeColFromRefresh","rowsToRemove","indexToRemove","removeRowCompsNotToDraw","indexesToDraw","indexesToDrawMap","existingIndexes","indexesNotToDraw","calculateIndexesToDraw","createArrayOfNumbers","indexStr","keepRowBecauseEditingOrFocused","afterScroll","updateOffset","workOutFirstAndLastRowsToRender","nextVmTurnFunctions","createOrUpdateRowComp","pushAll","getAndClearNextVMTurnFunctions","executeNextVMTurn","taskQueue","destroyRowComps","checkAngularCompile","rowContainerComp","afterFlush","redrawFullWidthEmbeddedRows","isFullWidth","alreadyRendered","creatingNewRowComp","createRowComp","rowCompsMap","delayedFuncs","nodeId","getAndClearDelayedDestroyFunctions","executeInAWhile","newFirst","newLast","paginationOffset","getOffset","bodyVRange","bodyTopPixel","bodyBottomPixel","bufferPixels","firstPixel","lastPixel","ensureAllRowsInRangeHaveHeightsCalculated","firstRowIndex","lastRowIndex","pageFirstRow","rowLayoutNormal","suppressRowCountRestriction","firstDiffers","lastDiffers","dispatchEventOnce","topPixel","bottomPixel","rowHeightsChanged","REMOVE_ROW","KEEP_ROW","rowHasFocus","isRowNodeFocused","rowIsEditing","mightWantToKeepRow","rowNodePresent","useAnimationFrameForCreate","renderedRows","allowUserOverride","nextCell","getComponentForCell","colSpanningList","getColSpanningList","cellNavigationService","skipGroupRows","previousCellDef","nextCellDef","ensureCellVisible","horizontallyScrollHeaderCenterAndFloatingCenter","startRowOrCellEdit","rowComponent","cellComponent","getRenderedCellForColumn","onTabKeyDown","previousRenderedCell","keyboardEvent","moveToCellAfter","renderedCell","editing","moveToNextEditingRow","moveToNextEditingCell","moveToNextCellNotEditing","nextRenderedCell","findNextCellToFocusOn","foundCell","startEditingIfEnabled","focusCell","moveEditToNextCellOrRow","pGridCell","nGridCell","rowsMatch","setFocusOutOnEditor","setFocusInOnEditor","pRow","getRenderedRow","nRow","startRowEditing","startEditing","lookupRowNodeForCell","cellIsEditable","cellIsNotFloating","nextCellComp","compIdSequence","template","childComponents","annotatedEventListeners","createChildComponentsFromTags","parentNode","childNodeList","copyNodeList","childNodes","childComp","copyAttributesFromNode","swapComponentForNode","dest","iterateNamedNodeMap","eComponent","replaceChild","insertBefore","createComment","swapInComponentForQuerySelectors","thisProto","thisNoType","currentProtoName","querySelectors","__agComponent","addAnnotatedEventListeners","contextIsAvailable","createChildComponentsPreConstruct","uiExists","thisNoType_1","resultOfQuery","backingComponent","removeAnnotatedEventListeners","listenerMethods","getAgComponentMetaData","eventListener","setGui","queryForHtmlElement","cssSelector","queryForHtmlInputElement","newChild","isNodeOrElement","childComponent","feature","visibilityMode","isDisplay","addOrRemove","getAttribute","originalBalancedTree","tree","ClientSideNodeManager","nextId","allNodesMap","ROOT_NODE_ID","allLeafChildren","childrenAfterSort","isRowMasterFunc","doingLegacyTreeData","getCopyOfNodesMap","childrenMapped","recursiveFunction","TOP_LEVEL","setLeafChildren","rowDataTran","rowNodeOrder","isLegacyTreeData","rowNodeTransaction","useIndex","addRowNode","anyNodesSelected_1","lookupRowNode","updatedRowNode","updateGroupsFromChildrenSelections","sortRowNodesByOrder","newNode","createNode","rowNodeIdFunc","updateData","setSelected","nodeChildDetails","canFlower","master","numRowGroupColumns","masterRowLevel","expandByDefault","childAfterGroup","leafChild","context_3","context_4","changedPath_1","onRowSelected","setLastSelectedNode","lastSelectedNode","getLastSelectedNode","selectedRows","removeGroupsFromSelection","getRootNode","calculateSelectedFromChildren","getNodeForIdIfSelected","clearOtherNodes","rowNodeToKeepSelected","groupsToRefresh","otherRowNode","suppressFinishActions","syncInRowNode","oldNode","syncInOldRowNode","syncInNewRowNode","oldNodeHasDifferentId","oldNodeSelected","setSelectedInitialValue","topLevelNodes","getTopLevelNodes","traverse","nodes","setRowModel","justFiltered","selectThisNode","rowModelClientSide","VerticalStack","isLayoutPanel","childPanels","addPanel","needToMoveLeft","needToMoveRight","ICON_PINNED","ICON_MOVE","dragCameFromToolPanel","visibleState_1","hideColumnOnExit","fromNudge","ensureIntervalCleared","allowedCols","normaliseX","flipHorizontallyForRtl","adjustForScroll","getCenterViewportScrollLeft","checkCenterForScrolling","xAdjustedForScroll","firstVisiblePixel","lastVisiblePixel","getCenterWidth","ensureIntervalStarted","fromEnter","lastDraggingEvent","hDirection","xNormalised","hDirectionNormalised","normaliseDirection","dragSourceType","attemptMoveColumns","HDirection","Left","Right","calculateOldIndex","movingCols","gridCols","sortNumberArray","firstIndex","gapsExist","allMovingColumns","xAdjusted","draggingLeft","draggingRight","validMoves","calculateValidMoves","newIndex","constrainDirection","gridColIndex","allDisplayedCols","allGridCols","colIsMovingFunc","colIsNotMovingFunc","movingDisplayedCols","otherDisplayedCols","otherGridCols","availableWidth","widthOfMovingDisplayedCols_1","leftColumn","nextCol","isColumnHidden","movingIntervalId","intervalCount","failedMoveAttempts","setInterval","moveInterval","setGhostIcon","ICON_LEFT","ICON_RIGHT","clearInterval","pixelsToMove","pixelsMoved","scrollHorizontally","columnsThatCanPin","pinType","nudge","filterNodes","includeChildNodes","passBecauseChildren","passBecauseDataPasses","setAllChildrenCount","doingTreeDataFiltering","treeDataDepthFirstFilter_1","alreadyFoundInParent","foundInParent","treeDataFilterCallback","defaultFilterCallback","setAllChildrenCountTreeData","setAllChildrenCountGridGrouping","eInput","startValue","keyPressBackspaceOrDelete","KEY_BACKSPACE","KEY_DELETE","getStartValue","KEY_F2","highlightAllOnFocus","pageUp","pageDown","length_1","setSelectionRange","parseValue","useFormatter","scrollY","uiBodyHeight","scrollBarWidth","maxDivHeight","getMaxDivHeight","isScaling","scaling","newScrollY","newBodyHeight","getUiBodyHeight","calculateOffset","uiContainerHeight","pixelsToShave","modelHeight","maxScrollY","scrollPercent","setOffset","clearOffset","newOffset","newOffsetFloor","getRealPixelPosition","modelPixel","pos","getScrollPositionForPixel","modelMaxScroll","scrollPixel","globalObj","global","Node","columnKeyCreator_1","userComponentRegistry_1","agGridNg1_1","agGridWebComponent_1","initialiseAgGridWithWebComponents","VDirection","gridPanel_1","GridPanel","headerContainer_1","headerRootComp_1","HeaderRootComp","standardMenu_1","tabbedLayout_1","TabbedLayout","verticalStack_1","simpleHttpRequest_1","popupEditorWrapper_1","checkboxSelectionComponent_1","filterStage_1","flattenStage_1","FlattenStage","sortStage_1","clientSideRowModel_1","ClientSideRowModel","clientSideNodeManager_1","infiniteRowModel_1","popupWindow_1","PopupWindow","popupMessageBox_1","PopupMessageBox","xmlFactory_1","gridSerializer_2","zipContainer_1","baseFrameworkFactory_1","BaseFrameworkFactory","functions_1","gridCore_1","GridCore","Utils","logger_2","frameworkComponentWrapper_1","BaseComponentWrapper","LAYOUT_INTERVAL","EXPORT_TYPE_DRAG_COPY","EXPORT_TYPE_CLIPBOARD","EXPORT_TYPE_EXCEL","KEY_TAB","KEY_NEW_LINE","KEY_SHIFT","KEY_SPACE","KEY_A","KEY_C","KEY_V","KEY_D","ALWAYS","ONLY_WHEN_GROUPING","resizeObserverService_1","TEMPLATE_ENTERPRISE","TEMPLATE_NORMAL","service","quickFilterUnregisterFn","$watch","addRtlSupport","eRootWrapperBody","gridPanelEl","unsubscribeFromResize","resizeObserverService","onGridSizeChanged","cssClass","sideBarComp","close","openedItem","doingVirtualPaging","comparatorIsAFunction","indexToSelect","textCustomComparator","DEFAULT_COMPARATOR","textFormatter","caseSensitive","DEFAULT_FORMATTER","DEFAULT_LOWERCASE_FORMATTER","fieldId","addFilterChangedListener","setFilter","filterConditionText","eFilterTextField","eFilterConditionTextField","onFilterTextFieldChanged","filterText","formattedCellValue","checkIndividualFilter","filterTextFormatted","current","trim","newLowerCase","previousLowerCase","getFilter","lastIndexOf","DEFAULT_NO_ROWS_TEMPLATE","localisedTemplate","getHeaderCellForColumn","eDummyContainer","eBodyContainer","getCenterContainer","putRowCellsIntoDummyContainer","cloneItemIntoDummy","dummyContainerWidth","headerWrapperComp","eCellClone","cloneNode","eCloneParent","defaultColumnTypes_1","defs","existingColumns","columnKeyCreator","existingColsCopy","unbalancedTree","recursivelyCreateColumns","findMaxDept","balanceColumnTree","deptFirstCallback","setupExpandable","autoGroupCols","fakeTreeItem","createAutoGroupTreeItem","findDepth","nextChild","autoGroup","setChildren","currentDept","columnDept","newChildren","firstPaddedGroup","currentPaddedGroup","newColId","colGroupDefMerged","createMergedColGroupDef","paddedGroup","hasGroups","some","treeChildren","maxDeptThisLevel","newDept","newGroupOrColumn","isColumnGroup","createColumn","checkForDeprecatedItems","colDefMerged","findExistingColumn","oldColDef","oldColHadId","assignColumnTypes","typeKeys","invalidArray","allColumnTypes","t","typeColDef","colDefNoType","headerGroup","suppressRowGroup","suppressAggregation","setTitle","messageBodyComp","MessageBody","setMessage","setBody","closePopup","eCenter","innerText","eOk","onBtOk","ComponentSource","createAndInitUserComponent","newFullWidthGroupRowInnerCellRenderer","newFullWidthCellRenderer","cellRendererType","cellRendererName","newCellRenderer","newPinnedRowCellRenderer","newCellEditor","newInnerCellRenderer","defaultFloatingFilter","newToolPanelComponent","toolPanelDef","newStatusPanelComponent","definitionObject","paramsFromGrid","defaultComponentName","componentAndParams","createComponentInstance","createFinalParams","addReactHacks","paramsAfterCallback","deferredInit","initComponent","asPromise","notRelevant","agGridReact","clazz","agGridParams","internalComponent","componentSelectorFunc","hardcodedNameComponent","HardcodedJsComponent","HardcodedFwComponent","componentPropertyValue","usingDefaultComponent","HARDCODED","componentNameToUse","selectorResult","registeredCompClassDef","lookupFromRegisteredComponents","componentNameOpt","userComponentRegistry","REGISTERED_BY_NAME","holder","paramsForSelector","componentToUse","FrameworkComponentRaw","thisComponentConfig","wrap","finalParams","padding","expandable","setExpandable","onColumnVisibilityChanged","atLeastOneShowingWhenOpen","atLeastOneShowingWhenClosed","atLeastOneChangeable","findChildren","firstChild","blockCount","virtualRowCount","forEachBlockInOrder","destroyBlock","hack_setVirtualRowCount","checkVirtualRowCount","purgeBlocksIfNeeded","blockToExclude","blocksForPurging","maxBlocksProvided","blocksToKeep","emptyBlocksToKeep","MAX_EMPTY_BLOCKS_TO_KEEP","purgeBecauseBlockEmpty","purgeBecauseCacheFull","removeBlockFromCache","postCreateBlock","newBlock","setBlock","blockToRemove","lastRowIndexPlusOverflow","dynamicRowHeight","ids","getBlockIdsSorted","forEachBlockId","forEachBlockInReverseOrder","numberComparator","blockIds","idStr","parseInt","getBlock","blockId","lastBlockId","inActiveRange","numberSequence","foundGapInSelection","hitFirstOrLast","invalidRange","eLoadingIcon","eLoadingText","preConstruct","loadIcons","updateIcons","setLabel","label","eLabel","eChecked","eUnchecked","eIndeterminate","onClick","addAgGridEventPath","toggle","getNextValue","setPassive","setReadOnly","isReadOnly","nextValue","EVENT_CHANGED","eClose","onBtClose","eBody","eContentWrapper","eTitle","DESTROY_EVENT","FUNCTION_STRIP_COMMENTS","FUNCTION_ARGUMENT_NAMES","AG_GRID_STOP_PROPAGATION","Timer","timestamp","print","msg","info","HTML_ESCAPES","reUnescapedHtml","doIeFocusHack","isBrowserEdge","doOnceFlags","isLeftClick","buttons","button","e1","e2","pixelCount","diffX","diffY","val1","val2","val1Json","val2Json","shallowCompare","arr1","arr2","getNameOfClass","TheClass","funcNameRegex","funcAsString","results","exec","object","fields","styles","getComputedStyle","margin","parseFloat","marginTop","marginBottom","ceil","marginLeft","marginRight","getScrollLeft","rtl","setScrollLeft","isBrowserSafari","isBrowserFirefox","attr","copy","deepCloneObject","array","mappedItem","getAllKeysInObjects","objects","allValues","obj","sources","yyyyMmDd","separator","pad","num","totalStringSize","asString","first","last","fnStr","match","collection","objToArray","collectionAsArray","firstMatchingItem","toStrings","isNode","nodeType","isElement","nodeList","isEventFromPrintableCharacter","pressedChar","fromCharCode","charCode","printableCharacter","numpadDelWithNumlockOnForEdgeOrIe","isNumpadDelWithNumlockOnForEdgeOrIe","PRINTABLE_CHARACTERS","gridOptionsFunc","colDefFunc","colDefFuncResult","getCellCompForEvent","sourceElement","getTarget","addChangeListener","valueNoType","missingOrEmptyObject","allowEmptyString","firstExistingValue","anyExists","removeElement","offsetParent","tempDiv","htmlTemplate","insertAdjacentHTML","callIfPresent","cssClasses","containsClass","onlyClass","startsWithClass","endsWithClass","getElementAttribute","numberArray","removeRepeatsFromArray","thisOneMatches","nextOneMatches","toRemove","insertArrayIntoArray","src","objectsToMove","valueAMissing","valueBMissing","doQuickCompare","localeCompare","array1","array2","eChildBefore","nextSibling","insertAdjacentElement","formatSize","formatNumberTwoDecimalPlacesAndCommas","prependDC","documentFragment","createIcon","iconContents","eResult","userProvidedIcon","rendererResult","iconNameClassMap","addStylesToElement","keyCamelCase","hyphenToCamelCase","scrollHeight","testUpTo","userAgent","div","outer","visibility","msOverflowStyle","widthNoScroll","overflow","inner","widthWithScroll","hasOverflowScrolling","prefixes","getElementsByTagName","computedStyle","overflowScrolling","prefixes_1","keyToCheck","pressedKey","setHidden","hidden","setFixedHeight","maxHeight","isIE","documentMode","isEdge","StyleMedia","isSafari","anyWindow","safari","pushNotification","isChrome","win","chrome","webstore","runtime","vendor","isFirefox","InstallTrigger","isUserAgentIPad","isIPad","eventNoType","srcElement","isElementChildOfClass","cls","maxNest","counter","getEventPath","val","createEventPath","__agGridEventPath","deepPath","composedPath","forEachSnapshotFirst","list","arrayCopy","getBodyWidth","innerHeight","innerWidth","setCheckboxState","eCheckbox","indeterminate","traverseNodesWithKey","keyParts","recursiveSearchNodes","currentNodes","camelCaseToHyphen","str","g","cssStyleObjectToMarkup","stylesToUse","resParts","styleKey","styleValue","styleKeyDashed","isFinite","escape","toEscape","chr","normalizeWheel","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","wait","immediate","callNow","funcs","executeAfter","expression","thisKey","passiveEvents","capture","rex","words","word","eMessage","eBox","rowNodeA","rowNodeB","positionA","positionB","aHasIndex","bHasIndex","bothNodesAreUserNodes","bothNodesAreFillerNodes","__objectId","atLeastOneOutOfOrder","inputValues","validValues","allSuggestions","fuzzyMatches","invalidInputs","inputValue","validValue","invalidInput","thisSuggestions","suggestedValueLeft","suggestedValueRight","leftDifference","string_similarity","rightDifference","get_bigrams","s","NUMPAD_DEL_NUMLOCK_ON_KEY","NUMPAD_DEL_NUMLOCK_ON_CHARCODE","bindCellRendererToHtmlElement","cellRendererPromise","eTarget","compose","fns","arg","composed","f","bytes","hex","utftext","n","columnGroupClosed","columnSelectClosed","columnSelectOpen","columnMovePin","columnMoveAdd","columnMoveHide","columnMoveMove","columnMoveLeft","columnMoveRight","columnMoveGroup","columnMoveValue","columnMovePivot","dropNotAllowed","groupContracted","groupExpanded","checkboxChecked","checkboxUnchecked","checkboxIndeterminate","checkboxCheckedReadOnly","checkboxUncheckedReadOnly","checkboxIndeterminateReadOnly","groupLoading","menu","menuPin","menuValue","menuAddRowGroup","menuRemoveRowGroup","clipboardCopy","clipboardCut","clipboardPaste","pivotPanel","rowGroupPanel","valuePanel","columnDrag","sortAscending","sortDescending","sortUnSort","str1","str2","pairs1","pairs2","union","hit_count","len1","PromiseStatus","initValue","valToReturn","peek","skip","IN_PROGRESS","resolution","listOfWaiters","onDone","onReject","toCombine","combinedValues","remainingToResolve","sourceResolved","firstOneOnly","adapter","unmapped","ifNotResolvedValue","ifResolved","RESOLVED","waiter","setScrollsVisible","atLeastOneDifferent","horizontalScrollShowing","verticalScrollShowing","ChangeDetectionService","doChangeDetection","isRowPinned","onlyChangedColumns","doAggregate","OBJECT_ID_SEQUENCE","oldData","updateDataOnDetailNode","checkRowSelectable","createDataChangedEvent","dispatchLocalEvent","detailNode","createLocalRowEvent","getRowIndexString","createDaemonNode","daemon","setId","shouldInvokeIsRowSelectable","newVal","isPixelInRange","oldRowTop","setRowTop","setFirstChild","EVENT_FIRST_CHILD_CHANGED","setLastChild","EVENT_LAST_CHILD_CHANGED","setChildIndex","childIndex","EVENT_CHILD_INDEX_CHANGED","EVENT_TOP_CHANGED","setDragging","dragging","EVENT_DRAGGING_CHANGED","EVENT_ALL_CHILDREN_COUNT_CHANGED","rowHeightEstimated","EVENT_HEIGHT_CHANGED","EVENT_ROW_INDEX_CHANGED","setUiLevel","EVENT_UI_LEVEL_CHANGED","createGlobalRowEvent","mainEventService","setDataValue","dispatchCellChangedEvent","setGroupValue","setAggData","newAggData","isEmptyFillerNode","cellChangedEvent","sibling","depthFirstSearch","newSelectedValue","atLeastOneSelected","atLeastOneDeSelected","atLeastOneMixed","childState","newRowClicked","allowMultiSelect","doRowRangeSelection","skipThisNode","thisNodeWasSelected","selectChildNodes","groupsSelectChildren","nodesToSelect","nodeWasSelected","isParentOfNode","potentialParent","onMouseEnter","EVENT_MOUSE_ENTER","onMouseLeave","EVENT_MOUSE_LEAVE","getFirstChildOfFirstChild","rowGroupColumn","nodeToSwapIn","isCandidate","foundFirstChildPath","parentRowNode","RowDragFeature","onEnterOrDragging","normaliseForScroll","managedDrag","doManagedDrag","rowWasMoved","ensureRowAtPixel","gridPanelHasScrolls","pixelRange","needToMoveUp","needToMoveDown","scrollVertically","vDirectionString","yNormalised","overIndex","overNode","mouseIsPastLastRow","vDirection","Down","Up","stopDragging","OriginalConstructor","createMethod","createId","other","colsMatch","floatingMatch","indexMatch","ARROW_UP","ARROW_DOWN","refreshCount","eValue","eDelta","showDelta","delta","absDelta","valueToUse","deltaUp","setTimerToRemoveDelta","refreshCountCopy","hideDeltaValue","lastValue","columnsToAggregate","columnsToGroup","columnsToPivot","clearColumnsList","dragColumns","totalColumns","changeDetectionService_1","navigationService_1","paginationComp_1","overlayWrapperComponent_1","rowModelClass","getRowModelClass","enterpriseBeans","frameworkBeans","enterpriseComponents","contextLogger","setColumnsAndData","dispatchGridReadyEvent","setEnterpriseBeans","rowModelClasses","RowModelClasses","setEnterpriseComponents","setFrameworkBeans","setEnterpriseDefaultComponents","nothingToSet","readyEvent","infinite","clientSide","allSyncListeners","allAsyncListeners","globalSyncListeners","globalAsyncListeners","asyncFunctionsQueue","scheduled","firedEvents","EventService_1","getListenerList","listenerMap","listenerList","addModalPriorityEventListener","PRIORITY","dispatchToListeners","globalListeners","p1ListenerList","dispatchAsync","flushAsyncQueue","queueCopy","postSortFunc","pullDownGroupDataForHideOpenParents","sortedRowNodes","doDeltaSort","doFullSort","sorted","updateChildIndexes","updateGroupDataForHiddenOpenParents","mapNodeToSortedNode","compareRowNodes","currentPos","cleanNodes","passesDirtyNodesCheck","passesChangedPathCheck","cleanNodesMapped","sortedRowNode","changedNodes","mergeSortedArrays","sortedNodeA","sortedNodeB","sortOption","isInverted","inverter","comparatorResult","listToSort","clearOperation","childRowNode","groupDisplayCols","groupDisplayCol","displayingGroupKey","thisRowNodeMatches","parentToStealFrom","__assign","rowDragComp_1","autoHeightCell","editingCell","suppressRefreshCell","cellEditorVersion","cellRendererVersion","createGridCellVo","rangeSelectionEnabled","cellFocused","isCellFocused","rangeCount","getCellRangeCount","getValueAndFormat","setUsingWrapper","chooseCellRenderer","setupColSpan","getCreateTemplate","unselectable","templateParts","getCellWidth","modifyLeftForPrintLayout","valueToRender","getInitialValueToRender","valueSanitised","getToolTip","tooltipSanitised","colIdSanitised","wrapperStartTemplate","wrapperEndTemplate","stylesFromColDef","preProcessStylesFromColDef","getInitialCssClasses","stylesForRowSpanning","getStylesForRowSpanning","usingWrapper","singleRowHeight","totalRowHeight","afterAttached","eParentRow","addDomData","populateTemplate","attachCellRenderer","angular1Compile","onCellFocused","onFlashCells","onRowIndexChanged","onCellChanged","onLeftChanged","onFirstRightPinnedChanged","onLastLeftPinnedChanged","onRangeSelectionChanged","eventImpactsThisCell","getCellLeft","mostLeftCol","colsSpanning","cellId","shouldFlash","cells","animateCell","onDisplayColumnsChanged","doingFocusCss","preProcessClassesFromColDef","preProcessCellClassRules","getRangeClasses","usingCellRenderer","cellRendererGui","templateUrl","templateService","getValueToUse","suppressFlash","suppressCellFlash","valuesDifferent","valuesAreEqual","dataNeedsUpdating","cellRendererRefreshed","attemptCellRendererRefresh","replaceContentsAfterRefresh","postProcessStylesFromColDef","postProcessClassesFromColDef","updateAngular1ScopeAndCompile","refreshToolTip","postProcessCellClassRules","cssName","fullName","animationFullName","eParentOfValue","putDataIntoCellAfterRefresh","childElementCount","compiledElement_1","processStylesFromColDef","cellStyle","cssToUse","cellStyleParams","cellStyleFunc","processClassesFromColDef","onApplicableClass","stylingService","processStaticCellClasses","createCellRendererParams","newTooltip","removeAttribute","equalsMethod","processCellClassRules","onNotApplicableClass","processClassRules","cellClassRules","includeSelectionComponent","includeRowDraggingComponent","cbSelectionIsFunc","rowDraggableIsFunc","CELL_RENDERER_TYPE_PINNED","CELL_RENDERER_TYPE_NORMAL","createCellRendererInstance","componentPromise","afterCellRendererCreated","eGridCell","addRowCompListener","valueFormattedExists","lockedClosedGroup","isOpenGroup","groupFootersEnabled","groupAlwaysShowAggData","onMouseEvent","onCellClicked","onMouseDown","onCellDoubleClicked","onMouseOut","onMouseOver","dispatchCellContextMenuEvent","cellContextMenuEvent","onCellContextMenu","domEvent","cellMouseOutEvent","cellMouseOverEvent","cellDoubleClickedEvent","editOnDoubleClick","afterCellEditorCreated","createCellEditorParams","createCellEditor","cellEditorAsync","cellEditorPromise","popupEditorWrapper","versionMismatch","cellEditorInPopup","setInlineEditingClass","addPopupCellEditor","addInCellEditor","ePopupGui","hideEditorPopup","onPopupEditorClosed","stopRowOrCellEdit","editingInline","popupEditorShowing","stopEditingAndFocus","suppressNavigateAfterEdit","navigateAfterEdit","valueParser","forceBrowserFocus","onEnterKeyDown","onF2KeyDown","onEscapeKeyDown","onBackspaceOrDeleteKeyPressed","onNavigationKeyPressed","onShiftRangeSelect","extendRangeInDirection","ranges","endCell","end","fullRowEdit","onKeyPress","eventTarget","eventOnChildComponent","onSpaceKeyPressed","leftMouseButtonClick","thisCell","extendRangeToCell","ctrlKeyPressed","cellMouseDownEvent","isDoubleClickOnIPad","nowMillis","lastIPadMouseClickEvent","cellClickedEvent","editOnSingleClick","getParentRow","setParentRow","detach","leftPosition","leftWidth_1","newRangeCount","eCellWrapper","addRowDragging","addSelectionCheckbox","rowDraggingComp","cbSelectionComponent","visibleFunc","stopRowEditing","newValueExists","userWantsToCancel","MAT_GRID_SIZE","FRESH_GRID_SIZE","BALHAM_GRID_SIZE","HARD_CODED_SIZES","virtualItemHeight","themeMatch","reg","usingOldTheme","newTheme_1","RecursionType","refreshEverythingFunc","refreshEverythingAfterColsChangedFunc","afterColumnsChanged","onValueChanged","onRowGroupOpened","refreshMapFunc","nodeManager","atLeastOneChange","rowAtStartPixel","rowAtEndPixel","setRowTops","nextRowTop","rowsToDisplay","resetRowTops","skipChildren","indexAtPixelNow","rowNodeAtPixelNow","createChangePath","noTransactions","doRowGrouping","doFilter","doPivot","doSort","doRowsToDisplay","rowsMissing","firstRowHit","lastRowHit","lookingForLastRow","skipThisGroupNode","childOfLastRow","pixelToMatch","bottomPointer","topPointer","lastNode","midPointer","isRowInPixel","pixelInRow","recursivelyWalkNodesAndCallback","Normal","AfterFilter","AfterFilterAndSort","PivotNodes","recursionType","nodeChildren","aggregationStage","expand","recursiveExpandOrCollapse","shouldExpandOrCollapse","sortStage","groupStage","restoreGroupState","filterStage","pivotStage","getGroupState","rowDataChangedEvent","rowDataTransactionBatch","waitMillis","executeBatchUpdateRowData","callbackFuncsBound","rowNodeTrans","tranItem","rowNodeTran","commonUpdateRowData","flattenStage","templateCache","waitingCallbacks","templateFromCache","callbackList","client","onload","handleHttpResult","httpResult","response","callbacks","that_1","consuming","fireColumnEvent","fireScrollEvent","fireEvent","otherGrids","otherGridOptions","alignedGridService","onEvent","onColumnEvent","onScrollEvent","setHorizontalScrollPosition","getMasterColumns","getColumnIds","colEvent","processColumnEvent","groupOpenedEvent","processGroupOpenedEvent","otherColumnGroup","masterColumnGroup","masterColumn","columnIds","masterColumns","movedEvent","visibleEvent","pinnedEvent","resizedEvent_1","dragSourceAndParamsList","dropTargets","DragAndDropService_1","ePinnedIcon","ePlusIcon","eHiddenIcon","eMoveIcon","eLeftIcon","eRightIcon","eGroupIcon","eAggregateIcon","ePivotIcon","eDropNotAllowedIcon","getStringType","allowTouch","sourceAndParams","eventLastTime","lastDropTarget","createGhost","createDropTargetEvent","removeGhost","workOutHDirection","workOutVDirection","positionGhost","isMouseOnDropTarget","leaveLastTargetIfExists","enterDragTargetIfExists","dragEnterEvent","dragLeaveEvent","getAllContainersFromDropTarget","secondaryContainers","allContainers","mouseOverTarget","rect","horizontalFit","verticalFit","mouseOverTargetAndInterested","dropTargetEvent","ghostRect","eGhost","ghostHeight","browserWidth","browserHeight","pageY","pageX","usrDocument","windowScrollY","pageYOffset","windowScrollX","pageXOffset","eGhostParent","GHOST_TEMPLATE","eGhostIcon","eText","shake","ICON_ADD","ICON_GROUP","ICON_AGGREGATE","ICON_PIVOT","ICON_NOT_ALLOWED","existingNodesMap","suppressSortOrder","orderMap","existingNode","dataHasChanged","processAllCellClasses","classRules","classNames","rule","resultOfRule","classOrClasses","cellClassFunc","SortController_1","nextDirection","getNextSortDirection","valueOf","doingMultiSort","clearSortBarThisColumn","dispatchSortChangedEvents","columnToSkip","columnToClear","DEFAULT_SORTING_ORDER","currentIndex","notInArray","lastItemInArray","columnsWithSorting","getColumnsWithSortingOrdered","sortModelProvided","allColumnsIncludingAuto","sortForCol","sortModelEntry","compareColIds","ascending","onMouseUpListener","onMouseUp","onMouseMoveListener","onMouseMove","onTouchEndListener","onTouchUp","onTouchMoveListener","dragEndFunctions","dragSources","removeListener","dragSourceAndListener","mouseDownListener","touchEnabled","touchStartListener","setNoSelectToBody","noSelect","includeTouch","mouseListener","currentDragParams","touchLastTime","onCommonMove","skipMouseEvent","_alreadyProcessedByDragService","mouseEventLastTime","mouseStartEvent","isEventNearStartEvent","currentEvent","startEvent","requiredPixelDiff","getFirstActiveTouch","changedTouches","onUpCommon","eventOrTouch","colDefFloatingCellRenderer","colDefCellRenderer","colDefCellEditor","colDefFilter","gridOptionsFullWidthCellRenderer","gridOptionsGroupRowRenderer","gridOptionsGroupRowInnerRenderer","filterNumberTo","filterNumberToPanelId","fieldToId","addFilterChangedEventListeners","eFilterToTextField","eFilterTextConditionField","eFilterToConditionText","filterNumberCondition","setFilterTo","filterNumberConditionTo","filterElement","filterToElement","onTextFieldsChanged","stringToFloat","newFilterTo","filterNumber","eNumberToPanel","eNumberToConditionPanel","DEFAULT_LOADING_OVERLAY_TEMPLATE","parentScope","animateIn","embedFullWidth","eAllRowContainers","rowContainerReadyCount","refreshNeeded","columnRefreshPending","cellComps","createSecondPassFuncs","removeFirstPassFuncs","removeSecondPassFuncs","rowIsEven","paginationPage","setAnimateFlags","rowFocused","isRowFocused","createChildScopeOrNull","setupRowContainers","addListeners","slideRowIn","onTopChanged","fadeRowIn","createTemplate","contents","extraCssClass","rowClasses","getInitialRowClasses","rowIdSanitised","userRowStyles","preProcessStylesFromGridOptions","businessKey","getRowBusinessKey","businessKeySanitised","rowTopStyle","getInitialRowTopStyle","executeProcessRowPostCreateFunc","eBodyRow","ePinnedLeftRow","ePinnedRightRow","pixels","roundRowTopToBounds","afterPaginationPixels","applyPaginationOffset","afterScalingPixels","businessKeyForNodeFunc","areAllContainersReady","lazyCreateCells","cellTemplatesAndComps","createCells","callAfterRowAttachedOnCells","createRowContainer","useAnimationsFrameForCreate","afterRowAttached","newChildScope","isFullWidthCellFunc","isDetailCell","isGroupSpanningRow","createFullWidthRows","LOADING_CELL_RENDERER","LOADING_CELL_RENDERER_COMP_NAME","DETAIL_CELL_RENDERER","DETAIL_CELL_RENDERER_COMP_NAME","FULL_WIDTH_CELL_RENDERER","GROUP_ROW_RENDERER","GROUP_ROW_RENDERER_COMP_NAME","setupNormalRowContainers","centerCols","leftCols","rightCols","fullWidthRow","createFullWidthRowContainer","eFullWidthRowBody","fullWidthRowComponentBody","eFullWidthRowLeft","fullWidthRowComponentLeft","eFullWidthRowRight","fullWidthRowComponentRight","eFullWidthRow","fullWidthRowComponent","oldRowTopExists","editingRow","onExpandedChanged","onRowNodeDataChanged","onRowNodeCellChanged","onRowNodeDraggingChanged","onCellFocusChanged","removeRenderedCells","postProcessCss","postProcessStylesFromGridOptions","postProcessClassesFromGridOptions","postProcessRowClassRules","postProcessRowDragging","destroyFullWidthComponents","getContainerForCell","pinnedType","skipAnimationFrame","refreshCellsInAnimationFrame","insertCellsIntoContainer","colIdsToRemove","eligibleToBeRemoved","isCellEligibleToBeRemoved","REMOVE_CELL","KEEP_CELL","isCellInWrongRow","focused","mightWantToKeepCell","cellStillDisplayed","ensureCellInCorrectContainer","eOldContainer","inWrongRow","rowWeWant","oldRow","cellTemplates","newCellComps","existingCell","createNewCell","eRowContainer","gow","DOM_DATA_KEY_RENDERED_ROW","newCellComp","cellTemplate","onRowDblClick","onRowClick","createRowEvent","createRowEventWithSource","agEvent","stop","multiSelectKeyPressed","shiftKeyPressed","multiSelectOnClick","rowDeselectionWithCtrl","eRowCallback","cellRendererCallback","createFullWidthParams","isDetailRow","classes","addExpandedClass","processClassesFromGridOptions","preProcessRowClassRules","firstRowOnPage","isFirstRowOnPage","lastRowOnPage","isLastRowOnPage","processRowClassRules","setEditingRow","sourceRenderedCell","classStr","process","rowCls","rowClassFunc","rowClassFuncResult","rowStyles","processStylesFromGridOptions","rowStyleFuncResult","rowStyleFunc","templateAndComps","addHoverFunctionality","range","minPixel","maxPixel","heightPx_1","destroyContainingCells","delayedDestroyFunctions","topPx","multiplier","topPx_1","transform","spanList","updateRowIndexes","rowIndexStr","rowIsEvenChanged","sides","getBodyRowElement","ct","getPinnedLeftRowElement","getPinnedRightRowElement","getFullWidthRowElement","side","pinnedTopRows","pinnedBottomRows","getRowAtPixel","rowTopPixel","createNodesFromData","allData","isTop","nextRowTop_1","getPinnedTopTotalHeight","getTotalHeight","getPinnedBottomTotalHeight","registered","registerElement","AgileGridProto","__agGridSetProperty","__agGridGetProperty","enumerable","agGridProtoNoType","__attributes","changeObject","onChange","_initialised","_gridOptions","setGridOptions","_agGrid","createdCallback","setPropertyFromAttribute","toCamelCase","nodeValue","attachedCallback","detachedCallback","attributeChangedCallback","eventLowerCase","browserEvent","Event","browserEventNoType","agGridDetails","callbackMethod","myString","eHeader","addItem","setAfterAttachedParams","afterAttachedParams","getMinDimensions","eDummyBody","itemWrapper","eClone","tabbedItem","bodyPromise","showFirstItem","showItemWrapper","eHeaderButton","showItem","onItemClicked","activeItem","afterAttachedCallback","onActiveItemClicked","cacheVersion","neverExpires","__cacheVersion","__cacheData","valueInCache","rowContainerComponent_1","rowDragFeature_1","GRID_PANEL_NORMAL_TEMPLATE","resetLastHorizontalScrollElementDebounce","resetLastHorizontalScrollElement","eBodyViewport","eCenterViewport","onRowDataChanged","showOrHideOverlay","method","suppressScrollOnFloatingRow","setupRowAnimationCssClass","buildRowContainerComponents","addDragListeners","addScrollListener","setPinnedContainerSize","disableBrowserDragging","addMouseListeners","addKeyboardEvents","addBodyViewportListener","addStopEditingWhenGridLosesFocus","mockContextMenuForIPad","addRowDragListener","addAngularApplyCheck","onDisplayedColumnsWidthChanged","navigationService","heightScaler","paginationAutoPageSizeService","viewport","onCenterViewportResized","newPrintLayout","setWidthsOfContainers","setColumnMovingCss","eTop","eCenterContainer","eBottom","rowDragFeature","focusOutListener","elementWithFocus","clickInsideGrid","applyTriggered","HTMLImageElement","eLeftContainer","eRightContainer","eventNames","processMouseEvent","eAllCellContainers","processKeyboardEvent","onContextMenu","preventDefaultOnContextMenu","getBodyClientRect","getRowForEvent","gridProcessingAllowed","wasScrollKey","doClipboardOperations","cellKeyDownEvent","cellKeyPressEvent","isEventFromThisGrid","onCtrlAndA","onCtrlAndC","onCtrlAndV","onCtrlAndD","getRenderedCellForEvent","handleContextMenuMouseEvent","longTapListener","showMenu","isEmptyPinnedTop","isEmptyPinnedBottom","floatingStart","floatingEnd","rowEnd","setRange","rowStart","columnStart","columnEnd","copyToClipboard","pasteFromClipboard","rowGotShiftedDuringOperation","startingRowTop","startingRowHeight","rowBottomPixel","heightOffset","vScrollTop","vScrollBottom","viewportHeight","pxTop","pxBottom","pxMiddle","rowBelowViewport","rowAboveViewport","newScrollPosition","updateScrollVisibleService","checkBodyHeight","onHorizontalViewportChanged","updateScrollVisibleServiceImpl","setHorizontalScrollVisible","setVerticalScrollPaddingVisible","scrollSize","scrollContainerSize","addIEPadding","eHorizontalScrollBody","eBodyHorizontalScrollViewport","eBodyHorizontalScrollContainer","scroller","overflowY","setFakeHScrollSpacerWidths","viewportLeftPixel","viewportRightPixel","colLeftPixel","colRightPixel","viewportWidth","viewportScrolledPastCol","viewportScrolledBeforeCol","colToSmallForViewport","alignColToLeft","alignColToRight","setCenterViewportScrollLeft","overlayWrapper","nextTimeout","eTopViewport","eBottomViewport","eLeftBottom","eLeftTop","eRightBottom","eRightTop","eFullWidthContainer","rowContainerComponents","eCenterColsClipper","eTopContainer","eTopFullWidthContainer","eBottomContainer","eBottomFullWidthContainer","resetTopScroll","resetBottomScroll","getFloatingTopBottom","setCenterWidth","pinnedContainerWidths","setHeaderContainerWidth","widthPx","setPinnedLeftWidth","oldPinning","widthOfCols","newPinning","setLeftVisible","setPinnedRightWidth","setRightVisible","rightSpacing","scrollOnRight","eHorizontalRightSpacer","leftSpacing","scrollOnLeft","eHorizontalLeftSpacer","totalHeaderHeight","floatingTopHeight","floatingBottomHeight","floatingTopHeightString","floatingBottomHeightString","hScrollPosition","doHorizontalScroll","vScrollPosition","oldScrollPosition","onCenterViewportScroll","onFakeHorizontalScroll","onVerticalScroll","redrawRowsAfterScroll","isControllingScroll","eDiv","lastHorizontalScrollElement","onBodyHorizontalScroll","eSource","scrollWentPastBounds","setHorizontalScroll","partner","addScrollEventListener","removeScrollEventListener","lastMovingChanged","setupTap","setupIcons","setupMenu","setupSort","setupFilterIcon","setupText","displayNameSanitised","eSortAsc","eSortDesc","eSortNone","eFilter","eParent","menuTouchListener","showMenuFn","tapListener","dontShowMenu","opacity","transition","removeSortIcons","eSortOrder","sortUsingCtrl","nowTime","movedRecently","columnMoving","setMultiSortOrder","alwaysHideNoSort","allColumnsWithSorting","indexThisCol","moreThanOneColSorting","showIndex","gridInstanceId","MouseEventService_1","gridInstanceSequence","stampDomElementWithGridInstance","GRID_DOM_KEY","eventFromThisGrid","cbSelectAllVisible","processingEventFromCheckbox","filteredOnly","headerCheckboxSelectionFilteredOnly","showOrHideSelectAll","onModelChanged","onCbSelectAll","isCheckboxSelection","checkRightRowModelType","updateStateOfCheckbox","getNextCheckboxState","selectionCount","notSelected","getSelectionCount","allSelected","selectedCount","notSelectedCount","rowModelMatches","expressionToFunctionCache","expressionOrFunc","evaluateExpression","javaScriptFunction","createExpressionFunction","functionBody","createFunctionBody","theFunction","existingIds","lastResult","assignBlankValueToGroupFooterCell","embeddedRowMismatch","isEmbeddedRowMismatch","cellIsEmpty","cellIsBlank","setupDragOpenParents","addExpandAndContract","addCheckboxIfNeeded","addValueElement","setupIndent","pinnedLeftCell","pinnedRightCell","bodyCell","setIndent","paddingCount","userProvidedPaddingPixelsTheDeprecatedWay","setPaddingDeprecatedWay","indentClass","paddingPx","paddingRight","paddingLeft","suppressPadding","displayedGroup","createFooterCell","createGroupCell","addChildCount","createLeafCell","footerValue","footerValueGetter","paramsClone","rendererPromise","columnToUse","groupName","useFullWidth","useInnerRenderer","innerCellRenderer","groupCellRendererParams","groupedColumnDef","groupInnerRendererClass","groupColumnRendererClass","rendererToUse","suppressCount","updateChildCount","eChildCount","isUserWantsSelected","paramsCheckbox","checkbox","checkboxNeeded","cbSelectionComponent_1","eGroupCell","eExpandedIcon","eContractedIcon","eExpanded","eContracted","onExpandClicked","showExpandAndContractIcons","onAllChildrenCountChanged","suppressDoubleClickExpand","onCellDblClicked","defaultPrevented","cellEditable","onExpandOrContract","draggedFromHideOpenParents","targetIsExpandIcon","reducedLeafNode","pivotModeAndLeafGroup","notExpandable","addLeafIndentClass","DEFAULT_COLUMN_COMP","DEFAULT_FILTER_COMP","defaultToolPanel","comps_1","lookupResult","DEFAULT_BY_KEY","parseComponents","hiddenByDefault","toAdd","labelDefault","labelKey","iconKey","filters","setColsSpanning","getColumnOrGroup","setLeftFirstTime","suppressMoveAnimation","oldLeftExists","animateColumnMove","animateInLeft","actualLeft","colOrGroup","textarea","maxLength","eCurrent","addSlideAnimation","ePrevious","infiniteBlock_1","moveItemsDown","moveFromIndex","moveCount","indexOfLastRowToMove","currentRowIndex","indexOfNodeWeWant","nodeForThisIndex","insertItems","indexToInsert","pageStartRow","pageEndRow","newRowNodes","currentRowInThisPage","newNodes","newNodesThisPage","dontCreatePage","createBlock","autoRowHeightCols","visibleAutoRowHeightCols","maxCellHeight","browserFocusedCell","getGridCellForDomElement","eBrowserCell","ePointer","isAnyCellFocused","floatingOrNull","skipLeafNodes","showRootNode","topList","recursivelyAddToRowsToDisplay","includeGroupTotalFooter","ensureFooterNodeExists","addRowNodeToRowsToDisplay","rowsToFlatten","hideOpenParents","isParent","isGroupSuppressedNode","isSkippedLeafNode","isRemovedSingleChildrenGroup","isRemovedLowestSingleChildrenGroup","neverAllowToExpand","isHiddenOpenParent","thisRowShouldBeRendered","excludedParent","uiLevelForChildren","createDetailNode","groupNode","footerNode","masterNode","flower","childFlower","executeNextFuncs","executeLaterFuncs","animationThreadCount","ensureAnimationCssClassPresent","flush","executeLaterVMTurn","animationThreadCountCopy","nowFuncs","waitFuncs","cellRendererMap","CellRendererFactory_1","ANIMATE_SLIDE","ANIMATE_SHOW_CHANGE","GROUP","addCellRenderer","childContainers","eHeaderContainer","eHeaderViewport","pinnedLeftContainer","ePinnedLeftHeader","pinnedRightContainer","ePinnedRightHeader","onPivotModeChanged","addPreventHeaderScroll","childContainer","px","addMouseHoverListeners"],"mappings":"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","file":"js/chunk-6ccca705.f08da47f.js","sourcesContent":["/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventService_1 = require(\"../eventService\");\nvar context_1 = require(\"../context/context\");\nvar events_1 = require(\"../events\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar ColumnHoverService = /** @class */ (function (_super) {\n __extends(ColumnHoverService, _super);\n function ColumnHoverService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnHoverService.prototype.setMouseOver = function (columns) {\n this.selectedColumns = columns;\n var event = {\n type: events_1.Events.EVENT_COLUMN_HOVER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.clearMouseOver = function () {\n this.selectedColumns = null;\n var event = {\n type: events_1.Events.EVENT_COLUMN_HOVER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.isHovered = function (column) {\n return this.selectedColumns && this.selectedColumns.indexOf(column) >= 0;\n };\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], ColumnHoverService.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], ColumnHoverService.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], ColumnHoverService.prototype, \"gridApi\", void 0);\n ColumnHoverService = __decorate([\n context_1.Bean('columnHoverService')\n ], ColumnHoverService);\n return ColumnHoverService;\n}(beanStub_1.BeanStub));\nexports.ColumnHoverService = ColumnHoverService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar popupComponent_1 = require(\"../../widgets/popupComponent\");\nvar constants_1 = require(\"../../constants\");\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar valueFormatterService_1 = require(\"../valueFormatterService\");\nvar utils_1 = require(\"../../utils\");\nvar SelectCellEditor = /** @class */ (function (_super) {\n __extends(SelectCellEditor, _super);\n function SelectCellEditor() {\n var _this = _super.call(this, '
\") || this;\n }\n DefaultDateComponent.prototype.init = function (params) {\n this.eDateInput = this.getGui().querySelector('input');\n if (utils_1._.isBrowserChrome() || params.filterParams.browserDatePicker) {\n if (utils_1._.isBrowserIE()) {\n console.warn('ag-grid: browserDatePicker is specified to true, but it is not supported in IE 11, reverting to plain text date picker');\n }\n else {\n this.eDateInput.type = 'date';\n }\n }\n this.listener = params.onDateChanged;\n this.addGuiEventListener('input', this.listener);\n };\n DefaultDateComponent.prototype.getDate = function () {\n return utils_1._.parseYyyyMmDdToDate(this.eDateInput.value, \"-\");\n };\n DefaultDateComponent.prototype.setDate = function (date) {\n this.eDateInput.value = utils_1._.serializeDateToYyyyMmDd(date, \"-\");\n };\n return DefaultDateComponent;\n}(component_1.Component));\nexports.DefaultDateComponent = DefaultDateComponent;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar constants_1 = require(\"./constants\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar gridRow_1 = require(\"./entities/gridRow\");\nvar gridCell_1 = require(\"./entities/gridCell\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar pinnedRowModel_1 = require(\"./rowModels/pinnedRowModel\");\nvar utils_1 = require(\"./utils\");\nvar CellNavigationService = /** @class */ (function () {\n function CellNavigationService() {\n }\n // returns null if no cell to focus on, ie at the end of the grid\n CellNavigationService.prototype.getNextCellToFocus = function (key, lastCellToFocus) {\n // starting with the provided cell, we keep moving until we find a cell we can\n // focus on.\n var pointer = lastCellToFocus;\n var finished = false;\n // finished will be true when either:\n // a) cell found that we can focus on\n // b) run out of cells (ie the method returns null)\n while (!finished) {\n switch (key) {\n case constants_1.Constants.KEY_UP:\n pointer = this.getCellAbove(pointer);\n break;\n case constants_1.Constants.KEY_DOWN:\n pointer = this.getCellBelow(pointer);\n break;\n case constants_1.Constants.KEY_RIGHT:\n if (this.gridOptionsWrapper.isEnableRtl()) {\n pointer = this.getCellToLeft(pointer);\n }\n else {\n pointer = this.getCellToRight(pointer);\n }\n break;\n case constants_1.Constants.KEY_LEFT:\n if (this.gridOptionsWrapper.isEnableRtl()) {\n pointer = this.getCellToRight(pointer);\n }\n else {\n pointer = this.getCellToLeft(pointer);\n }\n break;\n default:\n pointer = null;\n console.warn('ag-Grid: unknown key for navigation ' + key);\n break;\n }\n if (pointer) {\n finished = this.isCellGoodToFocusOn(pointer);\n }\n else {\n finished = true;\n }\n }\n return pointer;\n };\n CellNavigationService.prototype.isCellGoodToFocusOn = function (gridCell) {\n var column = gridCell.column;\n var rowNode;\n switch (gridCell.floating) {\n case constants_1.Constants.PINNED_TOP:\n rowNode = this.pinnedRowModel.getPinnedTopRow(gridCell.rowIndex);\n break;\n case constants_1.Constants.PINNED_BOTTOM:\n rowNode = this.pinnedRowModel.getPinnedBottomRow(gridCell.rowIndex);\n break;\n default:\n rowNode = this.rowModel.getRow(gridCell.rowIndex);\n break;\n }\n var suppressNavigable = column.isSuppressNavigable(rowNode);\n return !suppressNavigable;\n };\n CellNavigationService.prototype.getCellToLeft = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToLeft = this.columnController.getDisplayedColBefore(lastCell.column);\n if (!colToLeft) {\n return null;\n }\n else {\n var gridCellDef = {\n rowIndex: lastCell.rowIndex,\n column: colToLeft,\n floating: lastCell.floating\n };\n return new gridCell_1.GridCell(gridCellDef);\n }\n };\n CellNavigationService.prototype.getCellToRight = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToRight = this.columnController.getDisplayedColAfter(lastCell.column);\n // if already on right, do nothing\n if (!colToRight) {\n return null;\n }\n else {\n var gridCellDef = {\n rowIndex: lastCell.rowIndex,\n column: colToRight,\n floating: lastCell.floating\n };\n return new gridCell_1.GridCell(gridCellDef);\n }\n };\n CellNavigationService.prototype.getRowBelow = function (lastRow) {\n // if already on top row, do nothing\n if (this.isLastRowInContainer(lastRow)) {\n if (lastRow.isFloatingBottom()) {\n return null;\n }\n else if (lastRow.isNotFloating()) {\n if (this.pinnedRowModel.isRowsToRender(constants_1.Constants.PINNED_BOTTOM)) {\n return new gridRow_1.GridRow(0, constants_1.Constants.PINNED_BOTTOM);\n }\n else {\n return null;\n }\n }\n else {\n if (this.rowModel.isRowsToRender()) {\n return new gridRow_1.GridRow(0, null);\n }\n else if (this.pinnedRowModel.isRowsToRender(constants_1.Constants.PINNED_BOTTOM)) {\n return new gridRow_1.GridRow(0, constants_1.Constants.PINNED_BOTTOM);\n }\n else {\n return null;\n }\n }\n }\n else {\n return new gridRow_1.GridRow(lastRow.rowIndex + 1, lastRow.floating);\n }\n };\n CellNavigationService.prototype.getCellBelow = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowBelow = this.getRowBelow(lastCell.getGridRow());\n if (rowBelow) {\n var gridCellDef = {\n rowIndex: rowBelow.rowIndex,\n column: lastCell.column,\n floating: rowBelow.floating\n };\n return new gridCell_1.GridCell(gridCellDef);\n }\n else {\n return null;\n }\n };\n CellNavigationService.prototype.isLastRowInContainer = function (gridRow) {\n if (gridRow.isFloatingTop()) {\n var lastTopIndex = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return lastTopIndex <= gridRow.rowIndex;\n }\n else if (gridRow.isFloatingBottom()) {\n var lastBottomIndex = this.pinnedRowModel.getPinnedBottomRowData().length - 1;\n return lastBottomIndex <= gridRow.rowIndex;\n }\n else {\n var lastBodyIndex = this.rowModel.getPageLastRow();\n return lastBodyIndex <= gridRow.rowIndex;\n }\n };\n CellNavigationService.prototype.getRowAbove = function (lastRow) {\n // if already on top row, do nothing\n if (lastRow.rowIndex === 0) {\n if (lastRow.isFloatingTop()) {\n return null;\n }\n else if (lastRow.isNotFloating()) {\n if (this.pinnedRowModel.isRowsToRender(constants_1.Constants.PINNED_TOP)) {\n return this.getLastFloatingTopRow();\n }\n else {\n return null;\n }\n }\n else {\n // last floating bottom\n if (this.rowModel.isRowsToRender()) {\n return this.getLastBodyCell();\n }\n else if (this.pinnedRowModel.isRowsToRender(constants_1.Constants.PINNED_TOP)) {\n return this.getLastFloatingTopRow();\n }\n else {\n return null;\n }\n }\n }\n else {\n return new gridRow_1.GridRow(lastRow.rowIndex - 1, lastRow.floating);\n }\n };\n CellNavigationService.prototype.getCellAbove = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowAbove = this.getRowAbove(lastCell.getGridRow());\n if (rowAbove) {\n var gridCellDef = {\n rowIndex: rowAbove.rowIndex,\n column: lastCell.column,\n floating: rowAbove.floating\n };\n return new gridCell_1.GridCell(gridCellDef);\n }\n else {\n return null;\n }\n };\n CellNavigationService.prototype.getLastBodyCell = function () {\n var lastBodyRow = this.rowModel.getPageLastRow();\n return new gridRow_1.GridRow(lastBodyRow, null);\n };\n CellNavigationService.prototype.getLastFloatingTopRow = function () {\n var lastFloatingRow = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return new gridRow_1.GridRow(lastFloatingRow, constants_1.Constants.PINNED_TOP);\n };\n CellNavigationService.prototype.getNextTabbedCell = function (gridCell, backwards) {\n if (backwards) {\n return this.getNextTabbedCellBackwards(gridCell);\n }\n else {\n return this.getNextTabbedCellForwards(gridCell);\n }\n };\n CellNavigationService.prototype.getNextTabbedCellForwards = function (gridCell) {\n var displayedColumns = this.columnController.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.floating;\n // move along to the next cell\n var newColumn = this.columnController.getDisplayedColAfter(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = displayedColumns[0];\n var rowBelow = this.getRowBelow(gridCell.getGridRow());\n if (utils_1._.missing(rowBelow)) {\n return null;\n }\n newRowIndex = rowBelow ? rowBelow.rowIndex : null;\n newFloating = rowBelow ? rowBelow.floating : null;\n }\n var gridCellDef = { rowIndex: newRowIndex, column: newColumn, floating: newFloating };\n return new gridCell_1.GridCell(gridCellDef);\n };\n CellNavigationService.prototype.getNextTabbedCellBackwards = function (gridCell) {\n var displayedColumns = this.columnController.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.floating;\n // move along to the next cell\n var newColumn = this.columnController.getDisplayedColBefore(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = displayedColumns[displayedColumns.length - 1];\n var rowAbove = this.getRowAbove(gridCell.getGridRow());\n if (utils_1._.missing(rowAbove)) {\n return null;\n }\n newRowIndex = rowAbove ? rowAbove.rowIndex : null;\n newFloating = rowAbove ? rowAbove.floating : null;\n }\n var gridCellDef = { rowIndex: newRowIndex, column: newColumn, floating: newFloating };\n return new gridCell_1.GridCell(gridCellDef);\n };\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], CellNavigationService.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], CellNavigationService.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('pinnedRowModel'),\n __metadata(\"design:type\", pinnedRowModel_1.PinnedRowModel)\n ], CellNavigationService.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], CellNavigationService.prototype, \"gridOptionsWrapper\", void 0);\n CellNavigationService = __decorate([\n context_1.Bean('cellNavigationService')\n ], CellNavigationService);\n return CellNavigationService;\n}());\nexports.CellNavigationService = CellNavigationService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar column_1 = require(\"./column\");\nvar eventService_1 = require(\"../eventService\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar ColumnGroup = /** @class */ (function () {\n function ColumnGroup(originalColumnGroup, groupId, instanceId, pinned) {\n // depends on the open/closed state of the group, only displaying columns are stored here\n this.displayedChildren = [];\n this.localEventService = new eventService_1.EventService();\n this.groupId = groupId;\n this.instanceId = instanceId;\n this.originalColumnGroup = originalColumnGroup;\n this.pinned = pinned;\n }\n // this is static, a it is used outside of this class\n ColumnGroup.createUniqueId = function (groupId, instanceId) {\n return groupId + '_' + instanceId;\n };\n // as the user is adding and removing columns, the groups are recalculated.\n // this reset clears out all children, ready for children to be added again\n ColumnGroup.prototype.reset = function () {\n this.parent = null;\n this.children = null;\n this.displayedChildren = null;\n };\n ColumnGroup.prototype.getParent = function () {\n return this.parent;\n };\n ColumnGroup.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n ColumnGroup.prototype.getUniqueId = function () {\n return ColumnGroup.createUniqueId(this.groupId, this.instanceId);\n };\n ColumnGroup.prototype.isEmptyGroup = function () {\n return this.displayedChildren.length === 0;\n };\n ColumnGroup.prototype.isMoving = function () {\n var allLeafColumns = this.getOriginalColumnGroup().getLeafColumns();\n if (!allLeafColumns || allLeafColumns.length === 0) {\n return false;\n }\n var allMoving = true;\n allLeafColumns.forEach(function (col) {\n if (!col.isMoving()) {\n allMoving = false;\n }\n });\n return allMoving;\n };\n ColumnGroup.prototype.checkLeft = function () {\n // first get all children to setLeft, as it impacts our decision below\n this.displayedChildren.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n child.checkLeft();\n }\n });\n // set our left based on first displayed column\n if (this.displayedChildren.length > 0) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n var lastChild = this.displayedChildren[this.displayedChildren.length - 1];\n var lastChildLeft = lastChild.getLeft();\n this.setLeft(lastChildLeft);\n }\n else {\n var firstChildLeft = this.displayedChildren[0].getLeft();\n this.setLeft(firstChildLeft);\n }\n }\n else {\n // this should never happen, as if we have no displayed columns, then\n // this groups should not even exist.\n this.setLeft(null);\n }\n };\n ColumnGroup.prototype.getLeft = function () {\n return this.left;\n };\n ColumnGroup.prototype.getOldLeft = function () {\n return this.oldLeft;\n };\n ColumnGroup.prototype.setLeft = function (left) {\n this.oldLeft = left;\n if (this.left !== left) {\n this.left = left;\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_LEFT_CHANGED));\n }\n };\n ColumnGroup.prototype.getPinned = function () {\n return this.pinned;\n };\n ColumnGroup.prototype.createAgEvent = function (type) {\n return {\n type: type,\n };\n };\n ColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n ColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n ColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n ColumnGroup.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n ColumnGroup.prototype.isChildInThisGroupDeepSearch = function (wantedChild) {\n var result = false;\n this.children.forEach(function (foundChild) {\n if (wantedChild === foundChild) {\n result = true;\n }\n if (foundChild instanceof ColumnGroup) {\n if (foundChild.isChildInThisGroupDeepSearch(wantedChild)) {\n result = true;\n }\n }\n });\n return result;\n };\n ColumnGroup.prototype.getActualWidth = function () {\n var groupActualWidth = 0;\n if (this.displayedChildren) {\n this.displayedChildren.forEach(function (child) {\n groupActualWidth += child.getActualWidth();\n });\n }\n return groupActualWidth;\n };\n ColumnGroup.prototype.isResizable = function () {\n if (!this.displayedChildren) {\n return false;\n }\n // if at least one child is resizable, then the group is resizable\n var result = false;\n this.displayedChildren.forEach(function (child) {\n if (child.isResizable()) {\n result = true;\n }\n });\n return result;\n };\n ColumnGroup.prototype.getMinWidth = function () {\n var result = 0;\n this.displayedChildren.forEach(function (groupChild) {\n result += groupChild.getMinWidth();\n });\n return result;\n };\n ColumnGroup.prototype.addChild = function (child) {\n if (!this.children) {\n this.children = [];\n }\n this.children.push(child);\n };\n ColumnGroup.prototype.getDisplayedChildren = function () {\n return this.displayedChildren;\n };\n ColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n ColumnGroup.prototype.getDisplayedLeafColumns = function () {\n var result = [];\n this.addDisplayedLeafColumns(result);\n return result;\n };\n // why two methods here doing the same thing?\n ColumnGroup.prototype.getDefinition = function () {\n return this.originalColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.getColGroupDef = function () {\n return this.originalColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.isPadding = function () {\n return this.originalColumnGroup.isPadding();\n };\n ColumnGroup.prototype.isExpandable = function () {\n return this.originalColumnGroup.isExpandable();\n };\n ColumnGroup.prototype.isExpanded = function () {\n return this.originalColumnGroup.isExpanded();\n };\n ColumnGroup.prototype.setExpanded = function (expanded) {\n this.originalColumnGroup.setExpanded(expanded);\n };\n ColumnGroup.prototype.addDisplayedLeafColumns = function (leafColumns) {\n this.displayedChildren.forEach(function (child) {\n if (child instanceof column_1.Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addDisplayedLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n this.children.forEach(function (child) {\n if (child instanceof column_1.Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n ColumnGroup.prototype.getColumnGroupShow = function () {\n return this.originalColumnGroup.getColumnGroupShow();\n };\n ColumnGroup.prototype.getOriginalColumnGroup = function () {\n return this.originalColumnGroup;\n };\n ColumnGroup.prototype.calculateDisplayedColumns = function () {\n var _this = this;\n // clear out last time we calculated\n this.displayedChildren = [];\n var topLevelGroup = this;\n // find the column group that is controlling expandable. this is relevant when we have padding (empty)\n // groups, where the expandable is actually the first parent that is not a padding group.\n if (this.isPadding()) {\n while (topLevelGroup.getParent() && topLevelGroup.isPadding()) {\n topLevelGroup = topLevelGroup.getParent();\n }\n }\n var isExpandable = topLevelGroup.originalColumnGroup.isExpandable();\n // it not expandable, everything is visible\n if (!isExpandable) {\n this.displayedChildren = this.children;\n }\n else {\n // Add cols based on columnGroupShow\n // Note - the below also adds padding groups, these are always added because they never have\n // colDef.columnGroupShow set.\n this.children.forEach(function (abstractColumn) {\n var headerGroupShow = abstractColumn.getColumnGroupShow();\n switch (headerGroupShow) {\n case ColumnGroup.HEADER_GROUP_SHOW_OPEN:\n // when set to open, only show col if group is open\n if (topLevelGroup.originalColumnGroup.isExpanded()) {\n _this.displayedChildren.push(abstractColumn);\n }\n break;\n case ColumnGroup.HEADER_GROUP_SHOW_CLOSED:\n // when set to open, only show col if group is open\n if (!topLevelGroup.originalColumnGroup.isExpanded()) {\n _this.displayedChildren.push(abstractColumn);\n }\n break;\n default:\n // default is always show the column\n _this.displayedChildren.push(abstractColumn);\n break;\n }\n });\n }\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));\n };\n ColumnGroup.HEADER_GROUP_SHOW_OPEN = 'open';\n ColumnGroup.HEADER_GROUP_SHOW_CLOSED = 'closed';\n ColumnGroup.EVENT_LEFT_CHANGED = 'leftChanged';\n ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED = 'displayedChildrenChanged';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ColumnGroup.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], ColumnGroup.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], ColumnGroup.prototype, \"gridApi\", void 0);\n return ColumnGroup;\n}());\nexports.ColumnGroup = ColumnGroup;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction QuerySelector(selector) {\n return querySelectorFunc.bind(this, selector);\n}\nexports.QuerySelector = QuerySelector;\nfunction RefSelector(ref) {\n return querySelectorFunc.bind(this, \"[ref=\" + ref + \"]\");\n}\nexports.RefSelector = RefSelector;\nfunction querySelectorFunc(selector, classPrototype, methodOrAttributeName, index) {\n if (selector === null) {\n console.error(\"ag-Grid: QuerySelector selector should not be null\");\n return;\n }\n if (typeof index === \"number\") {\n console.error(\"ag-Grid: QuerySelector should be on an attribute\");\n return;\n }\n addToObjectProps(classPrototype, 'querySelectors', {\n attributeName: methodOrAttributeName,\n querySelector: selector\n });\n}\n// think we should take this out, put property bindings on the\nfunction Listener(eventName) {\n return listenerFunc.bind(this, eventName);\n}\nexports.Listener = Listener;\nfunction listenerFunc(eventName, target, methodName) {\n if (eventName === null) {\n console.error(\"ag-Grid: EventListener eventName should not be null\");\n return;\n }\n addToObjectProps(target, 'listenerMethods', {\n methodName: methodName,\n eventName: eventName\n });\n}\n// think we should take this out, put property bindings on the\nfunction Method(eventName) {\n return methodFunc.bind(this, eventName);\n}\nexports.Method = Method;\nfunction methodFunc(alias, target, methodName) {\n if (alias === null) {\n console.error(\"ag-Grid: EventListener eventName should not be null\");\n return;\n }\n addToObjectProps(target, 'methods', {\n methodName: methodName,\n alias: alias\n });\n}\nfunction addToObjectProps(target, key, value) {\n // it's an attribute on the class\n var props = getOrCreateProps(target, target.constructor.name);\n if (!props[key]) {\n props[key] = [];\n }\n props[key].push(value);\n}\nfunction getOrCreateProps(target, instanceName) {\n if (!target.__agComponentMetaData) {\n target.__agComponentMetaData = {};\n }\n if (!target.__agComponentMetaData[instanceName]) {\n target.__agComponentMetaData[instanceName] = {};\n }\n return target.__agComponentMetaData[instanceName];\n}\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar agComponentUtils_1 = require(\"./agComponentUtils\");\nvar ComponentMetadataProvider = /** @class */ (function () {\n function ComponentMetadataProvider() {\n }\n ComponentMetadataProvider.prototype.postConstruct = function () {\n this.componentMetaData = {\n dateComponent: {\n mandatoryMethodList: ['getDate', 'setDate'],\n optionalMethodList: ['afterGuiAttached']\n },\n detailCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n headerComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n headerGroupComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n loadingCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n loadingOverlayComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n noRowsOverlayComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n floatingFilterComponent: {\n mandatoryMethodList: ['onParentModelChanged'],\n optionalMethodList: ['afterGuiAttached']\n },\n floatingFilterWrapperComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n cellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n cellEditor: {\n mandatoryMethodList: ['getValue'],\n optionalMethodList: ['isPopup', 'isCancelBeforeStart', 'isCancelAfterEnd', 'focusIn', 'focusOut', 'afterGuiAttached']\n },\n innerRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n fullWidthCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n pinnedRowCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n groupRowInnerRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n groupRowRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n filter: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged']\n },\n filterComponent: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged']\n },\n statusPanel: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n },\n toolPanel: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached']\n },\n tooltipComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n }\n };\n };\n ComponentMetadataProvider.prototype.retrieve = function (name) {\n return this.componentMetaData[name];\n };\n __decorate([\n context_1.Autowired(\"agComponentUtils\"),\n __metadata(\"design:type\", agComponentUtils_1.AgComponentUtils)\n ], ComponentMetadataProvider.prototype, \"agComponentUtils\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ComponentMetadataProvider.prototype, \"postConstruct\", null);\n ComponentMetadataProvider = __decorate([\n context_1.Bean(\"componentMetadataProvider\")\n ], ComponentMetadataProvider);\n return ComponentMetadataProvider;\n}());\nexports.ComponentMetadataProvider = ComponentMetadataProvider;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar grid_1 = require(\"../grid\");\nfunction initialiseAgGridWithAngular1(angular) {\n var angularModule = angular.module(\"agGrid\", []);\n angularModule.directive(\"agGrid\", function () {\n return {\n restrict: \"A\",\n controller: ['$element', '$scope', '$compile', '$attrs', AngularDirectiveController],\n scope: true\n };\n });\n}\nexports.initialiseAgGridWithAngular1 = initialiseAgGridWithAngular1;\nfunction AngularDirectiveController($element, $scope, $compile, $attrs) {\n var gridOptions;\n var quickFilterOnScope;\n var keyOfGridInScope = $attrs.agGrid;\n quickFilterOnScope = keyOfGridInScope + '.quickFilterText';\n gridOptions = $scope.$eval(keyOfGridInScope);\n if (!gridOptions) {\n console.warn(\"WARNING - grid options for ag-Grid not found. Please ensure the attribute ag-grid points to a valid object on the scope\");\n return;\n }\n var eGridDiv = $element[0];\n var gridParams = {\n $scope: $scope,\n $compile: $compile,\n quickFilterOnScope: quickFilterOnScope\n };\n var grid = new grid_1.Grid(eGridDiv, gridOptions, gridParams);\n $scope.$on(\"$destroy\", function () {\n grid.destroy();\n grid = null;\n });\n}\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar popupComponent_1 = require(\"../widgets/popupComponent\");\nvar TooltipComponent = /** @class */ (function (_super) {\n __extends(TooltipComponent, _super);\n function TooltipComponent() {\n return _super.call(this, \"
\") || this;\n }\n // will need to type params\n TooltipComponent.prototype.init = function (params) {\n var value = params.value;\n this.getGui().innerHTML = value;\n };\n return TooltipComponent;\n}(popupComponent_1.PopupComponent));\nexports.TooltipComponent = TooltipComponent;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"../constants\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar environment_1 = require(\"../environment\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar utils_1 = require(\"../utils\");\nvar PopupService = /** @class */ (function () {\n function PopupService() {\n this.activePopupElements = [];\n }\n PopupService.prototype.registerGridCore = function (gridCore) {\n this.gridCore = gridCore;\n };\n PopupService.prototype.getDocument = function () {\n return this.gridOptionsWrapper.getDocument();\n };\n PopupService.prototype.getPopupParent = function () {\n var ePopupParent = this.gridOptionsWrapper.getPopupParent();\n if (ePopupParent) {\n // user provided popup parent, may not have the right theme applied\n return ePopupParent;\n }\n return this.gridCore.getRootGui();\n };\n PopupService.prototype.positionPopupForMenu = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var eDocument = this.getDocument();\n var popupParent = this.getPopupParent();\n var parentRect;\n if (popupParent === eDocument.body) {\n parentRect = eDocument.documentElement.getBoundingClientRect();\n }\n else {\n parentRect = popupParent.getBoundingClientRect();\n }\n var y = sourceRect.top - parentRect.top;\n y = this.keepYWithinBounds(params, y);\n var minWidth = (params.ePopup.clientWidth > 0) ? params.ePopup.clientWidth : 200;\n params.ePopup.style.minWidth = minWidth + \"px\";\n var widthOfParent = parentRect.right - parentRect.left;\n var maxX = widthOfParent - minWidth;\n // the x position of the popup depends on RTL or LTR. for normal cases, LTR, we put the child popup\n // to the right, unless it doesn't fit and we then put it to the left. for RTL it's the other way around,\n // we try place it first to the left, and then if not to the right.\n var x;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, try left first\n x = xLeftPosition();\n if (x < 0) {\n x = xRightPosition();\n }\n if (x > maxX) {\n x = 0;\n }\n }\n else {\n // for LTR, try right first\n x = xRightPosition();\n if (x > maxX) {\n x = xLeftPosition();\n }\n if (x < 0) {\n x = 0;\n }\n }\n params.ePopup.style.left = x + \"px\";\n params.ePopup.style.top = y + \"px\";\n function xRightPosition() {\n return sourceRect.right - parentRect.left - 2;\n }\n function xLeftPosition() {\n return sourceRect.left - parentRect.left - minWidth;\n }\n };\n PopupService.prototype.positionPopupUnderMouseEvent = function (params) {\n var _a = this.calculatePointerAlign(params.mouseEvent), x = _a.x, y = _a.y;\n var ePopup = params.ePopup, nudgeX = params.nudgeX, nudgeY = params.nudgeY;\n this.positionPopup({\n ePopup: ePopup,\n x: x,\n y: y,\n nudgeX: nudgeX,\n nudgeY: nudgeY,\n keepWithinBounds: true\n });\n this.callPostProcessPopup(params.ePopup, null, params.mouseEvent, params.type, params.column, params.rowNode);\n };\n PopupService.prototype.calculatePointerAlign = function (e) {\n var eDocument = this.getDocument();\n var popupParent = this.getPopupParent();\n var parentRect = popupParent.getBoundingClientRect();\n var documentRect = eDocument.documentElement.getBoundingClientRect();\n return {\n x: e.clientX - (popupParent === eDocument.body ? documentRect.left : parentRect.left),\n y: e.clientY - (popupParent === eDocument.body ? documentRect.top : parentRect.top)\n };\n };\n PopupService.prototype.positionPopupUnderComponent = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var eDocument = this.getDocument();\n var popupParent = this.getPopupParent();\n var parentRect;\n if (popupParent === eDocument.body) {\n parentRect = eDocument.documentElement.getBoundingClientRect();\n }\n else {\n parentRect = popupParent.getBoundingClientRect();\n }\n this.positionPopup({\n ePopup: params.ePopup,\n minWidth: params.minWidth,\n minHeight: params.minHeight,\n nudgeX: params.nudgeX,\n nudgeY: params.nudgeY,\n x: sourceRect.left - parentRect.left,\n y: sourceRect.top - parentRect.top + sourceRect.height,\n keepWithinBounds: params.keepWithinBounds\n });\n this.callPostProcessPopup(params.ePopup, params.eventSource, null, params.type, params.column, params.rowNode);\n };\n PopupService.prototype.callPostProcessPopup = function (ePopup, eventSource, mouseEvent, type, column, rowNode) {\n var callback = this.gridOptionsWrapper.getPostProcessPopupFunc();\n if (callback) {\n var params = {\n column: column,\n rowNode: rowNode,\n ePopup: ePopup,\n type: type,\n eventSource: eventSource,\n mouseEvent: mouseEvent\n };\n callback(params);\n }\n };\n PopupService.prototype.positionPopupOverComponent = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var eDocument = this.getDocument();\n var popupParent = this.getPopupParent();\n var parentRect;\n if (popupParent === eDocument.body) {\n parentRect = eDocument.documentElement.getBoundingClientRect();\n }\n else {\n parentRect = popupParent.getBoundingClientRect();\n }\n this.positionPopup({\n ePopup: params.ePopup,\n minWidth: params.minWidth,\n nudgeX: params.nudgeX,\n nudgeY: params.nudgeY,\n x: sourceRect.left - parentRect.left,\n y: sourceRect.top - parentRect.top,\n keepWithinBounds: params.keepWithinBounds\n });\n this.callPostProcessPopup(params.ePopup, params.eventSource, null, params.type, params.column, params.rowNode);\n };\n PopupService.prototype.positionPopup = function (params) {\n var x = params.x;\n var y = params.y;\n if (params.nudgeX) {\n x += params.nudgeX;\n }\n if (params.nudgeY) {\n y += params.nudgeY;\n }\n // if popup is overflowing to the bottom, move it up\n if (params.keepWithinBounds) {\n x = this.keepXWithinBounds(params, x);\n y = this.keepYWithinBounds(params, y);\n }\n params.ePopup.style.left = x + \"px\";\n params.ePopup.style.top = y + \"px\";\n };\n PopupService.prototype.keepYWithinBounds = function (params, y) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var docElement = eDocument.documentElement;\n var popupParent = this.getPopupParent();\n var parentRect = popupParent.getBoundingClientRect();\n var documentRect = eDocument.documentElement.getBoundingClientRect();\n var isBody = popupParent === eDocument.body;\n var defaultPadding = 3;\n var minHeight = Math.min(200, parentRect.height);\n var diff = 0;\n if (params.minHeight && params.minHeight < minHeight) {\n minHeight = params.minHeight;\n }\n else if (params.ePopup.offsetHeight > 0) {\n minHeight = params.ePopup.clientHeight;\n diff = utils_1._.getAbsoluteHeight(params.ePopup) - minHeight;\n }\n var heightOfParent = isBody ? (utils_1._.getAbsoluteHeight(docElement) + docElement.scrollTop) : parentRect.height;\n if (isBody) {\n heightOfParent -= Math.abs(documentRect.top - parentRect.top);\n }\n var maxY = heightOfParent - minHeight - diff - defaultPadding;\n return Math.min(Math.max(y, 0), Math.abs(maxY));\n };\n PopupService.prototype.keepXWithinBounds = function (params, x) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var docElement = eDocument.documentElement;\n var popupParent = this.getPopupParent();\n var parentRect = popupParent.getBoundingClientRect();\n var documentRect = eDocument.documentElement.getBoundingClientRect();\n var isBody = popupParent === eDocument.body;\n var defaultPadding = 3;\n var minWidth = Math.min(200, parentRect.width);\n var diff = 0;\n if (params.minWidth && params.minWidth < minWidth) {\n minWidth = params.minWidth;\n }\n else if (params.ePopup.clientWidth > 0) {\n minWidth = params.ePopup.clientWidth;\n params.ePopup.style.minWidth = minWidth + \"px\";\n diff = utils_1._.getAbsoluteWidth(params.ePopup) - minWidth;\n }\n var widthOfParent = isBody ? (utils_1._.getAbsoluteWidth(docElement) + docElement.scrollLeft) : parentRect.width;\n if (isBody) {\n widthOfParent -= Math.abs(documentRect.left - parentRect.left);\n }\n var maxX = widthOfParent - minWidth - diff - defaultPadding;\n return Math.min(Math.max(x, 0), Math.abs(maxX));\n };\n //adds an element to a div, but also listens to background checking for clicks,\n //so that when the background is clicked, the child is removed again, giving\n //a model look to popups.\n PopupService.prototype.addAsModalPopup = function (eChild, closeOnEsc, closedCallback, click) {\n return this.addPopup(true, eChild, closeOnEsc, closedCallback, click);\n };\n PopupService.prototype.addPopup = function (modal, eChild, closeOnEsc, closedCallback, click) {\n var _this = this;\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (!eDocument) {\n console.warn('ag-grid: could not find the document, document is empty');\n return function () {\n };\n }\n eChild.style.top = '0px';\n eChild.style.left = '0px';\n var ePopupParent = this.getPopupParent();\n var popupAlreadyShown = utils_1._.isVisible(eChild);\n if (popupAlreadyShown && ePopupParent.contains(eChild)) {\n return function () { };\n }\n // add env CSS class to child, in case user provided a popup parent, which means\n // theme class may be missing\n var eWrapper = document.createElement('div');\n var theme = this.environment.getTheme();\n if (theme) {\n utils_1._.addCssClass(eWrapper, theme);\n }\n eWrapper.appendChild(eChild);\n ePopupParent.appendChild(eWrapper);\n this.activePopupElements.push(eChild);\n var popupHidden = false;\n var hidePopupOnKeyboardEvent = function (event) {\n var key = event.which || event.keyCode;\n if (key === constants_1.Constants.KEY_ESCAPE) {\n hidePopup(null);\n }\n };\n var hidePopupOnMouseEvent = function (event) {\n hidePopup(event);\n };\n var hidePopupOnTouchEvent = function (event) {\n hidePopup(null, event);\n };\n var hidePopup = function (mouseEvent, touchEvent) {\n // we don't hide popup if the event was on the child, or any\n // children of this child\n if (_this.isEventFromCurrentPopup(mouseEvent, touchEvent, eChild)) {\n return;\n }\n // if the event to close is actually the open event, then ignore it\n if (_this.isEventSameChainAsOriginalEvent(click, mouseEvent, touchEvent)) {\n return;\n }\n // this method should only be called once. the client can have different\n // paths, each one wanting to close, so this method may be called multiple times.\n if (popupHidden) {\n return;\n }\n popupHidden = true;\n ePopupParent.removeChild(eWrapper);\n utils_1._.removeFromArray(_this.activePopupElements, eChild);\n eDocument.removeEventListener('keydown', hidePopupOnKeyboardEvent);\n eDocument.removeEventListener('click', hidePopupOnMouseEvent);\n eDocument.removeEventListener('touchstart', hidePopupOnTouchEvent);\n eDocument.removeEventListener('contextmenu', hidePopupOnMouseEvent);\n _this.eventService.removeEventListener(events_1.Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n if (closedCallback) {\n closedCallback();\n }\n };\n // if we add these listeners now, then the current mouse\n // click will be included, which we don't want\n window.setTimeout(function () {\n if (closeOnEsc) {\n eDocument.addEventListener('keydown', hidePopupOnKeyboardEvent);\n }\n if (modal) {\n eDocument.addEventListener('click', hidePopupOnMouseEvent);\n _this.eventService.addEventListener(events_1.Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n eDocument.addEventListener('touchstart', hidePopupOnTouchEvent);\n eDocument.addEventListener('contextmenu', hidePopupOnMouseEvent);\n }\n }, 0);\n return hidePopup;\n };\n PopupService.prototype.isEventFromCurrentPopup = function (mouseEvent, touchEvent, eChild) {\n var event = mouseEvent ? mouseEvent : touchEvent;\n if (event) {\n var indexOfThisChild = this.activePopupElements.indexOf(eChild);\n for (var i = indexOfThisChild; i < this.activePopupElements.length; i++) {\n var element = this.activePopupElements[i];\n if (utils_1._.isElementInEventPath(element, event)) {\n return true;\n }\n }\n // if the user did not write their own Custom Element to be rendered as popup\n // and this component has additional popup element, they should have the\n // `ag-custom-component-popup` class to be detected as part of the Custom Component\n var el = event.target;\n while (el && el != document.body) {\n if (el.classList.contains('ag-custom-component-popup') || el.parentElement === null) {\n return true;\n }\n el = el.parentElement;\n }\n }\n return false;\n };\n // in some browsers, the context menu event can be fired before the click event, which means\n // the context menu event could open the popup, but then the click event closes it straight away.\n PopupService.prototype.isEventSameChainAsOriginalEvent = function (originalClick, mouseEvent, touchEvent) {\n // we check the coordinates of the event, to see if it's the same event. there is a 1 / 1000 chance that\n // the event is a different event, however that is an edge case that is not very relevant (the user clicking\n // twice on the same location isn't a normal path).\n // event could be mouse event or touch event.\n var mouseEventOrTouch = null;\n if (mouseEvent) {\n // mouse event can be used direction, it has coordinates\n mouseEventOrTouch = mouseEvent;\n }\n else if (touchEvent) {\n // touch event doesn't have coordinates, need it's touch object\n mouseEventOrTouch = touchEvent.touches[0];\n }\n if (mouseEventOrTouch && originalClick) {\n // for x, allow 4px margin, to cover iPads, where touch (which opens menu) is followed\n // by browser click (when you life finger up, touch is interrupted as click in browser)\n var screenX_1 = mouseEvent ? mouseEvent.screenX : 0;\n var screenY_1 = mouseEvent ? mouseEvent.screenY : 0;\n var xMatch = Math.abs(originalClick.screenX - screenX_1) < 5;\n var yMatch = Math.abs(originalClick.screenY - screenY_1) < 5;\n if (xMatch && yMatch) {\n return true;\n }\n }\n return false;\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], PopupService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('environment'),\n __metadata(\"design:type\", environment_1.Environment)\n ], PopupService.prototype, \"environment\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], PopupService.prototype, \"eventService\", void 0);\n PopupService = __decorate([\n context_1.Bean('popupService')\n ], PopupService);\n return PopupService;\n}());\nexports.PopupService = PopupService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../widgets/component\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar utils_1 = require(\"../utils\");\nvar FilterConditionType;\n(function (FilterConditionType) {\n FilterConditionType[FilterConditionType[\"MAIN\"] = 0] = \"MAIN\";\n FilterConditionType[FilterConditionType[\"CONDITION\"] = 1] = \"CONDITION\";\n})(FilterConditionType = exports.FilterConditionType || (exports.FilterConditionType = {}));\nvar DEFAULT_TRANSLATIONS = {\n loadingOoo: 'Loading...',\n empty: 'Choose One',\n equals: 'Equals',\n notEqual: 'Not equal',\n lessThan: 'Less than',\n greaterThan: 'Greater than',\n inRange: 'In range',\n lessThanOrEqual: 'Less than or equals',\n greaterThanOrEqual: 'Greater than or equals',\n filterOoo: 'Filter...',\n contains: 'Contains',\n notContains: 'Not contains',\n startsWith: 'Starts with',\n endsWith: 'Ends with',\n searchOoo: 'Search...',\n selectAll: 'Select All',\n applyFilter: 'Apply Filter',\n clearFilter: 'Clear Filter',\n andCondition: 'AND',\n orCondition: 'OR'\n};\n/**\n * T(ype) The type of this filter. ie in DateFilter T=Date\n * P(arams) The params that this filter can take\n * M(model getModel/setModel) The object that this filter serializes to\n * F Floating filter params\n *\n * Contains common logic to ALL filters.. Translation, apply and clear button\n * get/setModel context wiring....\n */\nvar BaseFilter = /** @class */ (function (_super) {\n __extends(BaseFilter, _super);\n function BaseFilter() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.customFilterOptions = {};\n return _this;\n }\n BaseFilter.prototype.init = function (params) {\n var _this = this;\n this.filterParams = params;\n this.defaultFilter = this.filterParams.defaultOption;\n // strip out incorrectly defined FilterOptionDefs\n if (params.filterOptions) {\n params.filterOptions.forEach(function (filterOption) {\n if (typeof filterOption === 'string') {\n return;\n }\n if (!filterOption.displayKey) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'displayKey'\");\n return;\n }\n if (!filterOption.displayName) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'displayName'\");\n return;\n }\n if (!filterOption.test) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'test'\");\n return;\n }\n _this.customFilterOptions[filterOption.displayKey] = filterOption;\n });\n }\n if (this.filterParams.filterOptions && !this.defaultFilter) {\n var firstFilterOption = this.filterParams.filterOptions[0];\n if (typeof firstFilterOption === 'string') {\n this.defaultFilter = firstFilterOption;\n }\n else if (firstFilterOption.displayKey) {\n this.defaultFilter = firstFilterOption.displayKey;\n }\n else {\n console.warn(\"ag-Grid: invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'\");\n }\n }\n this.customInit();\n this.selectedFilter = this.defaultFilter;\n this.selectedFilterCondition = this.defaultFilter;\n this.clearActive = params.clearButton === true;\n //Allowing for old param property apply, even though is not advertised through the interface\n this.applyActive = ((params.applyButton === true) || (params.apply === true));\n this.newRowsActionKeep = params.newRowsAction === 'keep';\n this.setTemplate(this.generateTemplate());\n utils_1._.setVisible(this.eApplyButton, this.applyActive);\n if (this.applyActive) {\n this.addDestroyableEventListener(this.eApplyButton, \"click\", this.filterParams.filterChangedCallback);\n }\n utils_1._.setVisible(this.eClearButton, this.clearActive);\n if (this.clearActive) {\n this.addDestroyableEventListener(this.eClearButton, \"click\", this.onClearButton.bind(this));\n }\n var anyButtonVisible = this.applyActive || this.clearActive;\n utils_1._.setVisible(this.eButtonsPanel, anyButtonVisible);\n this.initialiseFilterBodyUi(FilterConditionType.MAIN);\n this.refreshFilterBodyUi(FilterConditionType.MAIN);\n };\n BaseFilter.prototype.onClearButton = function () {\n this.setModel(null);\n this.onFilterChanged();\n };\n BaseFilter.prototype.floatingFilter = function (from) {\n if (from !== '') {\n var model = this.modelFromFloatingFilter(from);\n this.setModel(model);\n }\n else {\n this.resetState();\n }\n this.onFilterChanged();\n };\n BaseFilter.prototype.onNewRowsLoaded = function () {\n if (!this.newRowsActionKeep) {\n this.resetState();\n }\n };\n BaseFilter.prototype.getModel = function () {\n if (this.isFilterActive()) {\n if (!this.isFilterConditionActive(FilterConditionType.CONDITION)) {\n return this.serialize(FilterConditionType.MAIN);\n }\n else {\n return {\n condition1: this.serialize(FilterConditionType.MAIN),\n condition2: this.serialize(FilterConditionType.CONDITION),\n operator: this.conditionValue\n };\n }\n }\n else {\n return null;\n }\n };\n BaseFilter.prototype.getNullableModel = function () {\n if (!this.isFilterConditionActive(FilterConditionType.CONDITION)) {\n return this.serialize(FilterConditionType.MAIN);\n }\n else {\n return {\n condition1: this.serialize(FilterConditionType.MAIN),\n condition2: this.serialize(FilterConditionType.CONDITION),\n operator: this.conditionValue\n };\n }\n };\n BaseFilter.prototype.setModel = function (model) {\n if (model) {\n if (!model.operator) {\n this.resetState();\n this.parse(model, FilterConditionType.MAIN);\n }\n else {\n var asCombinedFilter = model;\n this.parse((asCombinedFilter).condition1, FilterConditionType.MAIN);\n this.parse((asCombinedFilter).condition2, FilterConditionType.CONDITION);\n this.conditionValue = asCombinedFilter.operator;\n }\n }\n else {\n this.resetState();\n }\n this.redrawCondition();\n this.refreshFilterBodyUi(FilterConditionType.MAIN);\n this.refreshFilterBodyUi(FilterConditionType.CONDITION);\n };\n BaseFilter.prototype.doOnFilterChanged = function (applyNow) {\n if (applyNow === void 0) { applyNow = false; }\n this.filterParams.filterModifiedCallback();\n var requiresApplyAndIsApplying = this.applyActive && applyNow;\n var notRequiresApply = !this.applyActive;\n var shouldFilter = notRequiresApply || requiresApplyAndIsApplying;\n if (shouldFilter) {\n this.filterParams.filterChangedCallback();\n }\n this.refreshFilterBodyUi(FilterConditionType.MAIN);\n this.refreshFilterBodyUi(FilterConditionType.CONDITION);\n return shouldFilter;\n };\n BaseFilter.prototype.onFilterChanged = function (applyNow) {\n if (applyNow === void 0) { applyNow = false; }\n this.doOnFilterChanged(applyNow);\n this.redrawCondition();\n this.refreshFilterBodyUi(FilterConditionType.MAIN);\n this.refreshFilterBodyUi(FilterConditionType.CONDITION);\n };\n BaseFilter.prototype.redrawCondition = function () {\n var _this = this;\n var filterCondition = this.eFilterBodyWrapper.querySelector('.ag-filter-condition');\n if (!filterCondition && this.isFilterActive() && this.acceptsBooleanLogic()) {\n this.eConditionWrapper = utils_1._.loadTemplate(this.createConditionTemplate(FilterConditionType.CONDITION));\n this.eFilterBodyWrapper.appendChild(this.eConditionWrapper);\n this.wireQuerySelectors();\n var _a = this.refreshOperatorUi(), andButton = _a.andButton, orButton = _a.orButton;\n this.addDestroyableEventListener(andButton, 'change', function () {\n _this.conditionValue = 'AND';\n _this.onFilterChanged();\n });\n this.addDestroyableEventListener(orButton, 'change', function () {\n _this.conditionValue = 'OR';\n _this.onFilterChanged();\n });\n this.initialiseFilterBodyUi(FilterConditionType.CONDITION);\n }\n else if (filterCondition && !this.isFilterActive()) {\n // reset condition filter state\n this.conditionValue = 'AND';\n this.resetState(true);\n this.eFilterBodyWrapper.removeChild(this.eConditionWrapper);\n this.eConditionWrapper = null;\n }\n else {\n this.refreshFilterBodyUi(FilterConditionType.CONDITION);\n if (this.eConditionWrapper) {\n this.refreshOperatorUi();\n }\n }\n };\n BaseFilter.prototype.refreshOperatorUi = function () {\n var andButton = this.eConditionWrapper.querySelector('.and');\n var orButton = this.eConditionWrapper.querySelector('.or');\n this.conditionValue = this.conditionValue == null ? 'AND' : this.conditionValue;\n andButton.checked = this.conditionValue === 'AND';\n orButton.checked = this.conditionValue === 'OR';\n return { andButton: andButton, orButton: orButton };\n };\n BaseFilter.prototype.onFloatingFilterChanged = function (change) {\n //It has to be of the type FloatingFilterWithApplyChange if it gets here\n var casted = change;\n if (casted == null) {\n this.setModel(null);\n }\n else if (!this.isFilterConditionActive(FilterConditionType.CONDITION)) {\n this.setModel(casted ? casted.model : null);\n }\n else {\n var combinedFilter = {\n condition1: casted.model,\n condition2: this.serialize(FilterConditionType.CONDITION),\n operator: this.conditionValue\n };\n this.setModel(combinedFilter);\n }\n return this.doOnFilterChanged(casted ? casted.apply : false);\n };\n BaseFilter.prototype.generateFilterHeader = function (type) {\n return '';\n };\n BaseFilter.prototype.generateTemplate = function () {\n var translate = this.translate.bind(this);\n var mainConditionBody = this.createConditionBody(FilterConditionType.MAIN);\n var bodyWithBooleanLogic = !this.acceptsBooleanLogic() ?\n mainConditionBody :\n this.wrapCondition(mainConditionBody);\n return \"
\\n
\" + bodyWithBooleanLogic + \"
\\n
\\n \\n \\n
\\n
\";\n };\n BaseFilter.prototype.acceptsBooleanLogic = function () {\n return false;\n };\n BaseFilter.prototype.wrapCondition = function (mainCondition) {\n if (!this.isFilterActive()) {\n return mainCondition;\n }\n return \"\" + mainCondition + this.createConditionTemplate(FilterConditionType.CONDITION);\n };\n BaseFilter.prototype.createConditionTemplate = function (type) {\n return \"
\\n \\n \\n
\" + this.createConditionBody(type) + \"
\\n
\";\n };\n BaseFilter.prototype.createConditionBody = function (type) {\n var body = this.bodyTemplate(type);\n return this.generateFilterHeader(type) + body;\n };\n BaseFilter.prototype.translate = function (toTranslate) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var defaultTranslation = DEFAULT_TRANSLATIONS[toTranslate];\n if (!defaultTranslation && this.customFilterOptions[toTranslate]) {\n defaultTranslation = this.customFilterOptions[toTranslate].displayName;\n }\n return translate(toTranslate, defaultTranslation);\n };\n BaseFilter.prototype.getDebounceMs = function (filterParams) {\n if (this.applyActive) {\n if (filterParams.debounceMs != null) {\n console.warn('ag-Grid: debounceMs is ignored when applyButton = true');\n }\n return 0;\n }\n return filterParams.debounceMs != null ? filterParams.debounceMs : 500;\n };\n BaseFilter.prototype.doesFilterHaveHiddenInput = function (filterType) {\n var customFilterOption = this.customFilterOptions[filterType];\n return customFilterOption && customFilterOption.hideFilterInput;\n };\n BaseFilter.EMPTY = 'empty';\n BaseFilter.EQUALS = 'equals';\n BaseFilter.NOT_EQUAL = 'notEqual';\n BaseFilter.LESS_THAN = 'lessThan';\n BaseFilter.LESS_THAN_OR_EQUAL = 'lessThanOrEqual';\n BaseFilter.GREATER_THAN = 'greaterThan';\n BaseFilter.GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';\n BaseFilter.IN_RANGE = 'inRange';\n BaseFilter.CONTAINS = 'contains'; //1;\n BaseFilter.NOT_CONTAINS = 'notContains'; //1;\n BaseFilter.STARTS_WITH = 'startsWith'; //4;\n BaseFilter.ENDS_WITH = 'endsWith'; //5;\n __decorate([\n componentAnnotations_1.QuerySelector('#applyPanel'),\n __metadata(\"design:type\", HTMLElement)\n ], BaseFilter.prototype, \"eButtonsPanel\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('.ag-filter-body-wrapper'),\n __metadata(\"design:type\", HTMLElement)\n ], BaseFilter.prototype, \"eFilterBodyWrapper\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#applyButton'),\n __metadata(\"design:type\", HTMLElement)\n ], BaseFilter.prototype, \"eApplyButton\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#clearButton'),\n __metadata(\"design:type\", HTMLElement)\n ], BaseFilter.prototype, \"eClearButton\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], BaseFilter.prototype, \"gridOptionsWrapper\", void 0);\n return BaseFilter;\n}(component_1.Component));\nexports.BaseFilter = BaseFilter;\n/**\n * Every filter with a dropdown where the user can specify a comparing type against the filter values\n */\nvar ComparableBaseFilter = /** @class */ (function (_super) {\n __extends(ComparableBaseFilter, _super);\n function ComparableBaseFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComparableBaseFilter.prototype.doesFilterPass = function (params) {\n var mainFilterResult = this.individualFilterPasses(params, FilterConditionType.MAIN);\n if (this.eTypeConditionSelector == null) {\n return mainFilterResult;\n }\n var auxFilterResult = this.individualFilterPasses(params, FilterConditionType.CONDITION);\n return this.conditionValue === 'AND' ? mainFilterResult && auxFilterResult : mainFilterResult || auxFilterResult;\n };\n ComparableBaseFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.suppressAndOrCondition = params.suppressAndOrCondition;\n };\n ComparableBaseFilter.prototype.customInit = function () {\n if (!this.defaultFilter) {\n this.defaultFilter = this.getDefaultType();\n }\n };\n ComparableBaseFilter.prototype.acceptsBooleanLogic = function () {\n return this.suppressAndOrCondition !== true;\n };\n ComparableBaseFilter.prototype.generateFilterHeader = function (type) {\n var _this = this;\n var defaultFilterTypes = this.getApplicableFilterTypes();\n var restrictedFilterTypes = this.filterParams.filterOptions;\n var actualFilterTypes = restrictedFilterTypes ? restrictedFilterTypes : defaultFilterTypes;\n var optionsHtml = actualFilterTypes.map(function (filter) {\n var filterName = (typeof filter === 'string') ? filter : filter.displayKey;\n var localeFilterName = _this.translate(filterName);\n return \"\";\n });\n var readOnly = optionsHtml.length == 1 ? 'disabled' : '';\n var id = type == FilterConditionType.MAIN ? 'filterType' : 'filterConditionType';\n return optionsHtml.length <= 0 ?\n '' :\n \"
\\n \\n
\";\n };\n ComparableBaseFilter.prototype.initialiseFilterBodyUi = function (type) {\n var _this = this;\n if (type === FilterConditionType.MAIN) {\n this.setFilterType(this.selectedFilter, type);\n this.addDestroyableEventListener(this.eTypeSelector, \"change\", function () { return _this.onFilterTypeChanged(type); });\n }\n else {\n this.setFilterType(this.selectedFilterCondition, type);\n this.addDestroyableEventListener(this.eTypeConditionSelector, \"change\", function () { return _this.onFilterTypeChanged(type); });\n }\n };\n ComparableBaseFilter.prototype.onFilterTypeChanged = function (type) {\n var prevSelectedFilter = this.selectedFilter;\n if (type === FilterConditionType.MAIN) {\n this.selectedFilter = this.eTypeSelector.value;\n }\n else {\n this.selectedFilterCondition = this.eTypeConditionSelector.value;\n }\n this.refreshFilterBodyUi(type);\n var prevSelectedFilterHadNoInput = this.doesFilterHaveHiddenInput(prevSelectedFilter);\n // only fire 'onFilterChanged' event if filter is active, as in it contains a filter value, or if the previously\n // selected filter didn't require a value, i.e. if custom filter has 'hideFilterInputField = true'\n if (this.isFilterActive() || prevSelectedFilterHadNoInput) {\n // reset when switching back to the empty filter to remove conditional filter\n if (this.selectedFilter === BaseFilter.EMPTY) {\n this.resetState();\n }\n this.onFilterChanged();\n }\n };\n ComparableBaseFilter.prototype.isFilterActive = function () {\n // the main selected filter is always active when there is no input field\n if (this.doesFilterHaveHiddenInput(this.selectedFilter)) {\n return true;\n }\n var rawFilterValues = this.filterValues(FilterConditionType.MAIN);\n if (rawFilterValues && this.selectedFilter === BaseFilter.IN_RANGE) {\n var filterValueArray = rawFilterValues;\n return filterValueArray[0] != null && filterValueArray[1] != null;\n }\n else {\n return rawFilterValues != null;\n }\n };\n ComparableBaseFilter.prototype.setFilterType = function (filterType, type) {\n if (type === FilterConditionType.MAIN) {\n this.selectedFilter = filterType;\n if (!this.eTypeSelector) {\n return;\n }\n this.eTypeSelector.value = filterType;\n }\n else {\n this.selectedFilterCondition = filterType;\n if (!this.eTypeConditionSelector) {\n return;\n }\n this.eTypeConditionSelector.value = filterType;\n }\n };\n ComparableBaseFilter.prototype.isFilterConditionActive = function (type) {\n return this.filterValues(type) != null;\n };\n __decorate([\n componentAnnotations_1.QuerySelector('#filterType'),\n __metadata(\"design:type\", HTMLSelectElement)\n ], ComparableBaseFilter.prototype, \"eTypeSelector\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#filterConditionType'),\n __metadata(\"design:type\", HTMLSelectElement)\n ], ComparableBaseFilter.prototype, \"eTypeConditionSelector\", void 0);\n return ComparableBaseFilter;\n}(BaseFilter));\nexports.ComparableBaseFilter = ComparableBaseFilter;\n/**\n * Comparable filter with scalar underlying values (ie numbers and dates. Strings are not scalar so have to extend\n * ComparableBaseFilter)\n */\nvar ScalarBaseFilter = /** @class */ (function (_super) {\n __extends(ScalarBaseFilter, _super);\n function ScalarBaseFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ScalarBaseFilter.prototype.nullComparator = function (type) {\n var _this = this;\n return function (filterValue, gridValue) {\n if (gridValue == null) {\n var nullValue = _this.translateNull(type);\n if (_this.selectedFilter === BaseFilter.EMPTY) {\n return 0;\n }\n if (_this.selectedFilter === BaseFilter.EQUALS) {\n return nullValue ? 0 : 1;\n }\n if (_this.selectedFilter === BaseFilter.GREATER_THAN) {\n return nullValue ? 1 : -1;\n }\n if (_this.selectedFilter === BaseFilter.GREATER_THAN_OR_EQUAL) {\n return nullValue ? 1 : -1;\n }\n if (_this.selectedFilter === BaseFilter.LESS_THAN_OR_EQUAL) {\n return nullValue ? -1 : 1;\n }\n if (_this.selectedFilter === BaseFilter.LESS_THAN) {\n return nullValue ? -1 : 1;\n }\n if (_this.selectedFilter === BaseFilter.NOT_EQUAL) {\n return nullValue ? 1 : 0;\n }\n }\n var actualComparator = _this.comparator();\n return actualComparator(filterValue, gridValue);\n };\n };\n ScalarBaseFilter.prototype.getDefaultType = function () {\n return BaseFilter.EQUALS;\n };\n ScalarBaseFilter.prototype.translateNull = function (type) {\n var reducedType = type.indexOf('greater') > -1 ? 'greaterThan' :\n type.indexOf('lessThan') > -1 ? 'lessThan' :\n 'equals';\n if (this.filterParams.nullComparator && this.filterParams.nullComparator[reducedType]) {\n return this.filterParams.nullComparator[reducedType];\n }\n return ScalarBaseFilter.DEFAULT_NULL_COMPARATOR[reducedType];\n };\n ScalarBaseFilter.prototype.individualFilterPasses = function (params, type) {\n return this.doIndividualFilterPasses(params, type, type === FilterConditionType.MAIN ? this.selectedFilter : this.selectedFilterCondition);\n };\n ScalarBaseFilter.prototype.doIndividualFilterPasses = function (params, type, filter) {\n var cellValue = this.filterParams.valueGetter(params.node);\n var rawFilterValues = this.filterValues(type);\n var filterValue = Array.isArray(rawFilterValues) ? rawFilterValues[0] : rawFilterValues;\n var customFilterOption = this.customFilterOptions[filter];\n if (customFilterOption) {\n // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden\n if (filterValue != null || customFilterOption.hideFilterInput) {\n return customFilterOption.test(filterValue, cellValue);\n }\n }\n if (filterValue == null) {\n return type === FilterConditionType.MAIN ? true : this.conditionValue === 'AND';\n }\n var comparator = this.nullComparator(filter);\n var compareResult = comparator(filterValue, cellValue);\n if (filter === BaseFilter.EMPTY) {\n return false;\n }\n if (filter === BaseFilter.EQUALS) {\n return compareResult === 0;\n }\n if (filter === BaseFilter.GREATER_THAN) {\n return compareResult > 0;\n }\n if (filter === BaseFilter.GREATER_THAN_OR_EQUAL) {\n return compareResult >= 0;\n }\n if (filter === BaseFilter.LESS_THAN_OR_EQUAL) {\n return compareResult <= 0;\n }\n if (filter === BaseFilter.LESS_THAN) {\n return compareResult < 0;\n }\n if (filter === BaseFilter.NOT_EQUAL) {\n return compareResult != 0;\n }\n //From now on the type is a range and rawFilterValues must be an array!\n var compareToResult = comparator(rawFilterValues[1], cellValue);\n if (filter === BaseFilter.IN_RANGE) {\n if (!this.filterParams.inRangeInclusive) {\n return compareResult > 0 && compareToResult < 0;\n }\n else {\n return compareResult >= 0 && compareToResult <= 0;\n }\n }\n throw new Error('Unexpected type of filter: ' + filter);\n };\n ScalarBaseFilter.DEFAULT_NULL_COMPARATOR = {\n equals: false,\n lessThan: false,\n greaterThan: false\n };\n return ScalarBaseFilter;\n}(ComparableBaseFilter));\nexports.ScalarBaseFilter = ScalarBaseFilter;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar utils_1 = require(\"../utils\");\n/**\n * There are many instances of this component covering each of the areas a row can be entered\n * eg body, pinned left, fullWidth. The component differs from others in that it's given the\n * elements, there is no template. All of the elements are part of the GridPanel.\n */\nvar RowContainerComponent = /** @class */ (function () {\n function RowContainerComponent(params) {\n this.childCount = 0;\n this.rowTemplatesToAdd = [];\n this.afterGuiAttachedCallbacks = [];\n // this is to cater for a 'strange behaviour' where when a panel is made visible, it is firing a scroll\n // event which we want to ignore. see gridPanel.onAnyBodyScroll()\n this.lastMadeVisibleTime = 0;\n this.eContainer = params.eContainer;\n this.eViewport = params.eViewport;\n if (params.eWrapper) {\n this.eWrapper = params.eWrapper;\n }\n this.hideWhenNoChildren = params.hideWhenNoChildren;\n }\n RowContainerComponent.prototype.setVerticalScrollPosition = function (verticalScrollPosition) {\n this.scrollTop = verticalScrollPosition;\n };\n RowContainerComponent.prototype.postConstruct = function () {\n this.checkDomOrder();\n this.checkVisibility();\n this.gridOptionsWrapper.addEventListener(gridOptionsWrapper_1.GridOptionsWrapper.PROP_DOM_LAYOUT, this.checkDomOrder.bind(this));\n };\n RowContainerComponent.prototype.checkDomOrder = function () {\n this.domOrder = this.gridOptionsWrapper.isEnsureDomOrder();\n };\n RowContainerComponent.prototype.getRowElement = function (compId) {\n return this.eContainer.querySelector(\"[comp-id=\\\"\" + compId + \"\\\"]\");\n };\n RowContainerComponent.prototype.setHeight = function (height) {\n if (height == null) {\n this.eContainer.style.height = '';\n return;\n }\n this.eContainer.style.height = height + \"px\";\n if (this.eWrapper) {\n this.eWrapper.style.height = height + \"px\";\n }\n };\n RowContainerComponent.prototype.flushRowTemplates = function () {\n // if doing dom order, then rowTemplates will be empty,\n // or if no rows added since last time also empty.\n if (this.rowTemplatesToAdd.length !== 0) {\n var htmlToAdd = this.rowTemplatesToAdd.join('');\n utils_1._.appendHtml(this.eContainer, htmlToAdd);\n this.rowTemplatesToAdd.length = 0;\n }\n // this only empty if no rows since last time, as when\n // doing dom order, we still have callbacks to process\n this.afterGuiAttachedCallbacks.forEach(function (func) { return func(); });\n this.afterGuiAttachedCallbacks.length = 0;\n this.lastPlacedElement = null;\n };\n RowContainerComponent.prototype.appendRowTemplate = function (rowTemplate, callback) {\n if (this.domOrder) {\n this.lastPlacedElement = utils_1._.insertTemplateWithDomOrder(this.eContainer, rowTemplate, this.lastPlacedElement);\n }\n else {\n this.rowTemplatesToAdd.push(rowTemplate);\n }\n this.afterGuiAttachedCallbacks.push(callback);\n // it is important we put items in in order, so that when we open a row group,\n // the new rows are inserted after the opened group, but before the rows below.\n // that way, the rows below are over the new rows (as dom renders last in dom over\n // items previous in dom), otherwise the child rows would cover the row below and\n // that meant the user doesn't see the rows below slide away.\n this.childCount++;\n this.checkVisibility();\n };\n RowContainerComponent.prototype.ensureDomOrder = function (eRow) {\n if (this.domOrder) {\n utils_1._.ensureDomOrder(this.eContainer, eRow, this.lastPlacedElement);\n this.lastPlacedElement = eRow;\n }\n };\n RowContainerComponent.prototype.removeRowElement = function (eRow) {\n this.eContainer.removeChild(eRow);\n this.childCount--;\n this.checkVisibility();\n };\n RowContainerComponent.prototype.checkVisibility = function () {\n if (!this.hideWhenNoChildren) {\n return;\n }\n var eGui = this.eViewport ? this.eViewport : this.eContainer;\n var visible = this.childCount > 0;\n if (this.visible !== visible) {\n this.visible = visible;\n this.lastMadeVisibleTime = new Date().getTime();\n utils_1._.setVisible(eGui, visible);\n // if we are showing the viewport, then the scroll is always zero,\n // so we need to align with the other sections (ie if this is full\n // width container, and first time showing a full width row, we need to\n // scroll it so full width rows are show in right place alongside the\n // body rows). without this, there was an issue with 'loading rows' for\n // server side row model, as loading rows are full width, and they were\n // not getting displayed in the right location when rows were expanded.\n if (visible && this.eViewport) {\n this.eViewport.scrollTop = this.scrollTop;\n }\n }\n };\n RowContainerComponent.prototype.isMadeVisibleRecently = function () {\n var now = new Date().getTime();\n var millisSinceVisible = now - this.lastMadeVisibleTime;\n return millisSinceVisible < 500;\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], RowContainerComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], RowContainerComponent.prototype, \"postConstruct\", null);\n return RowContainerComponent;\n}());\nexports.RowContainerComponent = RowContainerComponent;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rowNodeBlock_1 = require(\"./rowNodeBlock\");\nvar logger_1 = require(\"../../logger\");\nvar context_1 = require(\"../../context/context\");\nvar utils_1 = require(\"../../utils\");\nvar RowNodeBlockLoader = /** @class */ (function () {\n function RowNodeBlockLoader(maxConcurrentRequests, blockLoadDebounceMillis) {\n this.activeBlockLoadsCount = 0;\n this.blocks = [];\n this.active = true;\n this.maxConcurrentRequests = maxConcurrentRequests;\n if (blockLoadDebounceMillis && blockLoadDebounceMillis > 0) {\n this.checkBlockToLoadDebounce = utils_1._.debounce(this.performCheckBlocksToLoad.bind(this), blockLoadDebounceMillis);\n }\n }\n RowNodeBlockLoader.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('RowNodeBlockLoader');\n };\n RowNodeBlockLoader.prototype.addBlock = function (block) {\n this.blocks.push(block);\n };\n RowNodeBlockLoader.prototype.removeBlock = function (block) {\n utils_1._.removeFromArray(this.blocks, block);\n };\n RowNodeBlockLoader.prototype.destroy = function () {\n this.active = false;\n };\n RowNodeBlockLoader.prototype.loadComplete = function () {\n this.activeBlockLoadsCount--;\n };\n RowNodeBlockLoader.prototype.checkBlockToLoad = function () {\n if (this.checkBlockToLoadDebounce) {\n this.checkBlockToLoadDebounce();\n }\n else {\n this.performCheckBlocksToLoad();\n }\n };\n RowNodeBlockLoader.prototype.performCheckBlocksToLoad = function () {\n if (!this.active) {\n return;\n }\n this.printCacheStatus();\n if (this.activeBlockLoadsCount >= this.maxConcurrentRequests) {\n this.logger.log(\"checkBlockToLoad: max loads exceeded\");\n return;\n }\n var blockToLoad = null;\n this.blocks.forEach(function (block) {\n if (block.getState() === rowNodeBlock_1.RowNodeBlock.STATE_DIRTY) {\n blockToLoad = block;\n }\n });\n if (blockToLoad) {\n blockToLoad.load();\n this.activeBlockLoadsCount++;\n this.logger.log(\"checkBlockToLoad: loading page \" + blockToLoad.getBlockNumber());\n this.printCacheStatus();\n }\n else {\n this.logger.log(\"checkBlockToLoad: no pages to load\");\n }\n };\n RowNodeBlockLoader.prototype.getBlockState = function () {\n var result = {};\n this.blocks.forEach(function (block) {\n var nodeIdPrefix = block.getNodeIdPrefix();\n var stateItem = {\n blockNumber: block.getBlockNumber(),\n startRow: block.getStartRow(),\n endRow: block.getEndRow(),\n pageStatus: block.getState()\n };\n if (utils_1._.exists(nodeIdPrefix)) {\n result[nodeIdPrefix + block.getBlockNumber()] = stateItem;\n }\n else {\n result[block.getBlockNumber()] = stateItem;\n }\n });\n return result;\n };\n RowNodeBlockLoader.prototype.printCacheStatus = function () {\n if (this.logger.isLogging()) {\n this.logger.log(\"printCacheStatus: activePageLoadsCount = \" + this.activeBlockLoadsCount + \",\"\n + (\" blocks = \" + JSON.stringify(this.getBlockState())));\n }\n };\n __decorate([\n __param(0, context_1.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], RowNodeBlockLoader.prototype, \"setBeans\", null);\n return RowNodeBlockLoader;\n}());\nexports.RowNodeBlockLoader = RowNodeBlockLoader;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar eventService_1 = require(\"../../eventService\");\nvar events_1 = require(\"../../events\");\nvar rowRenderer_1 = require(\"../../rendering/rowRenderer\");\nvar paginationProxy_1 = require(\"../paginationProxy\");\nvar utils_1 = require(\"../../utils\");\nvar PaginationComp = /** @class */ (function (_super) {\n __extends(PaginationComp, _super);\n function PaginationComp() {\n return _super.call(this) || this;\n }\n PaginationComp.prototype.postConstruct = function () {\n this.setTemplate(this.getTemplate());\n var isPaging = this.gridOptionsWrapper.isPagination();\n var paginationPanelEnabled = isPaging && !this.gridOptionsWrapper.isSuppressPaginationPanel();\n if (!paginationPanelEnabled) {\n this.setVisible(false);\n return;\n }\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n this.addDestroyableEventListener(this.btFirst, 'click', this.onBtFirst.bind(this));\n this.addDestroyableEventListener(this.btLast, 'click', this.onBtLast.bind(this));\n this.addDestroyableEventListener(this.btNext, 'click', this.onBtNext.bind(this));\n this.addDestroyableEventListener(this.btPrevious, 'click', this.onBtPrevious.bind(this));\n this.onPaginationChanged();\n };\n PaginationComp.prototype.onPaginationChanged = function () {\n this.enableOrDisableButtons();\n this.updateRowLabels();\n this.setCurrentPageLabel();\n this.setTotalLabels();\n };\n PaginationComp.prototype.setCurrentPageLabel = function () {\n var pagesExist = this.paginationProxy.getTotalPages() > 0;\n var currentPage = this.paginationProxy.getCurrentPage();\n var toDisplay = pagesExist ? currentPage + 1 : 0;\n this.lbCurrent.innerHTML = this.formatNumber(toDisplay);\n };\n PaginationComp.prototype.formatNumber = function (value) {\n var userFunc = this.gridOptionsWrapper.getPaginationNumberFormatterFunc();\n if (userFunc) {\n return userFunc({ value: value });\n }\n else {\n return utils_1._.formatNumberCommas(value);\n }\n };\n PaginationComp.prototype.getTemplate = function () {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var strPage = localeTextFunc('page', 'Page');\n var strTo = localeTextFunc('to', 'to');\n var strOf = localeTextFunc('of', 'of');\n var strFirst = localeTextFunc('first', 'First');\n var strPrevious = localeTextFunc('previous', 'Previous');\n var strNext = localeTextFunc('next', 'Next');\n var strLast = localeTextFunc('last', 'Last');\n return \"
\\n \\n \" + strTo + \" \" + strOf + \" \\n \\n \\n \\n \\n \" + strPage + \" \" + strOf + \" \\n \\n \\n \\n
\";\n };\n PaginationComp.prototype.onBtNext = function () {\n this.paginationProxy.goToNextPage();\n };\n PaginationComp.prototype.onBtPrevious = function () {\n this.paginationProxy.goToPreviousPage();\n };\n PaginationComp.prototype.onBtFirst = function () {\n this.paginationProxy.goToFirstPage();\n };\n PaginationComp.prototype.onBtLast = function () {\n this.paginationProxy.goToLastPage();\n };\n PaginationComp.prototype.enableOrDisableButtons = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n var disablePreviousAndFirst = currentPage === 0;\n this.btPrevious.disabled = disablePreviousAndFirst;\n this.btFirst.disabled = disablePreviousAndFirst;\n var zeroPagesToDisplay = this.isZeroPagesToDisplay();\n var onLastPage = maxRowFound && currentPage === (totalPages - 1);\n var disableNext = onLastPage || zeroPagesToDisplay;\n this.btNext.disabled = disableNext;\n var disableLast = !maxRowFound || zeroPagesToDisplay || currentPage === (totalPages - 1);\n this.btLast.disabled = disableLast;\n };\n PaginationComp.prototype.updateRowLabels = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var pageSize = this.paginationProxy.getPageSize();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var rowCount = this.paginationProxy.isLastPageFound() ?\n this.paginationProxy.getTotalRowCount() : null;\n var startRow;\n var endRow;\n if (this.isZeroPagesToDisplay()) {\n startRow = 0;\n endRow = 0;\n }\n else {\n startRow = (pageSize * currentPage) + 1;\n endRow = startRow + pageSize - 1;\n if (maxRowFound && endRow > rowCount) {\n endRow = rowCount;\n }\n }\n this.lbFirstRowOnPage.innerHTML = this.formatNumber(startRow);\n this.lbLastRowOnPage.innerHTML = this.formatNumber(endRow);\n };\n PaginationComp.prototype.isZeroPagesToDisplay = function () {\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n return maxRowFound && totalPages === 0;\n };\n PaginationComp.prototype.setTotalLabels = function () {\n var lastPageFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n var rowCount = this.paginationProxy.isLastPageFound() ?\n this.paginationProxy.getTotalRowCount() : null;\n if (lastPageFound) {\n this.lbTotal.innerHTML = this.formatNumber(totalPages);\n this.lbRecordCount.innerHTML = this.formatNumber(rowCount);\n }\n else {\n var moreText = this.gridOptionsWrapper.getLocaleTextFunc()('more', 'more');\n this.lbTotal.innerHTML = moreText;\n this.lbRecordCount.innerHTML = moreText;\n }\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], PaginationComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], PaginationComp.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('paginationProxy'),\n __metadata(\"design:type\", paginationProxy_1.PaginationProxy)\n ], PaginationComp.prototype, \"paginationProxy\", void 0);\n __decorate([\n context_1.Autowired('rowRenderer'),\n __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n ], PaginationComp.prototype, \"rowRenderer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('btFirst'),\n __metadata(\"design:type\", HTMLButtonElement)\n ], PaginationComp.prototype, \"btFirst\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('btPrevious'),\n __metadata(\"design:type\", HTMLButtonElement)\n ], PaginationComp.prototype, \"btPrevious\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('btNext'),\n __metadata(\"design:type\", HTMLButtonElement)\n ], PaginationComp.prototype, \"btNext\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('btLast'),\n __metadata(\"design:type\", HTMLButtonElement)\n ], PaginationComp.prototype, \"btLast\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('lbRecordCount'),\n __metadata(\"design:type\", Object)\n ], PaginationComp.prototype, \"lbRecordCount\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('lbFirstRowOnPage'),\n __metadata(\"design:type\", Object)\n ], PaginationComp.prototype, \"lbFirstRowOnPage\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('lbLastRowOnPage'),\n __metadata(\"design:type\", Object)\n ], PaginationComp.prototype, \"lbLastRowOnPage\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eSummaryPanel'),\n __metadata(\"design:type\", Object)\n ], PaginationComp.prototype, \"eSummaryPanel\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('lbCurrent'),\n __metadata(\"design:type\", Object)\n ], PaginationComp.prototype, \"lbCurrent\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('lbTotal'),\n __metadata(\"design:type\", Object)\n ], PaginationComp.prototype, \"lbTotal\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], PaginationComp.prototype, \"postConstruct\", null);\n return PaginationComp;\n}(component_1.Component));\nexports.PaginationComp = PaginationComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar popupService_1 = require(\"./popupService\");\nvar userComponentFactory_1 = require(\"../components/framework/userComponentFactory\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar utils_1 = require(\"../utils\");\nvar TooltipManager = /** @class */ (function () {\n function TooltipManager() {\n this.DEFAULT_HIDE_TOOLTIP_TIMEOUT = 10000;\n this.MOUSEOUT_HIDE_TOOLTIP_TIMEOUT = 1000;\n this.MOUSEOVER_SHOW_TOOLTIP_TIMEOUT = 2000;\n this.HIDE_SHOW_ONLY = true;\n this.showTimeoutId = 0;\n this.hideTimeoutId = 0;\n // map of compId to [tooltip component, close function]\n this.registeredComponents = {};\n }\n TooltipManager.prototype.registerTooltip = function (targetCmp) {\n var _this = this;\n var el = targetCmp.getGui();\n var id = targetCmp.getCompId();\n targetCmp.addDestroyableEventListener(el, 'mouseover', function (e) { return _this.processMouseOver(e, targetCmp); });\n targetCmp.addDestroyableEventListener(el, 'mousemove', function (e) { return _this.processMouseMove(e); });\n targetCmp.addDestroyableEventListener(el, 'mousedown', this.hideTooltip.bind(this));\n targetCmp.addDestroyableEventListener(el, 'mouseout', this.processMouseOut.bind(this));\n this.registeredComponents[id] = { tooltipComp: undefined, destroyFunc: undefined };\n targetCmp.addDestroyFunc(function () { return _this.unregisterTooltip(targetCmp); });\n };\n TooltipManager.prototype.unregisterTooltip = function (targetCmp) {\n var id = targetCmp.getCompId();\n // hide the tooltip if it's being displayed while unregistering the component\n if (this.activeComponent === targetCmp) {\n this.hideTooltip();\n }\n delete this.registeredComponents[id];\n };\n TooltipManager.prototype.processMouseOver = function (e, targetCmp) {\n var delay = this.MOUSEOVER_SHOW_TOOLTIP_TIMEOUT;\n if (this.activeComponent) {\n // lastHoveredComponent will be the activeComponent when we are hovering\n // a component with many child elements like the grid header\n if (this.lastHoveredComponent === this.activeComponent) {\n return;\n }\n delay = 200;\n }\n else if (this.showTimeoutId && this.lastHoveredComponent === targetCmp) {\n return;\n }\n this.clearTimers(this.HIDE_SHOW_ONLY);\n // lastHoveredComponent will be the targetCmp when a click hid the tooltip\n // and the lastHoveredComponent has many child elements\n if (this.lastHoveredComponent === targetCmp) {\n return;\n }\n this.lastHoveredComponent = targetCmp;\n this.lastMouseEvent = e;\n this.showTimeoutId = window.setTimeout(this.showTooltip.bind(this), delay, e);\n };\n TooltipManager.prototype.processMouseOut = function (e) {\n var activeComponent = this.activeComponent;\n var relatedTarget = e.relatedTarget;\n if (!activeComponent) {\n if (this.lastHoveredComponent) {\n var containsElement = this.lastHoveredComponent.getGui().contains(relatedTarget);\n if (this.showTimeoutId && containsElement) {\n // if we are hovering within a component with multiple child elements before\n // the tooltip has been displayed, we should cancel this event\n return;\n }\n else if (!containsElement) {\n // when a click hides the tooltip we need to reset the lastHoveredComponent\n // otherwise the tooltip won't appear until another registered component is hovered.\n this.lastHoveredComponent = undefined;\n }\n }\n this.clearTimers();\n return;\n }\n // the mouseout was called from within the activeComponent so we do nothing\n if (activeComponent.getGui().contains(relatedTarget)) {\n return;\n }\n var registeredComponent = this.registeredComponents[activeComponent.getCompId()];\n utils_1._.addCssClass(registeredComponent.tooltipComp.getGui(), 'ag-tooltip-hiding');\n this.lastHoveredComponent = undefined;\n this.clearTimers();\n this.hideTimeoutId = window.setTimeout(this.hideTooltip.bind(this), this.MOUSEOUT_HIDE_TOOLTIP_TIMEOUT);\n };\n TooltipManager.prototype.processMouseMove = function (e) {\n // there is a delay from the time we mouseOver a component and the time the\n // tooltip is displayed, so we need to track mousemove to be able to correctly\n // position the tooltip when showTooltip is called.\n this.lastMouseEvent = e;\n };\n TooltipManager.prototype.showTooltip = function (e) {\n var targetCmp = this.lastHoveredComponent;\n var cell = targetCmp;\n var registeredComponent = this.registeredComponents[targetCmp.getCompId()];\n this.hideTooltip();\n var params = {\n api: this.gridApi,\n columnApi: this.columnApi,\n colDef: targetCmp.getComponentHolder(),\n column: cell.getColumn && cell.getColumn(),\n context: this.gridOptionsWrapper.getContext(),\n rowIndex: cell.getGridCell && cell.getGridCell().rowIndex,\n value: targetCmp.getTooltipText()\n };\n this.createTooltipComponent(params, registeredComponent, e);\n };\n TooltipManager.prototype.createTooltipComponent = function (params, cmp, e) {\n var _this = this;\n this.userComponentFactory.newTooltipComponent(params).then(function (tooltipComp) {\n // if the component was unregistered while creating\n // the tooltip (async) we should return undefined here.\n if (!cmp) {\n return;\n }\n cmp.tooltipComp = tooltipComp;\n var eGui = tooltipComp.getGui();\n var closeFnc = _this.popupService.addPopup(false, eGui, false);\n cmp.destroyFunc = function () {\n closeFnc();\n if (tooltipComp.destroy) {\n tooltipComp.destroy();\n }\n };\n _this.popupService.positionPopupUnderMouseEvent({\n type: 'tooltip',\n mouseEvent: _this.lastMouseEvent,\n ePopup: eGui,\n nudgeY: 18\n });\n _this.activeComponent = _this.lastHoveredComponent;\n _this.hideTimeoutId = window.setTimeout(_this.hideTooltip.bind(_this), _this.DEFAULT_HIDE_TOOLTIP_TIMEOUT);\n });\n };\n TooltipManager.prototype.hideTooltip = function () {\n var activeComponent = this.activeComponent;\n this.clearTimers();\n if (!activeComponent) {\n return;\n }\n var id = activeComponent.getCompId();\n var registeredComponent = this.registeredComponents[id];\n this.activeComponent = undefined;\n if (!registeredComponent) {\n return;\n }\n if (registeredComponent.destroyFunc) {\n registeredComponent.destroyFunc();\n }\n this.clearRegisteredComponent(registeredComponent);\n };\n TooltipManager.prototype.clearRegisteredComponent = function (registeredComponent) {\n delete registeredComponent.destroyFunc;\n delete registeredComponent.tooltipComp;\n };\n TooltipManager.prototype.clearTimers = function (showOnly) {\n if (showOnly === void 0) { showOnly = false; }\n if (this.hideTimeoutId && !showOnly) {\n window.clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = 0;\n }\n if (this.showTimeoutId) {\n window.clearTimeout(this.showTimeoutId);\n this.showTimeoutId = 0;\n }\n };\n __decorate([\n context_1.Autowired('popupService'),\n __metadata(\"design:type\", popupService_1.PopupService)\n ], TooltipManager.prototype, \"popupService\", void 0);\n __decorate([\n context_1.Autowired('userComponentFactory'),\n __metadata(\"design:type\", userComponentFactory_1.UserComponentFactory)\n ], TooltipManager.prototype, \"userComponentFactory\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], TooltipManager.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], TooltipManager.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], TooltipManager.prototype, \"gridOptionsWrapper\", void 0);\n TooltipManager = __decorate([\n context_1.Bean('tooltipManager')\n ], TooltipManager);\n return TooltipManager;\n}());\nexports.TooltipManager = TooltipManager;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar LoggerFactory = /** @class */ (function () {\n function LoggerFactory() {\n }\n LoggerFactory.prototype.setBeans = function (gridOptionsWrapper) {\n this.logging = gridOptionsWrapper.isDebug();\n };\n LoggerFactory.prototype.create = function (name) {\n return new Logger(name, this.isLogging.bind(this));\n };\n LoggerFactory.prototype.isLogging = function () {\n return this.logging;\n };\n __decorate([\n __param(0, context_2.Qualifier('gridOptionsWrapper')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [gridOptionsWrapper_1.GridOptionsWrapper]),\n __metadata(\"design:returntype\", void 0)\n ], LoggerFactory.prototype, \"setBeans\", null);\n LoggerFactory = __decorate([\n context_1.Bean('loggerFactory')\n ], LoggerFactory);\n return LoggerFactory;\n}());\nexports.LoggerFactory = LoggerFactory;\nvar Logger = /** @class */ (function () {\n function Logger(name, isLoggingFunc) {\n this.name = name;\n this.isLoggingFunc = isLoggingFunc;\n }\n Logger.prototype.isLogging = function () {\n return this.isLoggingFunc();\n };\n Logger.prototype.log = function (message) {\n if (this.isLoggingFunc()) {\n // tslint:disable-next-line\n console.log('ag-Grid.' + this.name + ': ' + message);\n }\n };\n return Logger;\n}());\nexports.Logger = Logger;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar ValueFormatterService = /** @class */ (function () {\n function ValueFormatterService() {\n }\n ValueFormatterService.prototype.formatValue = function (column, rowNode, $scope, value) {\n var formatter;\n var colDef = column.getColDef();\n // if floating, give preference to the floating formatter\n if (rowNode && rowNode.rowPinned) {\n formatter = colDef.pinnedRowValueFormatter ? colDef.pinnedRowValueFormatter : colDef.valueFormatter;\n }\n else {\n formatter = colDef.valueFormatter;\n }\n var result = null;\n if (formatter) {\n var params = {\n value: value,\n node: rowNode,\n data: rowNode ? rowNode.data : null,\n colDef: column.getColDef(),\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n // originally we put the angular 1 scope here, but we don't want the scope\n // in the params interface, as other frameworks will see the interface, and\n // angular 1 is not cool any more. so we hack the scope in here (we cannot\n // include it above, as it's not in the interface, so would cause a compile error).\n // in the future, when we stop supporting angular 1, we can take this out.\n params.$scope = $scope;\n result = this.expressionService.evaluate(formatter, params);\n }\n else if (colDef.refData) {\n return colDef.refData[value] || '';\n }\n // if we don't do this, then arrays get displayed as 1,2,3, but we want 1, 2, 3 (ie with spaces)\n if ((result === null || result === undefined) && Array.isArray(value)) {\n result = value.join(', ');\n }\n return result;\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ValueFormatterService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('expressionService'),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], ValueFormatterService.prototype, \"expressionService\", void 0);\n ValueFormatterService = __decorate([\n context_1.Bean('valueFormatterService')\n ], ValueFormatterService);\n return ValueFormatterService;\n}());\nexports.ValueFormatterService = ValueFormatterService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../widgets/component\");\nvar context_1 = require(\"../context/context\");\nvar rowNode_1 = require(\"../entities/rowNode\");\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar eventKeys_1 = require(\"../eventKeys\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar utils_1 = require(\"../utils\");\nvar RowDragComp = /** @class */ (function (_super) {\n __extends(RowDragComp, _super);\n function RowDragComp(rowNode, column, cellValue, beans) {\n var _this = _super.call(this, \"
\") || this;\n _this.visibleMode = null;\n _this.rowNode = rowNode;\n _this.column = column;\n _this.cellValue = cellValue;\n _this.beans = beans;\n return _this;\n }\n RowDragComp.prototype.postConstruct = function () {\n var eGui = this.getGui();\n eGui.appendChild(utils_1._.createIconNoSpan('rowDrag', this.beans.gridOptionsWrapper, null));\n this.addDragSource();\n this.checkCompatibility();\n if (this.beans.gridOptionsWrapper.isRowDragManaged()) {\n this.addFeature(this.beans.context, new ManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column));\n }\n else {\n this.addFeature(this.beans.context, new NonManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column));\n }\n };\n // returns true if all compatibility items work out\n RowDragComp.prototype.checkCompatibility = function () {\n var managed = this.beans.gridOptionsWrapper.isRowDragManaged();\n var treeData = this.beans.gridOptionsWrapper.isTreeData();\n if (treeData && managed) {\n utils_1._.doOnce(function () {\n return console.warn('ag-Grid: If using row drag with tree data, you cannot have rowDragManaged=true');\n }, 'RowDragComp.managedAndTreeData');\n }\n };\n RowDragComp.prototype.addDragSource = function () {\n var _this = this;\n var dragItem = {\n rowNode: this.rowNode\n };\n var dragSource = {\n type: dragAndDropService_1.DragSourceType.RowDrag,\n eElement: this.getGui(),\n dragItemName: this.cellValue,\n dragItemCallback: function () { return dragItem; },\n dragStartPixels: 0\n };\n this.beans.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.beans.dragAndDropService.removeDragSource(dragSource); });\n };\n RowDragComp.prototype.getVisibleMode = function () {\n return this.visibleMode;\n };\n RowDragComp.prototype.setVisibleMode = function (type) {\n this.visibleMode = type;\n };\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], RowDragComp.prototype, \"postConstruct\", null);\n return RowDragComp;\n}(component_1.Component));\nexports.RowDragComp = RowDragComp;\n// when non managed, the visibility depends on suppressRowDrag property only\nvar NonManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends(NonManagedVisibilityStrategy, _super);\n function NonManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.beans = beans;\n _this.column = column;\n _this.rowNode = rowNode;\n return _this;\n }\n NonManagedVisibilityStrategy.prototype.postConstruct = function () {\n this.addDestroyableEventListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var suppressRowDrag = this.beans.gridOptionsWrapper.isSuppressRowDrag();\n if (suppressRowDrag) {\n this.parent.setVisibleMode('display');\n this.parent.setVisible(false, 'display');\n }\n else {\n var visible = this.column.isRowDrag(this.rowNode);\n if (!this.parent.getVisibleMode()) {\n var isRowDragFunc = utils_1._.isFunction(this.column.getColDef().rowDrag);\n this.parent.setVisibleMode(isRowDragFunc ? 'visibility' : 'display');\n }\n this.parent.setVisible(visible, this.parent.getVisibleMode());\n }\n };\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], NonManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return NonManagedVisibilityStrategy;\n}(beanStub_1.BeanStub));\n// when managed, the visibility depends on sort, filter and row group, as well as suppressRowDrag property\nvar ManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends(ManagedVisibilityStrategy, _super);\n function ManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.beans = beans;\n _this.column = column;\n _this.rowNode = rowNode;\n return _this;\n }\n ManagedVisibilityStrategy.prototype.postConstruct = function () {\n // we do not show the component if sort, filter or grouping is active\n this.addDestroyableEventListener(this.beans.eventService, eventKeys_1.Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addDestroyableEventListener(this.beans.eventService, eventKeys_1.Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addDestroyableEventListener(this.beans.eventService, eventKeys_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));\n this.updateSortActive();\n this.updateFilterActive();\n this.updateRowGroupActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.updateRowGroupActive = function () {\n var rowGroups = this.beans.columnController.getRowGroupColumns();\n this.rowGroupActive = !utils_1._.missingOrEmpty(rowGroups);\n };\n ManagedVisibilityStrategy.prototype.onRowGroupChanged = function () {\n this.updateRowGroupActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.updateSortActive = function () {\n var sortModel = this.beans.sortController.getSortModel();\n this.sortActive = !utils_1._.missingOrEmpty(sortModel);\n };\n ManagedVisibilityStrategy.prototype.onSortChanged = function () {\n this.updateSortActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.updateFilterActive = function () {\n this.filterActive = this.beans.filterManager.isAnyFilterPresent();\n };\n ManagedVisibilityStrategy.prototype.onFilterChanged = function () {\n this.updateFilterActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var sortOrFilterOrGroupActive = this.sortActive || this.filterActive || this.rowGroupActive;\n var suppressRowDrag = this.beans.gridOptionsWrapper.isSuppressRowDrag();\n var alwaysHide = sortOrFilterOrGroupActive || suppressRowDrag;\n if (alwaysHide) {\n this.parent.setVisibleMode('display');\n this.parent.setVisible(false, 'display');\n }\n else {\n var visible = this.column.isRowDrag(this.rowNode);\n if (!this.parent.getVisibleMode()) {\n var isRowDragFunc = utils_1._.isFunction(this.column.getColDef().rowDrag);\n this.parent.setVisibleMode(isRowDragFunc ? 'visibility' : 'display');\n }\n this.parent.setVisible(visible, this.parent.getVisibleMode());\n }\n };\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return ManagedVisibilityStrategy;\n}(beanStub_1.BeanStub));\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar selectCellEditor_1 = require(\"./selectCellEditor\");\nvar PopupSelectCellEditor = /** @class */ (function (_super) {\n __extends(PopupSelectCellEditor, _super);\n function PopupSelectCellEditor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupSelectCellEditor.prototype.isPopup = function () {\n return true;\n };\n return PopupSelectCellEditor;\n}(selectCellEditor_1.SelectCellEditor));\nexports.PopupSelectCellEditor = PopupSelectCellEditor;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar expressionService_1 = require(\"./expressionService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar context_1 = require(\"../context/context\");\nvar events_1 = require(\"../events\");\nvar eventService_1 = require(\"../eventService\");\nvar valueCache_1 = require(\"./valueCache\");\nvar utils_1 = require(\"../utils\");\nvar ValueService = /** @class */ (function () {\n function ValueService() {\n this.initialised = false;\n }\n ValueService.prototype.init = function () {\n this.cellExpressions = this.gridOptionsWrapper.isEnableCellExpressions();\n this.initialised = true;\n };\n ValueService.prototype.getValue = function (column, rowNode, forFilter, ignoreAggData) {\n // console.log(`turnActive = ${this.turnActive}`);\n if (forFilter === void 0) { forFilter = false; }\n if (ignoreAggData === void 0) { ignoreAggData = false; }\n // hack - the grid is getting refreshed before this bean gets initialised, race condition.\n // really should have a way so they get initialised in the right order???\n if (!this.initialised) {\n this.init();\n }\n if (!rowNode) {\n return;\n }\n // pull these out to make code below easier to read\n var colDef = column.getColDef();\n var field = colDef.field;\n var colId = column.getId();\n var data = rowNode.data;\n var result;\n // if there is a value getter, this gets precedence over a field\n var groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== undefined;\n var aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== undefined;\n if (forFilter && colDef.filterValueGetter) {\n result = this.executeFilterValueGetter(colDef.filterValueGetter, data, column, rowNode);\n }\n else if (this.gridOptionsWrapper.isTreeData() && aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (this.gridOptionsWrapper.isTreeData() && colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (this.gridOptionsWrapper.isTreeData() && (field && data)) {\n result = utils_1._.getValueUsingField(data, field, column.isFieldContainsDots());\n }\n else if (groupDataExists) {\n result = rowNode.groupData[colId];\n }\n else if (aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (field && data) {\n result = utils_1._.getValueUsingField(data, field, column.isFieldContainsDots());\n }\n // the result could be an expression itself, if we are allowing cell values to be expressions\n if (this.cellExpressions && (typeof result === 'string') && result.indexOf('=') === 0) {\n var cellValueGetter = result.substring(1);\n result = this.executeValueGetter(cellValueGetter, data, column, rowNode);\n }\n return result;\n };\n ValueService.prototype.setValue = function (rowNode, colKey, newValue) {\n var column = this.columnController.getPrimaryColumn(colKey);\n if (!rowNode || !column) {\n return;\n }\n // this will only happen if user is trying to paste into a group row, which doesn't make sense\n // the user should not be trying to paste into group rows\n var data = rowNode.data;\n if (utils_1._.missing(data)) {\n rowNode.data = {};\n }\n // for backwards compatibility we are also retrieving the newValueHandler as well as the valueSetter\n var _a = column.getColDef(), field = _a.field, newValueHandler = _a.newValueHandler, valueSetter = _a.valueSetter;\n // need either a field or a newValueHandler for this to work\n if (utils_1._.missing(field) && utils_1._.missing(newValueHandler) && utils_1._.missing(valueSetter)) {\n // we don't tell user about newValueHandler, as that is deprecated\n console.warn(\"ag-Grid: you need either field or valueSetter set on colDef for editing to work\");\n return;\n }\n var params = {\n node: rowNode,\n data: rowNode.data,\n oldValue: this.getValue(column, rowNode),\n newValue: newValue,\n colDef: column.getColDef(),\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n params.newValue = newValue;\n var valueWasDifferent;\n if (newValueHandler && utils_1._.exists(newValueHandler)) {\n valueWasDifferent = newValueHandler(params);\n }\n else if (utils_1._.exists(valueSetter)) {\n valueWasDifferent = this.expressionService.evaluate(valueSetter, params);\n }\n else {\n valueWasDifferent = this.setValueUsingField(data, field, newValue, column.isFieldContainsDots());\n }\n // in case user forgot to return something (possible if they are not using TypeScript\n // and just forgot, or using an old newValueHandler we didn't always expect a return\n // value here), we default the return value to true, so we always refresh.\n if (valueWasDifferent === undefined) {\n valueWasDifferent = true;\n }\n // if no change to the value, then no need to do the updating, or notifying via events.\n // otherwise the user could be tabbing around the grid, and cellValueChange would get called\n // all the time.\n if (!valueWasDifferent) {\n return;\n }\n // reset quick filter on this row\n rowNode.resetQuickFilterAggregateText();\n this.valueCache.onDataChanged();\n params.newValue = this.getValue(column, rowNode);\n var onCellValueChanged = column.getColDef().onCellValueChanged;\n if (typeof onCellValueChanged === 'function') {\n // to make callback async, do in a timeout\n setTimeout(function () { return onCellValueChanged(params); }, 0);\n }\n var event = {\n type: events_1.Events.EVENT_CELL_VALUE_CHANGED,\n event: null,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned,\n column: params.column,\n api: params.api,\n colDef: params.colDef,\n columnApi: params.columnApi,\n context: params.context,\n data: rowNode.data,\n node: rowNode,\n oldValue: params.oldValue,\n newValue: params.newValue,\n value: params.newValue\n };\n this.eventService.dispatchEvent(event);\n };\n ValueService.prototype.setValueUsingField = function (data, field, newValue, isFieldContainsDots) {\n if (!field) {\n return false;\n }\n // if no '.', then it's not a deep value\n var valuesAreSame = false;\n if (!isFieldContainsDots) {\n data[field] = newValue;\n }\n else {\n // otherwise it is a deep value, so need to dig for it\n var fieldPieces = field.split('.');\n var currentObject = data;\n while (fieldPieces.length > 0 && currentObject) {\n var fieldPiece = fieldPieces.shift();\n if (fieldPieces.length === 0) {\n currentObject[fieldPiece] = newValue;\n }\n else {\n currentObject = currentObject[fieldPiece];\n }\n }\n }\n return !valuesAreSame;\n };\n ValueService.prototype.executeFilterValueGetter = function (valueGetter, data, column, rowNode) {\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n return this.expressionService.evaluate(valueGetter, params);\n };\n ValueService.prototype.executeValueGetter = function (valueGetter, data, column, rowNode) {\n var colId = column.getId();\n // if inside the same turn, just return back the value we got last time\n var valueFromCache = this.valueCache.getValue(rowNode, colId);\n if (valueFromCache !== undefined) {\n return valueFromCache;\n }\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n var result = this.expressionService.evaluate(valueGetter, params);\n // if a turn is active, store the value in case the grid asks for it again\n this.valueCache.setValue(rowNode, colId, result);\n return result;\n };\n ValueService.prototype.getValueCallback = function (node, field) {\n var otherColumn = this.columnController.getPrimaryColumn(field);\n if (otherColumn) {\n return this.getValue(otherColumn, node);\n }\n return null;\n };\n // used by row grouping and pivot, to get key for a row. col can be a pivot col or a row grouping col\n ValueService.prototype.getKeyForNode = function (col, rowNode) {\n var value = this.getValue(col, rowNode);\n var keyCreator = col.getColDef().keyCreator;\n var result = keyCreator ? keyCreator({ value: value }) : value;\n // if already a string, or missing, just return it\n if (typeof result === 'string' || result == null) {\n return result;\n }\n result = String(result);\n if (result === '[object Object]') {\n utils_1._.doOnce(function () {\n console.warn('ag-Grid: a column you are grouping or pivoting by has objects as values. If you want to group by complex objects then either a) use a colDef.keyCreator (se ag-Grid docs) or b) to toString() on the object to return a key');\n }, 'getKeyForNode - warn about [object,object]');\n }\n return result;\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ValueService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('expressionService'),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], ValueService.prototype, \"expressionService\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], ValueService.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], ValueService.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('valueCache'),\n __metadata(\"design:type\", valueCache_1.ValueCache)\n ], ValueService.prototype, \"valueCache\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ValueService.prototype, \"init\", null);\n ValueService = __decorate([\n context_1.Bean('valueService')\n ], ValueService);\n return ValueService;\n}());\nexports.ValueService = ValueService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar constants_1 = require(\"../constants\");\nvar selectionController_1 = require(\"../selectionController\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar displayedGroupCreator_1 = require(\"../columnController/displayedGroupCreator\");\nvar columnFactory_1 = require(\"../columnController/columnFactory\");\nvar groupInstanceIdCreator_1 = require(\"../columnController/groupInstanceIdCreator\");\nvar columnGroup_1 = require(\"../entities/columnGroup\");\nvar pinnedRowModel_1 = require(\"../rowModels/pinnedRowModel\");\nvar utils_1 = require(\"../utils\");\nvar BaseGridSerializingSession = /** @class */ (function () {\n function BaseGridSerializingSession(config) {\n var columnController = config.columnController, valueService = config.valueService, gridOptionsWrapper = config.gridOptionsWrapper, processCellCallback = config.processCellCallback, processHeaderCallback = config.processHeaderCallback, cellAndHeaderEscaper = config.cellAndHeaderEscaper;\n this.columnController = columnController;\n this.valueService = valueService;\n this.gridOptionsWrapper = gridOptionsWrapper;\n this.processCellCallback = processCellCallback;\n this.processHeaderCallback = processHeaderCallback;\n this.cellAndHeaderEscaper = cellAndHeaderEscaper;\n }\n BaseGridSerializingSession.prototype.extractHeaderValue = function (column) {\n var nameForCol = this.getHeaderName(this.processHeaderCallback, column);\n if (nameForCol === null || nameForCol === undefined) {\n nameForCol = '';\n }\n return this.cellAndHeaderEscaper ? this.cellAndHeaderEscaper(nameForCol) : nameForCol;\n };\n BaseGridSerializingSession.prototype.extractRowCellValue = function (column, index, type, node) {\n var isRowGrouping = this.columnController.getRowGroupColumns().length > 0;\n var valueForCell;\n if (node && node.group && isRowGrouping && index === 0) {\n valueForCell = this.createValueForGroupNode(node);\n }\n else {\n valueForCell = this.valueService.getValue(column, node);\n }\n valueForCell = this.processCell(node, column, valueForCell, this.processCellCallback, type);\n if (valueForCell === null || valueForCell === undefined) {\n valueForCell = '';\n }\n return this.cellAndHeaderEscaper ? this.cellAndHeaderEscaper(valueForCell) : valueForCell;\n };\n BaseGridSerializingSession.prototype.getHeaderName = function (callback, column) {\n if (callback) {\n return callback({\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n });\n }\n else {\n return this.columnController.getDisplayNameForColumn(column, 'csv', true);\n }\n };\n BaseGridSerializingSession.prototype.createValueForGroupNode = function (node) {\n var keys = [node.key];\n while (node.parent) {\n node = node.parent;\n keys.push(node.key);\n }\n return keys.reverse().join(' -> ');\n };\n BaseGridSerializingSession.prototype.processCell = function (rowNode, column, value, processCellCallback, type) {\n if (processCellCallback) {\n return processCellCallback({\n column: column,\n node: rowNode,\n value: value,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n type: type\n });\n }\n else {\n return value;\n }\n };\n return BaseGridSerializingSession;\n}());\nexports.BaseGridSerializingSession = BaseGridSerializingSession;\nvar GridSerializer = /** @class */ (function () {\n function GridSerializer() {\n }\n GridSerializer.prototype.serialize = function (gridSerializingSession, params) {\n var dontSkipRows = function () { return false; };\n var skipGroups = params && params.skipGroups;\n var skipHeader = params && params.skipHeader;\n var columnGroups = params && params.columnGroups;\n var skipFooters = params && params.skipFooters;\n var skipPinnedTop = params && params.skipPinnedTop;\n var skipPinnedBottom = params && params.skipPinnedBottom;\n var includeCustomHeader = params && params.customHeader;\n var includeCustomFooter = params && params.customFooter;\n var allColumns = params && params.allColumns;\n var onlySelected = params && params.onlySelected;\n var columnKeys = params && params.columnKeys;\n var onlySelectedAllPages = params && params.onlySelectedAllPages;\n var rowSkipper = (params && params.shouldRowBeSkipped) || dontSkipRows;\n var api = this.gridOptionsWrapper.getApi();\n var skipSingleChildrenGroup = this.gridOptionsWrapper.isGroupRemoveSingleChildren();\n var skipLowestSingleChildrenGroup = this.gridOptionsWrapper.isGroupRemoveLowestSingleChildren();\n var context = this.gridOptionsWrapper.getContext();\n // when in pivot mode, we always render cols on screen, never 'all columns'\n var isPivotMode = this.columnController.isPivotMode();\n var rowModelNormal = this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n var onlySelectedNonStandardModel = !rowModelNormal && onlySelected;\n var columnsToExport = [];\n if (utils_1._.existsAndNotEmpty(columnKeys)) {\n columnsToExport = this.columnController.getGridColumns(columnKeys);\n }\n else if (allColumns && !isPivotMode) {\n // add auto group column for tree data\n columnsToExport = this.gridOptionsWrapper.isTreeData() ?\n this.columnController.getGridColumns([constants_1.Constants.GROUP_AUTO_COLUMN_ID]) : [];\n columnsToExport = columnsToExport.concat(this.columnController.getAllPrimaryColumns() || []);\n }\n else {\n columnsToExport = this.columnController.getAllDisplayedColumns();\n }\n if (includeCustomHeader) {\n gridSerializingSession.addCustomHeader(includeCustomHeader);\n }\n gridSerializingSession.prepare(columnsToExport);\n // first pass, put in the header names of the cols\n if (columnGroups) {\n var groupInstanceIdCreator = new groupInstanceIdCreator_1.GroupInstanceIdCreator();\n var displayedGroups = this.displayedGroupCreator.createDisplayedGroups(columnsToExport, this.columnController.getGridBalancedTree(), groupInstanceIdCreator, null);\n this.recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession);\n }\n if (!skipHeader) {\n var gridRowIterator_1 = gridSerializingSession.onNewHeaderRow();\n columnsToExport.forEach(function (column, index) {\n gridRowIterator_1.onColumn(column, index, undefined);\n });\n }\n this.pinnedRowModel.forEachPinnedTopRow(processRow);\n if (isPivotMode) {\n if (this.rowModel.forEachPivotNode) {\n this.rowModel.forEachPivotNode(processRow);\n }\n else {\n //Must be enterprise, so we can just loop through all the nodes\n this.rowModel.forEachNode(processRow);\n }\n }\n else {\n // onlySelectedAllPages: user doing pagination and wants selected items from\n // other pages, so cannot use the standard row model as it won't have rows from\n // other pages.\n // onlySelectedNonStandardModel: if user wants selected in non standard row model\n // (eg viewport) then again rowmodel cannot be used, so need to use selected instead.\n if (onlySelectedAllPages || onlySelectedNonStandardModel) {\n var selectedNodes = this.selectionController.getSelectedNodes();\n selectedNodes.forEach(function (node) {\n processRow(node);\n });\n }\n else {\n // here is everything else - including standard row model and selected. we don't use\n // the selection model even when just using selected, so that the result is the order\n // of the rows appearing on the screen.\n if (rowModelNormal) {\n this.rowModel.forEachNodeAfterFilterAndSort(processRow);\n }\n else {\n this.rowModel.forEachNode(processRow);\n }\n }\n }\n this.pinnedRowModel.forEachPinnedBottomRow(processRow);\n if (includeCustomFooter) {\n gridSerializingSession.addCustomFooter(includeCustomFooter);\n }\n function processRow(node) {\n var shouldSkipLowestGroup = skipLowestSingleChildrenGroup && node.leafGroup;\n var shouldSkipCurrentGroup = node.allChildrenCount === 1 && (skipSingleChildrenGroup || shouldSkipLowestGroup);\n if (node.group && (skipGroups || shouldSkipCurrentGroup)) {\n return;\n }\n if (skipFooters && node.footer) {\n return;\n }\n if (onlySelected && !node.isSelected()) {\n return;\n }\n if (skipPinnedTop && node.rowPinned === 'top') {\n return;\n }\n if (skipPinnedBottom && node.rowPinned === 'bottom') {\n return;\n }\n // if we are in pivotMode, then the grid will show the root node only\n // if it's not a leaf group\n var nodeIsRootNode = node.level === -1;\n if (nodeIsRootNode && !node.leafGroup) {\n return;\n }\n var shouldRowBeSkipped = rowSkipper({\n node: node,\n api: api,\n context: context\n });\n if (shouldRowBeSkipped) {\n return;\n }\n var rowAccumulator = gridSerializingSession.onNewBodyRow();\n columnsToExport.forEach(function (column, index) {\n rowAccumulator.onColumn(column, index, node);\n });\n }\n return gridSerializingSession.parse();\n };\n GridSerializer.prototype.recursivelyAddHeaderGroups = function (displayedGroups, gridSerializingSession) {\n var directChildrenHeaderGroups = [];\n displayedGroups.forEach(function (columnGroupChild) {\n var columnGroup = columnGroupChild;\n if (!columnGroup.getChildren) {\n return;\n }\n columnGroup.getChildren().forEach(function (it) { return directChildrenHeaderGroups.push(it); });\n });\n if (displayedGroups.length > 0 && displayedGroups[0] instanceof columnGroup_1.ColumnGroup) {\n this.doAddHeaderHeader(gridSerializingSession, displayedGroups);\n }\n if (directChildrenHeaderGroups && directChildrenHeaderGroups.length > 0) {\n this.recursivelyAddHeaderGroups(directChildrenHeaderGroups, gridSerializingSession);\n }\n };\n GridSerializer.prototype.doAddHeaderHeader = function (gridSerializingSession, displayedGroups) {\n var _this = this;\n var gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();\n var columnIndex = 0;\n displayedGroups.forEach(function (columnGroupChild) {\n var columnGroup = columnGroupChild;\n var columnName = _this.columnController.getDisplayNameForColumnGroup(columnGroup, 'header');\n gridRowIterator.onColumn(columnName || '', columnIndex++, columnGroup.getLeafColumns().length - 1);\n });\n };\n __decorate([\n context_1.Autowired('displayedGroupCreator'),\n __metadata(\"design:type\", displayedGroupCreator_1.DisplayedGroupCreator)\n ], GridSerializer.prototype, \"displayedGroupCreator\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], GridSerializer.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], GridSerializer.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('pinnedRowModel'),\n __metadata(\"design:type\", pinnedRowModel_1.PinnedRowModel)\n ], GridSerializer.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n context_1.Autowired('selectionController'),\n __metadata(\"design:type\", selectionController_1.SelectionController)\n ], GridSerializer.prototype, \"selectionController\", void 0);\n __decorate([\n context_1.Autowired('columnFactory'),\n __metadata(\"design:type\", columnFactory_1.ColumnFactory)\n ], GridSerializer.prototype, \"columnFactory\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], GridSerializer.prototype, \"gridOptionsWrapper\", void 0);\n GridSerializer = __decorate([\n context_1.Bean(\"gridSerializer\")\n ], GridSerializer);\n return GridSerializer;\n}());\nexports.GridSerializer = GridSerializer;\nvar RowType;\n(function (RowType) {\n RowType[RowType[\"HEADER_GROUPING\"] = 0] = \"HEADER_GROUPING\";\n RowType[RowType[\"HEADER\"] = 1] = \"HEADER\";\n RowType[RowType[\"BODY\"] = 2] = \"BODY\";\n})(RowType = exports.RowType || (exports.RowType = {}));\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventService_1 = require(\"../eventService\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar context_1 = require(\"./context\");\nvar utils_1 = require(\"../utils\");\nvar BeanStub = /** @class */ (function () {\n function BeanStub() {\n this.destroyFunctions = [];\n this.destroyed = false;\n }\n // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are\n // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed\n // points to a bean or component that was not properly disposed of.\n // constructor() {\n // setTimeout(()=> {\n // if (this.isAlive()) {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n // console.log('is alive ' + beanName);\n // }\n // }, 5000);\n // }\n BeanStub.prototype.getContext = function () {\n return this.context;\n };\n BeanStub.prototype.destroy = function () {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n this.destroyFunctions.forEach(function (func) { return func(); });\n this.destroyFunctions.length = 0;\n this.destroyed = true;\n this.dispatchEvent({ type: BeanStub.EVENT_DESTROYED });\n };\n BeanStub.prototype.addEventListener = function (eventType, listener) {\n if (!this.localEventService) {\n this.localEventService = new eventService_1.EventService();\n }\n this.localEventService.addEventListener(eventType, listener);\n };\n BeanStub.prototype.removeEventListener = function (eventType, listener) {\n if (this.localEventService) {\n this.localEventService.removeEventListener(eventType, listener);\n }\n };\n BeanStub.prototype.dispatchEventAsync = function (event) {\n var _this = this;\n window.setTimeout(function () { return _this.dispatchEvent(event); }, 0);\n };\n BeanStub.prototype.dispatchEvent = function (event) {\n if (this.localEventService) {\n this.localEventService.dispatchEvent(event);\n }\n };\n BeanStub.prototype.addDestroyableEventListener = function (eElement, event, listener, options) {\n if (this.destroyed) {\n return;\n }\n if (eElement instanceof HTMLElement) {\n utils_1._.addSafePassiveEventListener(eElement, event, listener, options);\n }\n else if (eElement instanceof Window) {\n eElement.addEventListener(event, listener);\n }\n else if (eElement instanceof gridOptionsWrapper_1.GridOptionsWrapper) {\n eElement.addEventListener(event, listener);\n }\n else {\n eElement.addEventListener(event, listener);\n }\n this.destroyFunctions.push(function () {\n if (eElement instanceof HTMLElement) {\n eElement.removeEventListener(event, listener);\n }\n else if (eElement instanceof Window) {\n eElement.removeEventListener(event, listener);\n }\n else if (eElement instanceof gridOptionsWrapper_1.GridOptionsWrapper) {\n eElement.removeEventListener(event, listener);\n }\n else {\n eElement.removeEventListener(event, listener);\n }\n });\n };\n BeanStub.prototype.isAlive = function () {\n return !this.destroyed;\n };\n BeanStub.prototype.addDestroyFunc = function (func) {\n // if we are already destroyed, we execute the func now\n if (this.isAlive()) {\n this.destroyFunctions.push(func);\n }\n else {\n func();\n }\n };\n BeanStub.EVENT_DESTROYED = 'destroyed';\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], BeanStub.prototype, \"context\", void 0);\n __decorate([\n context_1.PreDestroy,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], BeanStub.prototype, \"destroy\", null);\n return BeanStub;\n}());\nexports.BeanStub = BeanStub;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar dateFilter_1 = require(\"./dateFilter\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar userComponentFactory_1 = require(\"../components/framework/userComponentFactory\");\nvar component_1 = require(\"../widgets/component\");\nvar constants_1 = require(\"../constants\");\nvar utils_1 = require(\"../utils\");\nvar InputTextFloatingFilterComp = /** @class */ (function (_super) {\n __extends(InputTextFloatingFilterComp, _super);\n function InputTextFloatingFilterComp() {\n var _this = _super.call(this, \"
\") || this;\n _this.lastKnownModel = null;\n return _this;\n }\n InputTextFloatingFilterComp.prototype.init = function (params) {\n this.onFloatingFilterChanged = params.onFloatingFilterChanged;\n this.currentParentModel = params.currentParentModel;\n var debounceMs = params.debounceMs != null ? params.debounceMs : 500;\n var toDebounce = utils_1._.debounce(this.syncUpWithParentFilter.bind(this), debounceMs);\n this.addDestroyableEventListener(this.eColumnFloatingFilter, 'input', toDebounce);\n this.addDestroyableEventListener(this.eColumnFloatingFilter, 'keypress', toDebounce);\n this.addDestroyableEventListener(this.eColumnFloatingFilter, 'keydown', toDebounce);\n var columnDef = params.column.getDefinition();\n if (columnDef.filterParams && columnDef.filterParams.filterOptions && columnDef.filterParams.filterOptions.length === 1 && columnDef.filterParams.filterOptions[0] === 'inRange') {\n this.eColumnFloatingFilter.disabled = true;\n }\n };\n InputTextFloatingFilterComp.prototype.onParentModelChanged = function (parentModel, combinedFilter) {\n if (combinedFilter != null) {\n this.eColumnFloatingFilter.value = this.parseAsText(combinedFilter.condition1) + \" \" + combinedFilter.operator + \" \" + this.parseAsText(combinedFilter.condition2);\n this.eColumnFloatingFilter.disabled = true;\n this.lastKnownModel = null;\n this.eColumnFloatingFilter.title = this.eColumnFloatingFilter.value;\n this.eColumnFloatingFilter.style.cursor = 'default';\n return;\n }\n else {\n this.eColumnFloatingFilter.disabled = false;\n }\n if (this.equalModels(this.lastKnownModel, parentModel)) {\n // ensure column floating filter text is blanked out when both ranges are empty\n if (!this.lastKnownModel && !parentModel) {\n this.eColumnFloatingFilter.value = '';\n }\n return;\n }\n this.lastKnownModel = parentModel;\n var incomingTextValue = this.asFloatingFilterText(parentModel);\n if (incomingTextValue === this.eColumnFloatingFilter.value) {\n return;\n }\n this.eColumnFloatingFilter.value = incomingTextValue;\n this.eColumnFloatingFilter.title = '';\n };\n InputTextFloatingFilterComp.prototype.syncUpWithParentFilter = function (e) {\n var model = this.asParentModel();\n if (this.equalModels(this.lastKnownModel, model)) {\n return;\n }\n var modelUpdated = null;\n if (utils_1._.isKeyPressed(e, constants_1.Constants.KEY_ENTER)) {\n modelUpdated = this.onFloatingFilterChanged({\n model: model,\n apply: true\n });\n }\n else {\n modelUpdated = this.onFloatingFilterChanged({\n model: model,\n apply: false\n });\n }\n if (modelUpdated) {\n this.lastKnownModel = model;\n }\n };\n InputTextFloatingFilterComp.prototype.equalModels = function (left, right) {\n if (utils_1._.referenceCompare(left, right)) {\n return true;\n }\n if (!left || !right) {\n return false;\n }\n if (Array.isArray(left) || Array.isArray(right)) {\n return false;\n }\n return (utils_1._.referenceCompare(left.type, right.type) &&\n utils_1._.referenceCompare(left.filter, right.filter) &&\n utils_1._.referenceCompare(left.filterTo, right.filterTo) &&\n utils_1._.referenceCompare(left.filterType, right.filterType));\n };\n __decorate([\n componentAnnotations_1.RefSelector('eColumnFloatingFilter'),\n __metadata(\"design:type\", HTMLInputElement)\n ], InputTextFloatingFilterComp.prototype, \"eColumnFloatingFilter\", void 0);\n return InputTextFloatingFilterComp;\n}(component_1.Component));\nexports.InputTextFloatingFilterComp = InputTextFloatingFilterComp;\nvar TextFloatingFilterComp = /** @class */ (function (_super) {\n __extends(TextFloatingFilterComp, _super);\n function TextFloatingFilterComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextFloatingFilterComp.prototype.asFloatingFilterText = function (parentModel) {\n if (!parentModel) {\n return '';\n }\n return parentModel.filter;\n };\n TextFloatingFilterComp.prototype.asParentModel = function () {\n var currentParentModel = this.currentParentModel();\n return {\n type: currentParentModel.type,\n filter: this.eColumnFloatingFilter.value,\n filterType: 'text'\n };\n };\n TextFloatingFilterComp.prototype.parseAsText = function (model) {\n return this.asFloatingFilterText(model);\n };\n return TextFloatingFilterComp;\n}(InputTextFloatingFilterComp));\nexports.TextFloatingFilterComp = TextFloatingFilterComp;\nvar DateFloatingFilterComp = /** @class */ (function (_super) {\n __extends(DateFloatingFilterComp, _super);\n function DateFloatingFilterComp() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastKnownModel = null;\n return _this;\n }\n DateFloatingFilterComp.prototype.init = function (params) {\n this.onFloatingFilterChanged = params.onFloatingFilterChanged;\n this.currentParentModel = params.currentParentModel;\n var debounceMs = params.debounceMs != null ? params.debounceMs : 500;\n var toDebounce = utils_1._.debounce(this.onDateChanged.bind(this), debounceMs);\n var dateComponentParams = {\n onDateChanged: toDebounce,\n filterParams: params.column.getColDef().filterParams\n };\n this.dateComponentPromise = this.userComponentFactory.newDateComponent(dateComponentParams);\n var body = utils_1._.loadTemplate('
');\n this.dateComponentPromise.then(function (dateComponent) {\n body.appendChild(dateComponent.getGui());\n var columnDef = params.column.getDefinition();\n var isInRange = (columnDef.filterParams &&\n columnDef.filterParams.filterOptions &&\n columnDef.filterParams.filterOptions.length === 1 &&\n columnDef.filterParams.filterOptions[0] === 'inRange');\n if (dateComponent.eDateInput) {\n dateComponent.eDateInput.disabled = isInRange;\n }\n });\n body.style.width = '100%';\n body.style.height = '100%';\n this.setTemplateFromElement(body);\n };\n DateFloatingFilterComp.prototype.onDateChanged = function () {\n var parentModel = this.currentParentModel();\n var model = this.asParentModel();\n if (this.equalModels(parentModel, model)) {\n return;\n }\n this.onFloatingFilterChanged({\n model: model,\n apply: true\n });\n this.lastKnownModel = model;\n };\n DateFloatingFilterComp.prototype.equalModels = function (left, right) {\n if (utils_1._.referenceCompare(left, right)) {\n return true;\n }\n if (!left || !right) {\n return false;\n }\n if (Array.isArray(left) || Array.isArray(right)) {\n return false;\n }\n return (utils_1._.referenceCompare(left.type, right.type) &&\n utils_1._.referenceCompare(left.dateFrom, right.dateFrom) &&\n utils_1._.referenceCompare(left.dateTo, right.dateTo) &&\n utils_1._.referenceCompare(left.filterType, right.filterType));\n };\n DateFloatingFilterComp.prototype.asParentModel = function () {\n var currentParentModel = this.currentParentModel();\n var filterValueDate = this.dateComponentPromise.resolveNow(null, function (dateComponent) { return dateComponent.getDate(); });\n var filterValueText = utils_1._.serializeDateToYyyyMmDd(dateFilter_1.DateFilter.removeTimezone(filterValueDate), \"-\");\n return {\n type: currentParentModel.type,\n dateFrom: filterValueText,\n dateTo: currentParentModel ? currentParentModel.dateTo : null,\n filterType: 'date'\n };\n };\n DateFloatingFilterComp.prototype.onParentModelChanged = function (parentModel) {\n var _this = this;\n this.lastKnownModel = parentModel;\n this.dateComponentPromise.then(function (dateComponent) {\n if (!parentModel || !parentModel.dateFrom) {\n dateComponent.setDate(null);\n return;\n }\n _this.enrichDateInput(parentModel.type, parentModel.dateFrom, parentModel.dateTo, dateComponent);\n dateComponent.setDate(utils_1._.parseYyyyMmDdToDate(parentModel.dateFrom, '-'));\n });\n };\n DateFloatingFilterComp.prototype.enrichDateInput = function (type, dateFrom, dateTo, dateComponent) {\n if (dateComponent.eDateInput) {\n if (type === 'inRange') {\n dateComponent.eDateInput.title = dateFrom + \" to \" + dateTo;\n dateComponent.eDateInput.disabled = true;\n }\n else {\n dateComponent.eDateInput.title = '';\n dateComponent.eDateInput.disabled = false;\n }\n }\n };\n __decorate([\n context_1.Autowired('userComponentFactory'),\n __metadata(\"design:type\", userComponentFactory_1.UserComponentFactory)\n ], DateFloatingFilterComp.prototype, \"userComponentFactory\", void 0);\n return DateFloatingFilterComp;\n}(component_1.Component));\nexports.DateFloatingFilterComp = DateFloatingFilterComp;\nvar NumberFloatingFilterComp = /** @class */ (function (_super) {\n __extends(NumberFloatingFilterComp, _super);\n function NumberFloatingFilterComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NumberFloatingFilterComp.prototype.asFloatingFilterText = function (toParse) {\n var currentParentModel = this.currentParentModel();\n if (toParse == null && currentParentModel == null) {\n return '';\n }\n if (toParse == null && currentParentModel != null && currentParentModel.type !== 'inRange') {\n this.eColumnFloatingFilter.disabled = false;\n return '';\n }\n if (currentParentModel != null && currentParentModel.type === 'inRange') {\n this.eColumnFloatingFilter.disabled = true;\n return this.parseAsText(currentParentModel);\n }\n this.eColumnFloatingFilter.disabled = false;\n return this.parseAsText(toParse);\n };\n NumberFloatingFilterComp.prototype.parseAsText = function (model) {\n var number = this.asNumber(model.filter);\n if (model.type && model.type === 'inRange') {\n var numberTo = this.asNumber(model.filterTo);\n return (number ? number + '' : '') +\n '-' +\n (numberTo ? numberTo + '' : '');\n }\n return number != null ? number + '' : '';\n };\n NumberFloatingFilterComp.prototype.asParentModel = function () {\n var currentParentModel = this.currentParentModel();\n var filterValueNumber = this.asNumber(this.eColumnFloatingFilter.value);\n var filterValueText = this.eColumnFloatingFilter.value;\n var modelFilterValue = null;\n if (filterValueNumber == null && filterValueText === '') {\n modelFilterValue = null;\n }\n else if (filterValueNumber == null) {\n modelFilterValue = currentParentModel.filter;\n }\n else {\n modelFilterValue = filterValueNumber;\n }\n return {\n type: currentParentModel.type,\n filter: modelFilterValue,\n filterTo: !currentParentModel ? null : currentParentModel.filterTo,\n filterType: 'number'\n };\n };\n NumberFloatingFilterComp.prototype.asNumber = function (value) {\n if (value == null) {\n return null;\n }\n if (value === '') {\n return null;\n }\n var asNumber = Number(value);\n var invalidNumber = !utils_1._.isNumeric(asNumber);\n return invalidNumber ? null : asNumber;\n };\n return NumberFloatingFilterComp;\n}(InputTextFloatingFilterComp));\nexports.NumberFloatingFilterComp = NumberFloatingFilterComp;\nvar SetFloatingFilterComp = /** @class */ (function (_super) {\n __extends(SetFloatingFilterComp, _super);\n function SetFloatingFilterComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SetFloatingFilterComp.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.eColumnFloatingFilter.disabled = true;\n };\n SetFloatingFilterComp.prototype.asFloatingFilterText = function (parentModel) {\n this.eColumnFloatingFilter.disabled = true;\n if (!parentModel) {\n return '';\n }\n // also supporting old filter model for backwards compatibility\n var values = (parentModel instanceof Array) ? parentModel : parentModel.values;\n if (values.length === 0) {\n return '';\n }\n var arrayToDisplay = values.length > 10 ? values.slice(0, 10).concat('...') : values;\n return \"(\" + values.length + \") \" + arrayToDisplay.join(\",\");\n };\n SetFloatingFilterComp.prototype.parseAsText = function (model) {\n return this.asFloatingFilterText(model);\n };\n SetFloatingFilterComp.prototype.asParentModel = function () {\n if (this.eColumnFloatingFilter.value == null || this.eColumnFloatingFilter.value === '') {\n return {\n values: [],\n filterType: 'set'\n };\n }\n return {\n values: this.eColumnFloatingFilter.value.split(\",\"),\n filterType: 'set'\n };\n };\n SetFloatingFilterComp.prototype.equalModels = function (left, right) {\n return false;\n };\n return SetFloatingFilterComp;\n}(InputTextFloatingFilterComp));\nexports.SetFloatingFilterComp = SetFloatingFilterComp;\nvar ReadModelAsStringFloatingFilterComp = /** @class */ (function (_super) {\n __extends(ReadModelAsStringFloatingFilterComp, _super);\n function ReadModelAsStringFloatingFilterComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ReadModelAsStringFloatingFilterComp.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.eColumnFloatingFilter.disabled = true;\n };\n ReadModelAsStringFloatingFilterComp.prototype.onParentModelChanged = function (parentModel) {\n this.eColumnFloatingFilter.value = this.asFloatingFilterText(this.currentParentModel());\n };\n ReadModelAsStringFloatingFilterComp.prototype.asFloatingFilterText = function (parentModel) {\n return parentModel;\n };\n ReadModelAsStringFloatingFilterComp.prototype.parseAsText = function (model) {\n return model;\n };\n ReadModelAsStringFloatingFilterComp.prototype.asParentModel = function () {\n return null;\n };\n return ReadModelAsStringFloatingFilterComp;\n}(InputTextFloatingFilterComp));\nexports.ReadModelAsStringFloatingFilterComp = ReadModelAsStringFloatingFilterComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar context_1 = require(\"../../context/context\");\nvar rowNodeBlock_1 = require(\"../cache/rowNodeBlock\");\nvar rowRenderer_1 = require(\"../../rendering/rowRenderer\");\nvar utils_1 = require(\"../../utils\");\nvar InfiniteBlock = /** @class */ (function (_super) {\n __extends(InfiniteBlock, _super);\n function InfiniteBlock(pageNumber, params) {\n var _this = _super.call(this, pageNumber, params) || this;\n _this.cacheParams = params;\n return _this;\n }\n InfiniteBlock.prototype.createBlankRowNode = function (rowIndex) {\n var rowNode = _super.prototype.createBlankRowNode.call(this, rowIndex);\n rowNode.uiLevel = 0;\n this.setIndexAndTopOnRowNode(rowNode, rowIndex);\n return rowNode;\n };\n InfiniteBlock.prototype.setDataAndId = function (rowNode, data, index) {\n if (utils_1._.exists(data)) {\n // this means if the user is not providing id's we just use the\n // index for the row. this will allow selection to work (that is based\n // on index) as long user is not inserting or deleting rows,\n // or wanting to keep selection between server side sorting or filtering\n rowNode.setDataAndId(data, index.toString());\n }\n else {\n rowNode.setDataAndId(undefined, undefined);\n }\n };\n InfiniteBlock.prototype.setRowNode = function (rowIndex, rowNode) {\n _super.prototype.setRowNode.call(this, rowIndex, rowNode);\n this.setIndexAndTopOnRowNode(rowNode, rowIndex);\n };\n InfiniteBlock.prototype.init = function () {\n _super.prototype.init.call(this, {\n context: this.getContext(),\n rowRenderer: this.rowRenderer\n });\n };\n InfiniteBlock.prototype.getNodeIdPrefix = function () {\n return null;\n };\n InfiniteBlock.prototype.getRow = function (displayIndex) {\n return this.getRowUsingLocalIndex(displayIndex);\n };\n InfiniteBlock.prototype.setIndexAndTopOnRowNode = function (rowNode, rowIndex) {\n rowNode.setRowIndex(rowIndex);\n rowNode.rowTop = this.cacheParams.rowHeight * rowIndex;\n };\n InfiniteBlock.prototype.loadFromDatasource = function () {\n var _this = this;\n // PROBLEM . . . . when the user sets sort via colDef.sort, then this code\n // is executing before the sort is set up, so server is not getting the sort\n // model. need to change with regards order - so the server side request is\n // AFTER thus it gets the right sort model.\n var params = {\n startRow: this.getStartRow(),\n endRow: this.getEndRow(),\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this),\n sortModel: this.cacheParams.sortModel,\n filterModel: this.cacheParams.filterModel,\n context: this.gridOptionsWrapper.getContext()\n };\n if (utils_1._.missing(this.cacheParams.datasource.getRows)) {\n console.warn(\"ag-Grid: datasource is missing getRows method\");\n return;\n }\n // check if old version of datasource used\n var getRowsParams = utils_1._.getFunctionParameters(this.cacheParams.datasource.getRows);\n if (getRowsParams.length > 1) {\n console.warn('ag-grid: It looks like your paging datasource is of the old type, taking more than one parameter.');\n console.warn('ag-grid: From ag-grid 1.9.0, now the getRows takes one parameter. See the documentation for details.');\n }\n // put in timeout, to force result to be async\n window.setTimeout(function () {\n _this.cacheParams.datasource.getRows(params);\n }, 0);\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], InfiniteBlock.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('rowRenderer'),\n __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n ], InfiniteBlock.prototype, \"rowRenderer\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], InfiniteBlock.prototype, \"init\", null);\n return InfiniteBlock;\n}(rowNodeBlock_1.RowNodeBlock));\nexports.InfiniteBlock = InfiniteBlock;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../../context/context\");\nvar utils_1 = require(\"../../../utils\");\n// table for crc calculation\n// from: https://referencesource.microsoft.com/#System/sys/System/IO/compression/Crc32Helper.cs,3b31978c7d7f7246,references\nvar crcTable = [\n 0, 1996959894, -301047508, -1727442502, 124634137, 1886057615, -379345611, -1637575261, 249268274,\n 2044508324, -522852066, -1747789432, 162941995, 2125561021, -407360249, -1866523247, 498536548,\n 1789927666, -205950648, -2067906082, 450548861, 1843258603, -187386543, -2083289657, 325883990,\n 1684777152, -43845254, -1973040660, 335633487, 1661365465, -99664541, -1928851979, 997073096,\n 1281953886, -715111964, -1570279054, 1006888145, 1258607687, -770865667, -1526024853, 901097722,\n 1119000684, -608450090, -1396901568, 853044451, 1172266101, -589951537, -1412350631, 651767980,\n 1373503546, -925412992, -1076862698, 565507253, 1454621731, -809855591, -1195530993, 671266974,\n 1594198024, -972236366, -1324619484, 795835527, 1483230225, -1050600021, -1234817731, 1994146192,\n 31158534, -1731059524, -271249366, 1907459465, 112637215, -1614814043, -390540237, 2013776290,\n 251722036, -1777751922, -519137256, 2137656763, 141376813, -1855689577, -429695999, 1802195444,\n 476864866, -2056965928, -228458418, 1812370925, 453092731, -2113342271, -183516073, 1706088902,\n 314042704, -1950435094, -54949764, 1658658271, 366619977, -1932296973, -69972891, 1303535960,\n 984961486, -1547960204, -725929758, 1256170817, 1037604311, -1529756563, -740887301, 1131014506,\n 879679996, -1385723834, -631195440, 1141124467, 855842277, -1442165665, -586318647, 1342533948,\n 654459306, -1106571248, -921952122, 1466479909, 544179635, -1184443383, -832445281, 1591671054,\n 702138776, -1328506846, -942167884, 1504918807, 783551873, -1212326853, -1061524307, -306674912,\n -1698712650, 62317068, 1957810842, -355121351, -1647151185, 81470997, 1943803523, -480048366,\n -1805370492, 225274430, 2053790376, -468791541, -1828061283, 167816743, 2097651377, -267414716,\n -2029476910, 503444072, 1762050814, -144550051, -2140837941, 426522225, 1852507879, -19653770,\n -1982649376, 282753626, 1742555852, -105259153, -1900089351, 397917763, 1622183637, -690576408,\n -1580100738, 953729732, 1340076626, -776247311, -1497606297, 1068828381, 1219638859, -670225446,\n -1358292148, 906185462, 1090812512, -547295293, -1469587627, 829329135, 1181335161, -882789492,\n -1134132454, 628085408, 1382605366, -871598187, -1156888829, 570562233, 1426400815, -977650754,\n -1296233688, 733239954, 1555261956, -1026031705, -1244606671, 752459403, 1541320221, -1687895376,\n -328994266, 1969922972, 40735498, -1677130071, -351390145, 1913087877, 83908371, -1782625662,\n -491226604, 2075208622, 213261112, -1831694693, -438977011, 2094854071, 198958881, -2032938284,\n -237706686, 1759359992, 534414190, -2118248755, -155638181, 1873836001, 414664567, -2012718362,\n -15766928, 1711684554, 285281116, -1889165569, -127750551, 1634467795, 376229701, -1609899400,\n -686959890, 1308918612, 956543938, -1486412191, -799009033, 1231636301, 1047427035, -1362007478,\n -640263460, 1088359270, 936918000, -1447252397, -558129467, 1202900863, 817233897, -1111625188,\n -893730166, 1404277552, 615818150, -1160759803, -841546093, 1423857449, 601450431, -1285129682,\n -1000256840, 1567103746, 711928724, -1274298825, -1022587231, 1510334235, 755167117\n];\nvar ZipContainer = /** @class */ (function () {\n function ZipContainer() {\n var _this = this;\n this.folders = [];\n this.files = [];\n this.addFolder = function (path) {\n _this.folders.push({\n path: path,\n created: new Date()\n });\n };\n }\n ZipContainer.prototype.addFolders = function (paths) {\n paths.forEach(this.addFolder);\n };\n ZipContainer.prototype.addFile = function (path, content) {\n this.files.push({\n path: path,\n created: new Date(),\n content: content\n });\n };\n ZipContainer.prototype.clearStream = function () {\n this.folders = [];\n this.files = [];\n };\n ZipContainer.prototype.getContent = function (mimeType) {\n if (mimeType === void 0) { mimeType = 'application/zip'; }\n var textOutput = this.buildFileStream();\n var uInt8Output = this.buildUint8Array(textOutput);\n this.clearStream();\n return new Blob([uInt8Output], { type: mimeType });\n };\n ZipContainer.prototype.buildFileStream = function (fData) {\n if (fData === void 0) { fData = ''; }\n var totalFiles = this.folders.concat(this.files);\n var len = totalFiles.length;\n var foData = '';\n var lL = 0;\n var cL = 0;\n for (var _i = 0, totalFiles_1 = totalFiles; _i < totalFiles_1.length; _i++) {\n var currentFile = totalFiles_1[_i];\n var _a = this.getHeader(currentFile, lL), fileHeader = _a.fileHeader, folderHeader = _a.folderHeader, content = _a.content;\n lL += fileHeader.length + content.length;\n cL += folderHeader.length;\n fData += fileHeader + content;\n foData += folderHeader;\n }\n var foEnd = this.buildFolderEnd(len, cL, lL);\n return fData + foData + foEnd;\n };\n ZipContainer.prototype.getHeader = function (currentFile, offset) {\n var content = currentFile.content, path = currentFile.path, created = currentFile.created;\n var utf8_encode = utils_1._.utf8_encode, decToHex = utils_1._.decToHex;\n var utfPath = utf8_encode(path);\n var isUTF8 = utfPath !== path;\n var time = this.convertTime(created);\n var dt = this.convertDate(created);\n var extraFields = '';\n if (isUTF8) {\n var uExtraFieldPath = decToHex(1, 1) + decToHex(this.getFromCrc32Table(utfPath), 4) + utfPath;\n extraFields = \"\\x75\\x70\" + decToHex(uExtraFieldPath.length, 2) + uExtraFieldPath;\n }\n var header = '\\x0A\\x00' +\n (isUTF8 ? '\\x00\\x08' : '\\x00\\x00') +\n '\\x00\\x00' +\n decToHex(time, 2) + // last modified time\n decToHex(dt, 2) + // last modified date\n decToHex(content ? this.getFromCrc32Table(content) : 0, 4) +\n decToHex(content ? content.length : 0, 4) + // compressed size\n decToHex(content ? content.length : 0, 4) + // uncompressed size\n decToHex(utfPath.length, 2) + // file name length\n decToHex(extraFields.length, 2); // extra field length\n var fileHeader = 'PK\\x03\\x04' + header + utfPath + extraFields;\n var folderHeader = 'PK\\x01\\x02' + // central header\n '\\x14\\x00' +\n header + // file header\n '\\x00\\x00' +\n '\\x00\\x00' +\n '\\x00\\x00' +\n (content ? '\\x00\\x00\\x00\\x00' : '\\x10\\x00\\x00\\x00') + // external file attributes\n decToHex(offset, 4) + // relative offset of local header\n utfPath + // file name\n extraFields; // extra field\n return { fileHeader: fileHeader, folderHeader: folderHeader, content: content || '' };\n };\n ZipContainer.prototype.buildFolderEnd = function (tLen, cLen, lLen) {\n var decToHex = utils_1._.decToHex;\n return 'PK\\x05\\x06' + // central folder end\n '\\x00\\x00' +\n '\\x00\\x00' +\n decToHex(tLen, 2) + // total number of entries in the central folder\n decToHex(tLen, 2) + // total number of entries in the central folder\n decToHex(cLen, 4) + // size of the central folder\n decToHex(lLen, 4) + // central folder start offset\n '\\x00\\x00';\n };\n ZipContainer.prototype.buildUint8Array = function (content) {\n var uint8 = new Uint8Array(content.length);\n for (var i = 0; i < uint8.length; i++) {\n uint8[i] = content.charCodeAt(i);\n }\n return uint8;\n };\n ZipContainer.prototype.getFromCrc32Table = function (content, crc) {\n if (crc === void 0) { crc = 0; }\n if (!content.length) {\n return 0;\n }\n crc ^= (-1);\n var j = 0;\n var k = 0;\n var l = 0;\n for (var i = 0; i < content.length; i++) {\n j = content.charCodeAt(i);\n k = (crc ^ j) & 0xFF;\n l = crcTable[k];\n crc = (crc >>> 8) ^ l;\n }\n return crc ^ (-1);\n };\n ZipContainer.prototype.convertTime = function (date) {\n var time = date.getHours();\n time <<= 6;\n time = time | date.getMinutes();\n time <<= 5;\n time = time | date.getSeconds() / 2;\n return time;\n };\n ZipContainer.prototype.convertDate = function (date) {\n var dt = date.getFullYear() - 1980;\n dt <<= 4;\n dt = dt | (date.getMonth() + 1);\n dt <<= 5;\n dt = dt | date.getDate();\n return dt;\n };\n ZipContainer = __decorate([\n context_1.Bean('zipContainer')\n ], ZipContainer);\n return ZipContainer;\n}());\nexports.ZipContainer = ZipContainer;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar beanStub_1 = require(\"../context/beanStub\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar scrollVisibleService_1 = require(\"../gridPanel/scrollVisibleService\");\nvar selectionController_1 = require(\"../selectionController\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar utils_1 = require(\"../utils\");\nvar PaginationAutoPageSizeService = /** @class */ (function (_super) {\n __extends(PaginationAutoPageSizeService, _super);\n function PaginationAutoPageSizeService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PaginationAutoPageSizeService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_BODY_HEIGHT_CHANGED, this.onBodyHeightChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.notActive = function () {\n return !this.gridOptionsWrapper.isPaginationAutoPageSize();\n };\n PaginationAutoPageSizeService.prototype.onScrollVisibilityChanged = function () {\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.onBodyHeightChanged = function () {\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.checkPageSize = function () {\n if (this.notActive()) {\n return;\n }\n var rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n var bodyHeight = this.gridPanel.getBodyHeight();\n if (bodyHeight > 0) {\n var newPageSize = Math.floor(bodyHeight / rowHeight);\n this.gridOptionsWrapper.setProperty('paginationPageSize', newPageSize);\n }\n };\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], PaginationAutoPageSizeService.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], PaginationAutoPageSizeService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('scrollVisibleService'),\n __metadata(\"design:type\", scrollVisibleService_1.ScrollVisibleService)\n ], PaginationAutoPageSizeService.prototype, \"scrollVisibleService\", void 0);\n PaginationAutoPageSizeService = __decorate([\n context_1.Bean('paginationAutoPageSizeService')\n ], PaginationAutoPageSizeService);\n return PaginationAutoPageSizeService;\n}(beanStub_1.BeanStub));\nexports.PaginationAutoPageSizeService = PaginationAutoPageSizeService;\nvar PaginationProxy = /** @class */ (function (_super) {\n __extends(PaginationProxy, _super);\n function PaginationProxy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.currentPage = 0;\n _this.topRowIndex = 0;\n _this.bottomRowIndex = 0;\n _this.pixelOffset = 0;\n return _this;\n }\n PaginationProxy.prototype.postConstruct = function () {\n this.active = this.gridOptionsWrapper.isPagination();\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, 'paginationPageSize', this.onModelUpdated.bind(this));\n this.onModelUpdated();\n };\n PaginationProxy.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n var res = this.rowModel.ensureRowHeightsValid(startPixel, endPixel, this.getPageFirstRow(), this.getPageLastRow());\n if (res) {\n this.setIndexesAndBounds();\n }\n return res;\n };\n PaginationProxy.prototype.isLastRowFound = function () {\n return this.rowModel.isLastRowFound();\n };\n PaginationProxy.prototype.onModelUpdated = function (modelUpdatedEvent) {\n this.setIndexesAndBounds();\n var paginationChangedEvent = {\n type: events_1.Events.EVENT_PAGINATION_CHANGED,\n animate: modelUpdatedEvent ? modelUpdatedEvent.animate : false,\n newData: modelUpdatedEvent ? modelUpdatedEvent.newData : false,\n newPage: modelUpdatedEvent ? modelUpdatedEvent.newPage : false,\n keepRenderedRows: modelUpdatedEvent ? modelUpdatedEvent.keepRenderedRows : false,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(paginationChangedEvent);\n };\n PaginationProxy.prototype.goToPage = function (page) {\n if (!this.active) {\n return;\n }\n if (this.currentPage === page) {\n return;\n }\n this.currentPage = page;\n var event = {\n type: events_1.Events.EVENT_MODEL_UPDATED,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: true,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.onModelUpdated(event);\n };\n PaginationProxy.prototype.getPixelOffset = function () {\n return this.pixelOffset;\n };\n PaginationProxy.prototype.getRow = function (index) {\n return this.rowModel.getRow(index);\n };\n PaginationProxy.prototype.getRowNode = function (id) {\n return this.rowModel.getRowNode(id);\n };\n PaginationProxy.prototype.getRowIndexAtPixel = function (pixel) {\n return this.rowModel.getRowIndexAtPixel(pixel);\n };\n PaginationProxy.prototype.getCurrentPageHeight = function () {\n if (utils_1._.missing(this.topRowBounds) || utils_1._.missing(this.bottomRowBounds)) {\n return 0;\n }\n return this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight - this.topRowBounds.rowTop;\n };\n PaginationProxy.prototype.isRowPresent = function (rowNode) {\n if (!this.rowModel.isRowPresent(rowNode)) {\n return false;\n }\n var nodeIsInPage = rowNode.rowIndex >= this.topRowIndex && rowNode.rowIndex <= this.bottomRowIndex;\n return nodeIsInPage;\n };\n PaginationProxy.prototype.isEmpty = function () {\n return this.rowModel.isEmpty();\n };\n PaginationProxy.prototype.isRowsToRender = function () {\n return this.rowModel.isRowsToRender();\n };\n PaginationProxy.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n return this.rowModel.getNodesInRangeForSelection(firstInRange, lastInRange);\n };\n PaginationProxy.prototype.forEachNode = function (callback) {\n return this.rowModel.forEachNode(callback);\n };\n PaginationProxy.prototype.getType = function () {\n return this.rowModel.getType();\n };\n PaginationProxy.prototype.getRowBounds = function (index) {\n return this.rowModel.getRowBounds(index);\n };\n PaginationProxy.prototype.getPageFirstRow = function () {\n return this.pageSize * this.currentPage;\n };\n PaginationProxy.prototype.getPageLastRow = function () {\n var totalLastRow = (this.pageSize * (this.currentPage + 1)) - 1;\n var pageLastRow = this.rowModel.getPageLastRow();\n if (pageLastRow > totalLastRow) {\n return totalLastRow;\n }\n else {\n return pageLastRow;\n }\n };\n PaginationProxy.prototype.getRowCount = function () {\n return this.rowModel.getRowCount();\n };\n PaginationProxy.prototype.goToPageWithIndex = function (index) {\n if (!this.active) {\n return;\n }\n var pageNumber = Math.floor(index / this.pageSize);\n this.goToPage(pageNumber);\n };\n PaginationProxy.prototype.getTotalRowCount = function () {\n return this.rowModel.getPageLastRow() + 1;\n };\n PaginationProxy.prototype.isLastPageFound = function () {\n return this.rowModel.isLastRowFound();\n };\n PaginationProxy.prototype.getCurrentPage = function () {\n return this.currentPage;\n };\n PaginationProxy.prototype.goToNextPage = function () {\n this.goToPage(this.currentPage + 1);\n };\n PaginationProxy.prototype.goToPreviousPage = function () {\n this.goToPage(this.currentPage - 1);\n };\n PaginationProxy.prototype.goToFirstPage = function () {\n this.goToPage(0);\n };\n PaginationProxy.prototype.goToLastPage = function () {\n var rowCount = this.rowModel.getPageLastRow() + 1;\n var lastPage = Math.floor(rowCount / this.pageSize);\n this.goToPage(lastPage);\n };\n PaginationProxy.prototype.getPageSize = function () {\n return this.pageSize;\n };\n PaginationProxy.prototype.getTotalPages = function () {\n return this.totalPages;\n };\n PaginationProxy.prototype.setPageSize = function () {\n // show put this into super class\n this.pageSize = this.gridOptionsWrapper.getPaginationPageSize();\n if (!(this.pageSize >= 1)) {\n this.pageSize = 100;\n }\n };\n PaginationProxy.prototype.setIndexesAndBounds = function () {\n if (this.active) {\n this.setPageSize();\n var totalRowCount = this.getTotalRowCount();\n this.totalPages = Math.floor((totalRowCount - 1) / this.pageSize) + 1;\n if (this.currentPage >= this.totalPages) {\n this.currentPage = this.totalPages - 1;\n }\n if (!utils_1._.isNumeric(this.currentPage) || this.currentPage < 0) {\n this.currentPage = 0;\n }\n this.topRowIndex = this.pageSize * this.currentPage;\n this.bottomRowIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n var maxRowAllowed = this.rowModel.getPageLastRow();\n if (this.bottomRowIndex > maxRowAllowed) {\n this.bottomRowIndex = maxRowAllowed;\n }\n }\n else {\n this.pageSize = this.rowModel.getPageLastRow() + 1;\n this.totalPages = 1;\n this.currentPage = 0;\n this.topRowIndex = 0;\n this.bottomRowIndex = this.rowModel.getPageLastRow();\n }\n this.topRowBounds = this.rowModel.getRowBounds(this.topRowIndex);\n this.bottomRowBounds = this.rowModel.getRowBounds(this.bottomRowIndex);\n this.pixelOffset = utils_1._.exists(this.topRowBounds) ? this.topRowBounds.rowTop : 0;\n };\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], PaginationProxy.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], PaginationProxy.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], PaginationProxy.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('selectionController'),\n __metadata(\"design:type\", selectionController_1.SelectionController)\n ], PaginationProxy.prototype, \"selectionController\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], PaginationProxy.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], PaginationProxy.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], PaginationProxy.prototype, \"postConstruct\", null);\n PaginationProxy = __decorate([\n context_1.Bean('paginationProxy')\n ], PaginationProxy);\n return PaginationProxy;\n}(beanStub_1.BeanStub));\nexports.PaginationProxy = PaginationProxy;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar events_1 = require(\"../events\");\nvar propertyKeys_1 = require(\"../propertyKeys\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar utils_1 = require(\"../utils\");\nvar ComponentUtil = /** @class */ (function () {\n function ComponentUtil() {\n }\n ComponentUtil.getEventCallbacks = function () {\n if (!ComponentUtil.EVENT_CALLBACKS) {\n ComponentUtil.EVENT_CALLBACKS = [];\n ComponentUtil.EVENT_CALLBACKS_NO_PREFIX = [];\n ComponentUtil.EVENTS.forEach(function (eventName) {\n ComponentUtil.EVENT_CALLBACKS.push(ComponentUtil.getCallbackForEvent(eventName));\n ComponentUtil.EVENT_CALLBACKS_NO_PREFIX.push(eventName);\n });\n }\n return ComponentUtil.EVENT_CALLBACKS;\n };\n ComponentUtil.copyAttributesToGridOptions = function (gridOptions, component, skipEventDeprecationCheck) {\n if (skipEventDeprecationCheck === void 0) { skipEventDeprecationCheck = false; }\n checkForDeprecated(component);\n // create empty grid options if none were passed\n if (typeof gridOptions !== 'object') {\n gridOptions = {};\n }\n // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n var pGridOptions = gridOptions;\n // add in all the simple properties\n ComponentUtil.ARRAY_PROPERTIES\n .concat(ComponentUtil.STRING_PROPERTIES)\n .concat(ComponentUtil.OBJECT_PROPERTIES)\n .concat(ComponentUtil.FUNCTION_PROPERTIES)\n .forEach(function (key) {\n if (typeof component[key] !== 'undefined') {\n pGridOptions[key] = component[key];\n }\n });\n ComponentUtil.BOOLEAN_PROPERTIES.forEach(function (key) {\n if (typeof component[key] !== 'undefined') {\n pGridOptions[key] = ComponentUtil.toBoolean(component[key]);\n }\n });\n ComponentUtil.NUMBER_PROPERTIES.forEach(function (key) {\n if (typeof component[key] !== 'undefined') {\n pGridOptions[key] = ComponentUtil.toNumber(component[key]);\n }\n });\n ComponentUtil.getEventCallbacks().forEach(function (funcName) {\n if (typeof component[funcName] !== 'undefined') {\n pGridOptions[funcName] = component[funcName];\n }\n });\n // purely for event deprecation checks (for frameworks - wouldn't apply for non-fw versions)\n if (!skipEventDeprecationCheck) {\n ComponentUtil.EVENT_CALLBACKS_NO_PREFIX.forEach(function (funcName) {\n // react uses onXXX...not sure why this is diff to the other frameworks\n var onMethodName = ComponentUtil.getCallbackForEvent(funcName);\n if (typeof component[funcName] !== 'undefined' ||\n typeof component[onMethodName] !== 'undefined') {\n gridOptionsWrapper_1.GridOptionsWrapper.checkEventDeprecation(funcName);\n }\n });\n }\n return gridOptions;\n };\n ComponentUtil.getCallbackForEvent = function (eventName) {\n if (!eventName || eventName.length < 2) {\n return eventName;\n }\n else {\n return 'on' + eventName[0].toUpperCase() + eventName.substr(1);\n }\n };\n ComponentUtil.processOnChange = function (changes, gridOptions, api, columnApi) {\n if (!changes) {\n return;\n }\n checkForDeprecated(changes);\n // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n var pGridOptions = gridOptions;\n // check if any change for the simple types, and if so, then just copy in the new value\n ComponentUtil.ARRAY_PROPERTIES\n .concat(ComponentUtil.OBJECT_PROPERTIES)\n .concat(ComponentUtil.STRING_PROPERTIES)\n .forEach(function (key) {\n if (changes[key]) {\n pGridOptions[key] = changes[key].currentValue;\n }\n });\n ComponentUtil.BOOLEAN_PROPERTIES.forEach(function (key) {\n if (changes[key]) {\n pGridOptions[key] = ComponentUtil.toBoolean(changes[key].currentValue);\n }\n });\n ComponentUtil.NUMBER_PROPERTIES.forEach(function (key) {\n if (changes[key]) {\n pGridOptions[key] = ComponentUtil.toNumber(changes[key].currentValue);\n }\n });\n ComponentUtil.getEventCallbacks().forEach(function (funcName) {\n if (changes[funcName]) {\n pGridOptions[funcName] = changes[funcName].currentValue;\n }\n });\n if (changes.enableCellTextSelection) {\n api.setEnableCellTextSelection(ComponentUtil.toBoolean(changes.enableCellTextSelection.currentValue));\n }\n if (changes.showToolPanel) {\n api.showToolPanel(ComponentUtil.toBoolean(changes.showToolPanel.currentValue));\n }\n if (changes.quickFilterText) {\n api.setQuickFilter(changes.quickFilterText.currentValue);\n }\n if (changes.rowData) {\n api.setRowData(changes.rowData.currentValue);\n }\n if (changes.pinnedTopRowData) {\n api.setPinnedTopRowData(changes.pinnedTopRowData.currentValue);\n }\n if (changes.pinnedBottomRowData) {\n api.setPinnedBottomRowData(changes.pinnedBottomRowData.currentValue);\n }\n if (changes.columnDefs) {\n api.setColumnDefs(changes.columnDefs.currentValue, \"gridOptionsChanged\");\n }\n if (changes.datasource) {\n api.setDatasource(changes.datasource.currentValue);\n }\n if (changes.headerHeight) {\n api.setHeaderHeight(ComponentUtil.toNumber(changes.headerHeight.currentValue));\n }\n if (changes.paginationPageSize) {\n api.paginationSetPageSize(ComponentUtil.toNumber(changes.paginationPageSize.currentValue));\n }\n if (changes.pivotMode) {\n columnApi.setPivotMode(ComponentUtil.toBoolean(changes.pivotMode.currentValue));\n }\n if (changes.groupRemoveSingleChildren) {\n api.setGroupRemoveSingleChildren(ComponentUtil.toBoolean(changes.groupRemoveSingleChildren.currentValue));\n }\n if (changes.suppressRowDrag) {\n api.setSuppressRowDrag(ComponentUtil.toBoolean(changes.suppressRowDrag.currentValue));\n }\n if (changes.gridAutoHeight) {\n api.setGridAutoHeight(ComponentUtil.toBoolean(changes.gridAutoHeight.currentValue));\n }\n if (changes.suppressClipboardPaste) {\n api.setSuppressClipboardPaste(ComponentUtil.toBoolean(changes.suppressClipboardPaste.currentValue));\n }\n if (changes.sideBar) {\n api.setSideBar(changes.sideBar.currentValue);\n }\n if (changes.datasource) {\n api.setDatasource(changes.datasource.currentValue);\n }\n // copy changes into an event for dispatch\n var event = {\n type: events_1.Events.EVENT_COMPONENT_STATE_CHANGED,\n api: gridOptions.api,\n columnApi: gridOptions.columnApi\n };\n utils_1._.iterateObject(changes, function (key, value) {\n event[key] = value;\n });\n api.dispatchEvent(event);\n };\n ComponentUtil.toBoolean = function (value) {\n if (typeof value === 'boolean') {\n return value;\n }\n else if (typeof value === 'string') {\n // for boolean, compare to empty String to allow attributes appearing with\n // not value to be treated as 'true'\n return value.toUpperCase() === 'TRUE' || value == '';\n }\n else {\n return false;\n }\n };\n ComponentUtil.toNumber = function (value) {\n if (typeof value === 'number') {\n return value;\n }\n else if (typeof value === 'string') {\n return Number(value);\n }\n else {\n return undefined;\n }\n };\n // all the events are populated in here AFTER this class (at the bottom of the file).\n ComponentUtil.EVENTS = [];\n ComponentUtil.STRING_PROPERTIES = propertyKeys_1.PropertyKeys.STRING_PROPERTIES;\n ComponentUtil.OBJECT_PROPERTIES = propertyKeys_1.PropertyKeys.OBJECT_PROPERTIES;\n ComponentUtil.ARRAY_PROPERTIES = propertyKeys_1.PropertyKeys.ARRAY_PROPERTIES;\n ComponentUtil.NUMBER_PROPERTIES = propertyKeys_1.PropertyKeys.NUMBER_PROPERTIES;\n ComponentUtil.BOOLEAN_PROPERTIES = propertyKeys_1.PropertyKeys.BOOLEAN_PROPERTIES;\n ComponentUtil.FUNCTION_PROPERTIES = propertyKeys_1.PropertyKeys.FUNCTION_PROPERTIES;\n ComponentUtil.ALL_PROPERTIES = propertyKeys_1.PropertyKeys.ALL_PROPERTIES;\n return ComponentUtil;\n}());\nexports.ComponentUtil = ComponentUtil;\nutils_1._.iterateObject(events_1.Events, function (key, value) {\n ComponentUtil.EVENTS.push(value);\n});\nfunction checkForDeprecated(changes) {\n if (changes.rowDeselected || changes.onRowDeselected) {\n console.warn('ag-grid: as of v3.4 rowDeselected no longer exists. Please check the docs.');\n }\n}\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar templateService_1 = require(\"../templateService\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar eventService_1 = require(\"../eventService\");\nvar rowComp_1 = require(\"./rowComp\");\nvar events_1 = require(\"../events\");\nvar constants_1 = require(\"../constants\");\nvar cellComp_1 = require(\"./cellComp\");\nvar context_1 = require(\"../context/context\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar logger_1 = require(\"../logger\");\nvar focusedCellController_1 = require(\"../focusedCellController\");\nvar cellNavigationService_1 = require(\"../cellNavigationService\");\nvar gridCell_1 = require(\"../entities/gridCell\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar paginationProxy_1 = require(\"../rowModels/paginationProxy\");\nvar gridApi_1 = require(\"../gridApi\");\nvar pinnedRowModel_1 = require(\"../rowModels/pinnedRowModel\");\nvar beans_1 = require(\"./beans\");\nvar animationFrameService_1 = require(\"../misc/animationFrameService\");\nvar maxDivHeightScaler_1 = require(\"./maxDivHeightScaler\");\nvar utils_1 = require(\"../utils\");\nvar RowRenderer = /** @class */ (function (_super) {\n __extends(RowRenderer, _super);\n function RowRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // map of row ids to row objects. keeps track of which elements\n // are rendered for which rows in the dom.\n _this.rowCompsByIndex = {};\n _this.floatingTopRowComps = [];\n _this.floatingBottomRowComps = [];\n // we only allow one refresh at a time, otherwise the internal memory structure here\n // will get messed up. this can happen if the user has a cellRenderer, and inside the\n // renderer they call an API method that results in another pass of the refresh,\n // then it will be trying to draw rows in the middle of a refresh.\n _this.refreshInProgress = false;\n return _this;\n }\n RowRenderer.prototype.registerGridCore = function (gridCore) {\n this.gridCore = gridCore;\n };\n RowRenderer.prototype.agWire = function (loggerFactory) {\n this.logger = loggerFactory.create(\"RowRenderer\");\n };\n RowRenderer.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.rowContainers = this.gridPanel.getRowContainers();\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_PAGINATION_CHANGED, this.onPageLoaded.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_BODY_SCROLL, this.redrawAfterScroll.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_BODY_HEIGHT_CHANGED, this.redrawAfterScroll.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n this.embedFullWidthRows = this.printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();\n this.redrawAfterModelUpdate();\n };\n RowRenderer.prototype.onDomLayoutChanged = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n var embedFullWidthRows = printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();\n // if moving towards or away from print layout, means we need to destroy all rows, as rows are not laid\n // out using absolute positioning when doing print layout\n var destroyRows = embedFullWidthRows !== this.embedFullWidthRows || this.printLayout !== printLayout;\n this.printLayout = printLayout;\n this.embedFullWidthRows = embedFullWidthRows;\n if (destroyRows) {\n this.redrawAfterModelUpdate();\n }\n };\n // for row models that have datasources, when we update the datasource, we need to force the rowRenderer\n // to redraw all rows. otherwise the old rows from the old datasource will stay displayed.\n RowRenderer.prototype.datasourceChanged = function () {\n this.firstRenderedRow = 0;\n this.lastRenderedRow = -1;\n var rowIndexesToRemove = Object.keys(this.rowCompsByIndex);\n this.removeRowComps(rowIndexesToRemove);\n };\n RowRenderer.prototype.onPageLoaded = function (refreshEvent) {\n if (utils_1._.missing(refreshEvent)) {\n refreshEvent = {\n type: events_1.Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: false\n };\n }\n this.onModelUpdated(refreshEvent);\n };\n RowRenderer.prototype.getAllCellsForColumn = function (column) {\n var eCells = [];\n utils_1._.iterateObject(this.rowCompsByIndex, callback);\n utils_1._.iterateObject(this.floatingBottomRowComps, callback);\n utils_1._.iterateObject(this.floatingTopRowComps, callback);\n function callback(key, rowComp) {\n var eCell = rowComp.getCellForCol(column);\n if (eCell) {\n eCells.push(eCell);\n }\n }\n return eCells;\n };\n RowRenderer.prototype.refreshFloatingRowComps = function () {\n this.refreshFloatingRows(this.floatingTopRowComps, this.pinnedRowModel.getPinnedTopRowData(), this.rowContainers.floatingTopPinnedLeft, this.rowContainers.floatingTopPinnedRight, this.rowContainers.floatingTop, this.rowContainers.floatingTopFullWidth);\n this.refreshFloatingRows(this.floatingBottomRowComps, this.pinnedRowModel.getPinnedBottomRowData(), this.rowContainers.floatingBottomPinnedLeft, this.rowContainers.floatingBottomPinnedRight, this.rowContainers.floatingBottom, this.rowContainers.floatingBottomFullWith);\n };\n RowRenderer.prototype.refreshFloatingRows = function (rowComps, rowNodes, pinnedLeftContainerComp, pinnedRightContainerComp, bodyContainerComp, fullWidthContainerComp) {\n var _this = this;\n rowComps.forEach(function (row) {\n row.destroy();\n });\n rowComps.length = 0;\n if (rowNodes) {\n rowNodes.forEach(function (node) {\n var rowComp = new rowComp_1.RowComp(_this.$scope, bodyContainerComp, pinnedLeftContainerComp, pinnedRightContainerComp, fullWidthContainerComp, node, _this.beans, false, false, _this.printLayout, _this.embedFullWidthRows);\n rowComp.init();\n rowComps.push(rowComp);\n });\n }\n this.flushContainers(rowComps);\n };\n RowRenderer.prototype.onPinnedRowDataChanged = function () {\n // recycling rows in order to ensure cell editing is not cancelled\n var params = {\n recycleRows: true\n };\n this.redrawAfterModelUpdate(params);\n };\n RowRenderer.prototype.onModelUpdated = function (refreshEvent) {\n var params = {\n recycleRows: refreshEvent.keepRenderedRows,\n animate: refreshEvent.animate,\n newData: refreshEvent.newData,\n newPage: refreshEvent.newPage,\n // because this is a model updated event (not pinned rows), we\n // can skip updating the pinned rows. this is needed so that if user\n // is doing transaction updates, the pinned rows are not getting constantly\n // trashed - or editing cells in pinned rows are not refreshed and put into read mode\n onlyBody: true\n };\n this.redrawAfterModelUpdate(params);\n };\n // if the row nodes are not rendered, no index is returned\n RowRenderer.prototype.getRenderedIndexesForRowNodes = function (rowNodes) {\n var result = [];\n if (utils_1._.missing(rowNodes)) {\n return result;\n }\n utils_1._.iterateObject(this.rowCompsByIndex, function (index, renderedRow) {\n var rowNode = renderedRow.getRowNode();\n if (rowNodes.indexOf(rowNode) >= 0) {\n result.push(index);\n }\n });\n return result;\n };\n RowRenderer.prototype.redrawRows = function (rowNodes) {\n if (!rowNodes || rowNodes.length == 0) {\n return;\n }\n // we only need to be worried about rendered rows, as this method is\n // called to what's rendered. if the row isn't rendered, we don't care\n var indexesToRemove = this.getRenderedIndexesForRowNodes(rowNodes);\n // remove the rows\n this.removeRowComps(indexesToRemove);\n // add draw them again\n this.redrawAfterModelUpdate({\n recycleRows: true\n });\n };\n RowRenderer.prototype.getCellToRestoreFocusToAfterRefresh = function (params) {\n var focusedCell = params.suppressKeepFocus ? null : this.focusedCellController.getFocusCellToUseAfterRefresh();\n if (utils_1._.missing(focusedCell)) {\n return null;\n }\n // if the dom is not actually focused on a cell, then we don't try to refocus. the problem this\n // solves is with editing - if the user is editing, eg focus is on a text field, and not on the\n // cell itself, then the cell can be registered as having focus, however it's the text field that\n // has the focus and not the cell div. therefore, when the refresh is finished, the grid will focus\n // the cell, and not the textfield. that means if the user is in a text field, and the grid refreshes,\n // the focus is lost from the text field. we do not want this.\n var activeElement = document.activeElement;\n var domData = this.gridOptionsWrapper.getDomData(activeElement, cellComp_1.CellComp.DOM_DATA_KEY_CELL_COMP);\n var elementIsNotACellDev = utils_1._.missing(domData);\n if (elementIsNotACellDev) {\n return null;\n }\n return focusedCell;\n };\n // gets called after changes to the model.\n RowRenderer.prototype.redrawAfterModelUpdate = function (params) {\n if (params === void 0) { params = {}; }\n this.getLockOnRefresh();\n var focusedCell = this.getCellToRestoreFocusToAfterRefresh(params);\n this.sizeContainerToPageHeight();\n this.scrollToTopIfNewData(params);\n // never recycle rows when print layout, we draw each row again from scratch. this is because print layout\n // uses normal dom layout to put cells into dom - it doesn't allow reordering rows.\n var recycleRows = !this.printLayout && params.recycleRows;\n var animate = params.animate && this.gridOptionsWrapper.isAnimateRows();\n var rowsToRecycle = this.binRowComps(recycleRows);\n this.redraw(rowsToRecycle, animate);\n if (!params.onlyBody) {\n this.refreshFloatingRowComps();\n }\n this.restoreFocusedCell(focusedCell);\n this.releaseLockOnRefresh();\n };\n RowRenderer.prototype.scrollToTopIfNewData = function (params) {\n var scrollToTop = params.newData || params.newPage;\n var suppressScrollToTop = this.gridOptionsWrapper.isSuppressScrollOnNewData();\n if (scrollToTop && !suppressScrollToTop) {\n this.gridPanel.scrollToTop();\n }\n };\n RowRenderer.prototype.sizeContainerToPageHeight = function () {\n var containers = [\n this.rowContainers.body,\n this.rowContainers.fullWidth,\n this.rowContainers.pinnedLeft,\n this.rowContainers.pinnedRight\n ];\n if (this.printLayout) {\n containers.forEach(function (container) { return container.setHeight(null); });\n return;\n }\n var containerHeight = this.paginationProxy.getCurrentPageHeight();\n // we need at least 1 pixel for the horizontal scroll to work. so if there are now rows,\n // we still want the scroll to be present, otherwise there would be no way to scroll the header\n // which might be needed us user wants to access columns\n // on the RHS - and if that was where the filter was that cause no rows to be presented, there\n // is no way to remove the filter.\n if (containerHeight === 0) {\n containerHeight = 1;\n }\n this.maxDivHeightScaler.setModelHeight(containerHeight);\n var realHeight = this.maxDivHeightScaler.getUiContainerHeight();\n containers.forEach(function (container) { return container.setHeight(realHeight); });\n };\n RowRenderer.prototype.getLockOnRefresh = function () {\n if (this.refreshInProgress) {\n throw new Error(\"ag-Grid: cannot get grid to draw rows when it is in the middle of drawing rows. \" +\n \"Your code probably called a grid API method while the grid was in the render stage. To overcome \" +\n \"this, put the API call into a timeout, eg instead of api.refreshView(), \" +\n \"call setTimeout(function(){api.refreshView(),0}). To see what part of your code \" +\n \"that caused the refresh check this stacktrace.\");\n }\n this.refreshInProgress = true;\n };\n RowRenderer.prototype.releaseLockOnRefresh = function () {\n this.refreshInProgress = false;\n };\n // sets the focus to the provided cell, if the cell is provided. this way, the user can call refresh without\n // worry about the focus been lost. this is important when the user is using keyboard navigation to do edits\n // and the cellEditor is calling 'refresh' to get other cells to update (as other cells might depend on the\n // edited cell).\n RowRenderer.prototype.restoreFocusedCell = function (gridCell) {\n if (gridCell) {\n this.focusedCellController.setFocusedCell(gridCell.rowIndex, gridCell.column, gridCell.floating, true);\n }\n };\n RowRenderer.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.forEachRowComp(function (key, rowComp) {\n rowComp.stopEditing(cancel);\n });\n };\n RowRenderer.prototype.forEachCellComp = function (callback) {\n this.forEachRowComp(function (key, rowComp) { return rowComp.forEachCellComp(callback); });\n };\n RowRenderer.prototype.forEachRowComp = function (callback) {\n utils_1._.iterateObject(this.rowCompsByIndex, callback);\n utils_1._.iterateObject(this.floatingTopRowComps, callback);\n utils_1._.iterateObject(this.floatingBottomRowComps, callback);\n };\n RowRenderer.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n var rowComp = this.rowCompsByIndex[rowIndex];\n if (rowComp) {\n rowComp.addEventListener(eventName, callback);\n }\n };\n RowRenderer.prototype.flashCells = function (params) {\n if (params === void 0) { params = {}; }\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) { return cellComp.flashCell(); });\n };\n RowRenderer.prototype.refreshCells = function (params) {\n if (params === void 0) { params = {}; }\n var refreshCellParams = {\n forceRefresh: params.force,\n newData: false\n };\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) { return cellComp.refreshCell(refreshCellParams); });\n };\n RowRenderer.prototype.getCellRendererInstances = function (params) {\n var res = [];\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) {\n var cellRenderer = cellComp.getCellRenderer();\n if (cellRenderer) {\n res.push(cellRenderer);\n }\n });\n return res;\n };\n RowRenderer.prototype.getCellEditorInstances = function (params) {\n var res = [];\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) {\n var cellEditor = cellComp.getCellEditor();\n if (cellEditor) {\n res.push(cellEditor);\n }\n });\n return res;\n };\n RowRenderer.prototype.getEditingCells = function () {\n var res = [];\n this.forEachCellComp(function (cellComp) {\n if (cellComp.isEditing()) {\n var gridCellDef = cellComp.getGridCell().getGridCellDef();\n res.push(gridCellDef);\n }\n });\n return res;\n };\n // calls the callback for each cellComp that match the provided rowNodes and columns. eg if one row node\n // and two columns provided, that identifies 4 cells, so callback gets called 4 times, once for each cell.\n RowRenderer.prototype.forEachCellCompFiltered = function (rowNodes, columns, callback) {\n var _this = this;\n var rowIdsMap;\n if (utils_1._.exists(rowNodes)) {\n rowIdsMap = {\n top: {},\n bottom: {},\n normal: {}\n };\n rowNodes.forEach(function (rowNode) {\n if (rowNode.rowPinned === constants_1.Constants.PINNED_TOP) {\n rowIdsMap.top[rowNode.id] = true;\n }\n else if (rowNode.rowPinned === constants_1.Constants.PINNED_BOTTOM) {\n rowIdsMap.bottom[rowNode.id] = true;\n }\n else {\n rowIdsMap.normal[rowNode.id] = true;\n }\n });\n }\n var colIdsMap;\n if (utils_1._.exists(columns)) {\n colIdsMap = {};\n columns.forEach(function (colKey) {\n var column = _this.columnController.getGridColumn(colKey);\n if (utils_1._.exists(column)) {\n colIdsMap[column.getId()] = true;\n }\n });\n }\n var processRow = function (rowComp) {\n var rowNode = rowComp.getRowNode();\n var id = rowNode.id;\n var floating = rowNode.rowPinned;\n // skip this row if it is missing from the provided list\n if (utils_1._.exists(rowIdsMap)) {\n if (floating === constants_1.Constants.PINNED_BOTTOM) {\n if (!rowIdsMap.bottom[id]) {\n return;\n }\n }\n else if (floating === constants_1.Constants.PINNED_TOP) {\n if (!rowIdsMap.top[id]) {\n return;\n }\n }\n else {\n if (!rowIdsMap.normal[id]) {\n return;\n }\n }\n }\n rowComp.forEachCellComp(function (cellComp) {\n var colId = cellComp.getColumn().getId();\n var excludeColFromRefresh = colIdsMap && !colIdsMap[colId];\n if (excludeColFromRefresh) {\n return;\n }\n callback(cellComp);\n });\n };\n utils_1._.iterateObject(this.rowCompsByIndex, function (index, rowComp) {\n processRow(rowComp);\n });\n if (this.floatingTopRowComps) {\n this.floatingTopRowComps.forEach(processRow);\n }\n if (this.floatingBottomRowComps) {\n this.floatingBottomRowComps.forEach(processRow);\n }\n };\n RowRenderer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n var rowIndexesToRemove = Object.keys(this.rowCompsByIndex);\n this.removeRowComps(rowIndexesToRemove);\n };\n RowRenderer.prototype.binRowComps = function (recycleRows) {\n var _this = this;\n var indexesToRemove;\n var rowsToRecycle = {};\n if (recycleRows) {\n indexesToRemove = [];\n utils_1._.iterateObject(this.rowCompsByIndex, function (index, rowComp) {\n var rowNode = rowComp.getRowNode();\n if (utils_1._.exists(rowNode.id)) {\n rowsToRecycle[rowNode.id] = rowComp;\n delete _this.rowCompsByIndex[index];\n }\n else {\n indexesToRemove.push(index);\n }\n });\n }\n else {\n indexesToRemove = Object.keys(this.rowCompsByIndex);\n }\n this.removeRowComps(indexesToRemove);\n return rowsToRecycle;\n };\n // takes array of row indexes\n RowRenderer.prototype.removeRowComps = function (rowsToRemove) {\n var _this = this;\n // if no fromIndex then set to -1, which will refresh everything\n // let realFromIndex = -1;\n rowsToRemove.forEach(function (indexToRemove) {\n var renderedRow = _this.rowCompsByIndex[indexToRemove];\n renderedRow.destroy();\n delete _this.rowCompsByIndex[indexToRemove];\n });\n };\n // gets called when rows don't change, but viewport does, so after:\n // 1) height of grid body changes, ie number of displayed rows has changed\n // 2) grid scrolled to new position\n // 3) ensure index visible (which is a scroll)\n RowRenderer.prototype.redrawAfterScroll = function () {\n this.getLockOnRefresh();\n this.redraw(null, false, true);\n this.releaseLockOnRefresh();\n };\n RowRenderer.prototype.removeRowCompsNotToDraw = function (indexesToDraw) {\n // for speedy lookup, dump into map\n var indexesToDrawMap = {};\n indexesToDraw.forEach(function (index) { return (indexesToDrawMap[index] = true); });\n var existingIndexes = Object.keys(this.rowCompsByIndex);\n var indexesNotToDraw = utils_1._.filter(existingIndexes, function (index) { return !indexesToDrawMap[index]; });\n this.removeRowComps(indexesNotToDraw);\n };\n RowRenderer.prototype.calculateIndexesToDraw = function () {\n var _this = this;\n // all in all indexes in the viewport\n var indexesToDraw = utils_1._.createArrayOfNumbers(this.firstRenderedRow, this.lastRenderedRow);\n // add in indexes of rows we want to keep, because they are currently editing\n utils_1._.iterateObject(this.rowCompsByIndex, function (indexStr, rowComp) {\n var index = Number(indexStr);\n if (index < _this.firstRenderedRow || index > _this.lastRenderedRow) {\n if (_this.keepRowBecauseEditingOrFocused(rowComp)) {\n indexesToDraw.push(index);\n }\n }\n });\n indexesToDraw.sort(function (a, b) { return a - b; });\n return indexesToDraw;\n };\n RowRenderer.prototype.redraw = function (rowsToRecycle, animate, afterScroll) {\n var _this = this;\n if (animate === void 0) { animate = false; }\n if (afterScroll === void 0) { afterScroll = false; }\n this.maxDivHeightScaler.updateOffset();\n this.workOutFirstAndLastRowsToRender();\n // the row can already exist and be in the following:\n // rowsToRecycle -> if model change, then the index may be different, however row may\n // exist here from previous time (mapped by id).\n // this.rowCompsByIndex -> if just a scroll, then this will contain what is currently in the viewport\n // this is all the indexes we want, including those that already exist, so this method\n // will end up going through each index and drawing only if the row doesn't already exist\n var indexesToDraw = this.calculateIndexesToDraw();\n this.removeRowCompsNotToDraw(indexesToDraw);\n // never animate when doing print layout - as we want to get things ready to print as quickly as possible,\n // otherwise we risk the printer printing a row that's half faded (half way through fading in)\n if (this.printLayout) {\n animate = false;\n }\n // add in new rows\n var nextVmTurnFunctions = [];\n var rowComps = [];\n indexesToDraw.forEach(function (rowIndex) {\n var rowComp = _this.createOrUpdateRowComp(rowIndex, rowsToRecycle, animate, afterScroll);\n if (utils_1._.exists(rowComp)) {\n rowComps.push(rowComp);\n utils_1._.pushAll(nextVmTurnFunctions, rowComp.getAndClearNextVMTurnFunctions());\n }\n });\n this.flushContainers(rowComps);\n utils_1._.executeNextVMTurn(nextVmTurnFunctions);\n var useAnimationFrame = afterScroll && !this.gridOptionsWrapper.isSuppressAnimationFrame() && !this.printLayout;\n if (useAnimationFrame) {\n this.beans.taskQueue.addP2Task(this.destroyRowComps.bind(this, rowsToRecycle, animate));\n }\n else {\n this.destroyRowComps(rowsToRecycle, animate);\n }\n this.checkAngularCompile();\n };\n RowRenderer.prototype.flushContainers = function (rowComps) {\n utils_1._.iterateObject(this.rowContainers, function (key, rowContainerComp) {\n if (rowContainerComp) {\n rowContainerComp.flushRowTemplates();\n }\n });\n rowComps.forEach(function (rowComp) { return rowComp.afterFlush(); });\n };\n RowRenderer.prototype.onDisplayedColumnsChanged = function () {\n var pinningLeft = this.columnController.isPinningLeft();\n var pinningRight = this.columnController.isPinningRight();\n var atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;\n if (atLeastOneChanged) {\n this.pinningLeft = pinningLeft;\n this.pinningRight = pinningRight;\n if (this.embedFullWidthRows) {\n this.redrawFullWidthEmbeddedRows();\n }\n }\n };\n // when embedding, what gets showed in each section depends on what is pinned. eg if embedding group expand / collapse,\n // then it should go into the pinned left area if pinning left, or the center area if not pinning.\n RowRenderer.prototype.redrawFullWidthEmbeddedRows = function () {\n // if either of the pinned panels has shown / hidden, then need to redraw the fullWidth bits when\n // embedded, as what appears in each section depends on whether we are pinned or not\n var rowsToRemove = [];\n utils_1._.iterateObject(this.rowCompsByIndex, function (id, rowComp) {\n if (rowComp.isFullWidth()) {\n var rowIndex = rowComp.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n }\n });\n this.refreshFloatingRowComps();\n this.removeRowComps(rowsToRemove);\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.refreshFullWidthRows = function () {\n var rowsToRemove = [];\n utils_1._.iterateObject(this.rowCompsByIndex, function (id, rowComp) {\n if (rowComp.isFullWidth()) {\n var rowIndex = rowComp.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n }\n });\n this.removeRowComps(rowsToRemove);\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.createOrUpdateRowComp = function (rowIndex, rowsToRecycle, animate, afterScroll) {\n var rowNode;\n var rowComp = this.rowCompsByIndex[rowIndex];\n // if no row comp, see if we can get it from the previous rowComps\n if (!rowComp) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n if (utils_1._.exists(rowNode) && utils_1._.exists(rowsToRecycle) && rowsToRecycle[rowNode.id] && rowNode.alreadyRendered) {\n rowComp = rowsToRecycle[rowNode.id];\n rowsToRecycle[rowNode.id] = null;\n }\n }\n var creatingNewRowComp = !rowComp;\n if (creatingNewRowComp) {\n // create a new one\n if (!rowNode) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n }\n if (utils_1._.exists(rowNode)) {\n rowComp = this.createRowComp(rowNode, animate, afterScroll);\n }\n else {\n // this should never happen - if somehow we are trying to create\n // a row for a rowNode that does not exist.\n return;\n }\n }\n else {\n // ensure row comp is in right position in DOM\n rowComp.ensureDomOrder();\n }\n if (rowNode) {\n // set node as 'alreadyRendered' to ensure we only recycle rowComps that have been rendered, this ensures\n // we don't reuse rowComps that have been removed and then re-added in the same batch transaction.\n rowNode.alreadyRendered = true;\n }\n this.rowCompsByIndex[rowIndex] = rowComp;\n return rowComp;\n };\n RowRenderer.prototype.destroyRowComps = function (rowCompsMap, animate) {\n var delayedFuncs = [];\n utils_1._.iterateObject(rowCompsMap, function (nodeId, rowComp) {\n // if row was used, then it's null\n if (!rowComp) {\n return;\n }\n rowComp.destroy(animate);\n utils_1._.pushAll(delayedFuncs, rowComp.getAndClearDelayedDestroyFunctions());\n });\n utils_1._.executeInAWhile(delayedFuncs);\n };\n RowRenderer.prototype.checkAngularCompile = function () {\n var _this = this;\n // if we are doing angular compiling, then do digest the scope here\n if (this.gridOptionsWrapper.isAngularCompileRows()) {\n // we do it in a timeout, in case we are already in an apply\n window.setTimeout(function () {\n _this.$scope.$apply();\n }, 0);\n }\n };\n RowRenderer.prototype.workOutFirstAndLastRowsToRender = function () {\n var newFirst;\n var newLast;\n if (!this.paginationProxy.isRowsToRender()) {\n newFirst = 0;\n newLast = -1; // setting to -1 means nothing in range\n }\n else if (this.printLayout) {\n newFirst = this.paginationProxy.getPageFirstRow();\n newLast = this.paginationProxy.getPageLastRow();\n }\n else {\n var paginationOffset = this.paginationProxy ? this.paginationProxy.getPixelOffset() : 0;\n var maxDivHeightScaler = this.maxDivHeightScaler.getOffset();\n var bodyVRange = this.gridPanel.getVScrollPosition();\n var bodyTopPixel = bodyVRange.top;\n var bodyBottomPixel = bodyVRange.bottom;\n var bufferPixels = this.gridOptionsWrapper.getRowBufferInPixels();\n var firstPixel = bodyTopPixel + paginationOffset + maxDivHeightScaler - bufferPixels;\n var lastPixel = bodyBottomPixel + paginationOffset + maxDivHeightScaler + bufferPixels;\n this.ensureAllRowsInRangeHaveHeightsCalculated(firstPixel, lastPixel);\n var firstRowIndex = this.paginationProxy.getRowIndexAtPixel(firstPixel);\n var lastRowIndex = this.paginationProxy.getRowIndexAtPixel(lastPixel);\n var pageFirstRow = this.paginationProxy.getPageFirstRow();\n var pageLastRow = this.paginationProxy.getPageLastRow();\n // adjust, in case buffer extended actual size\n if (firstRowIndex < pageFirstRow) {\n firstRowIndex = pageFirstRow;\n }\n if (lastRowIndex > pageLastRow) {\n lastRowIndex = pageLastRow;\n }\n newFirst = firstRowIndex;\n newLast = lastRowIndex;\n }\n // sometimes user doesn't set CSS right and ends up with grid with no height and grid ends up\n // trying to render all the rows, eg 10,000+ rows. this will kill the browser. so instead of\n // killing the browser, we limit the number of rows. just in case some use case we didn't think\n // of, we also have a property to not do this operation.\n var rowLayoutNormal = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_NORMAL;\n var suppressRowCountRestriction = this.gridOptionsWrapper.isSuppressMaxRenderedRowRestriction();\n if (rowLayoutNormal && !suppressRowCountRestriction) {\n if (newLast - newFirst > 500) {\n newLast = newFirst + 500;\n }\n }\n var firstDiffers = newFirst !== this.firstRenderedRow;\n var lastDiffers = newLast !== this.lastRenderedRow;\n if (firstDiffers || lastDiffers) {\n this.firstRenderedRow = newFirst;\n this.lastRenderedRow = newLast;\n var event_1 = {\n type: events_1.Events.EVENT_VIEWPORT_CHANGED,\n firstRow: newFirst,\n lastRow: newLast,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n if (this.paginationProxy.isRowsToRender()) {\n var event_2 = {\n type: events_1.Events.EVENT_FIRST_DATA_RENDERED,\n firstRow: newFirst,\n lastRow: newLast,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEventOnce(event_2);\n }\n };\n RowRenderer.prototype.ensureAllRowsInRangeHaveHeightsCalculated = function (topPixel, bottomPixel) {\n // ensureRowHeightsVisible only works with CSRM, as it's the only row model that allows lazy row height calcs.\n // all the other row models just hard code so the method just returns back false\n var rowHeightsChanged = this.paginationProxy.ensureRowHeightsValid(topPixel, bottomPixel, -1, -1);\n if (rowHeightsChanged) {\n // if row heights have changed, we need to resize the containers the rows sit it\n this.sizeContainerToPageHeight();\n // we also need to update heightScaler as this has dependency of row container height\n this.maxDivHeightScaler.updateOffset();\n }\n };\n RowRenderer.prototype.getFirstVirtualRenderedRow = function () {\n return this.firstRenderedRow;\n };\n RowRenderer.prototype.getLastVirtualRenderedRow = function () {\n return this.lastRenderedRow;\n };\n // check that none of the rows to remove are editing or focused as:\n // a) if editing, we want to keep them, otherwise the user will loose the context of the edit,\n // eg user starts editing, enters some text, then scrolls down and then up, next time row rendered\n // the edit is reset - so we want to keep it rendered.\n // b) if focused, we want ot keep keyboard focus, so if user ctrl+c, it goes to clipboard,\n // otherwise the user can range select and drag (with focus cell going out of the viewport)\n // and then ctrl+c, nothing will happen if cell is removed from dom.\n RowRenderer.prototype.keepRowBecauseEditingOrFocused = function (rowComp) {\n var REMOVE_ROW = false;\n var KEEP_ROW = true;\n var rowNode = rowComp.getRowNode();\n var rowHasFocus = this.focusedCellController.isRowNodeFocused(rowNode);\n var rowIsEditing = rowComp.isEditing();\n var mightWantToKeepRow = rowHasFocus || rowIsEditing;\n // if we deffo don't want to keep it,\n if (!mightWantToKeepRow) {\n return REMOVE_ROW;\n }\n // editing row, only remove if it is no longer rendered, eg filtered out or new data set.\n // the reason we want to keep is if user is scrolling up and down, we don't want to loose\n // the context of the editing in process.\n var rowNodePresent = this.paginationProxy.isRowPresent(rowNode);\n return rowNodePresent ? KEEP_ROW : REMOVE_ROW;\n };\n RowRenderer.prototype.createRowComp = function (rowNode, animate, afterScroll) {\n var suppressAnimationFrame = this.gridOptionsWrapper.isSuppressAnimationFrame();\n // we don't use animations frames for printing, so the user can put the grid into print mode\n // and immediately print - otherwise the user would have to wait for the rows to draw in the background\n // (via the animation frames) which is awkward to do from code.\n // we only do the animation frames after scrolling, as this is where we want the smooth user experience.\n // having animation frames for other times makes the grid look 'jumpy'.\n var useAnimationFrameForCreate = afterScroll && !suppressAnimationFrame && !this.printLayout;\n var rowComp = new rowComp_1.RowComp(this.$scope, this.rowContainers.body, this.rowContainers.pinnedLeft, this.rowContainers.pinnedRight, this.rowContainers.fullWidth, rowNode, this.beans, animate, useAnimationFrameForCreate, this.printLayout, this.embedFullWidthRows);\n rowComp.init();\n return rowComp;\n };\n RowRenderer.prototype.getRenderedNodes = function () {\n var renderedRows = this.rowCompsByIndex;\n return Object.keys(renderedRows).map(function (key) {\n return renderedRows[key].getRowNode();\n });\n };\n // we use index for rows, but column object for columns, as the next column (by index) might not\n // be visible (header grouping) so it's not reliable, so using the column object instead.\n RowRenderer.prototype.navigateToNextCell = function (event, key, currentCell, allowUserOverride) {\n var nextCell;\n // we keep searching for a next cell until we find one. this is how the group rows get skipped\n while (true) {\n var cellComp = this.getComponentForCell(currentCell);\n var colSpanningList = cellComp.getColSpanningList();\n // if the current cell is spanning across multiple columns, we need to move\n // our current position to be the last cell on the right before finding the\n // the next target.\n if (key === constants_1.Constants.KEY_RIGHT && colSpanningList.length > 1) {\n currentCell = new gridCell_1.GridCell({\n rowIndex: currentCell.rowIndex,\n column: colSpanningList[colSpanningList.length - 1],\n floating: currentCell.floating\n });\n }\n nextCell = this.cellNavigationService.getNextCellToFocus(key, currentCell);\n if (utils_1._.missing(nextCell)) {\n break;\n }\n var skipGroupRows = this.gridOptionsWrapper.isGroupUseEntireRow();\n if (!skipGroupRows) {\n break;\n }\n var rowNode = this.paginationProxy.getRow(nextCell.rowIndex);\n if (!rowNode.group) {\n break;\n }\n }\n if (nextCell) {\n var cellComp = this.getComponentForCell(nextCell);\n nextCell = cellComp.getGridCell();\n }\n // allow user to override what cell to go to next. when doing normal cell navigation (with keys)\n // we allow this, however if processing 'enter after edit' we don't allow override\n if (allowUserOverride) {\n var userFunc = this.gridOptionsWrapper.getNavigateToNextCellFunc();\n if (utils_1._.exists(userFunc)) {\n var params = {\n key: key,\n previousCellDef: currentCell.getGridCellDef(),\n nextCellDef: nextCell ? nextCell.getGridCellDef() : null,\n event: event\n };\n var nextCellDef = userFunc(params);\n if (utils_1._.exists(nextCellDef)) {\n nextCell = new gridCell_1.GridCell(nextCellDef);\n }\n else {\n nextCell = null;\n }\n }\n }\n // no next cell means we have reached a grid boundary, eg left, right, top or bottom of grid\n if (!nextCell) {\n return;\n }\n this.ensureCellVisible(nextCell);\n this.focusedCellController.setFocusedCell(nextCell.rowIndex, nextCell.column, nextCell.floating, true);\n if (this.rangeController) {\n var gridCell = new gridCell_1.GridCell({ rowIndex: nextCell.rowIndex, floating: nextCell.floating, column: nextCell.column });\n this.rangeController.setRangeToCell(gridCell);\n }\n };\n RowRenderer.prototype.ensureCellVisible = function (gridCell) {\n // this scrolls the row into view\n if (utils_1._.missing(gridCell.floating)) {\n this.gridPanel.ensureIndexVisible(gridCell.rowIndex);\n }\n if (!gridCell.column.isPinned()) {\n this.gridPanel.ensureColumnVisible(gridCell.column);\n }\n // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible\n // floating cell, the scrolls get out of sync\n this.gridPanel.horizontallyScrollHeaderCenterAndFloatingCenter();\n // need to flush frames, to make sure the correct cells are rendered\n this.animationFrameService.flushAllFrames();\n };\n RowRenderer.prototype.startEditingCell = function (gridCell, keyPress, charPress) {\n var cell = this.getComponentForCell(gridCell);\n if (cell) {\n cell.startRowOrCellEdit(keyPress, charPress);\n }\n };\n RowRenderer.prototype.getComponentForCell = function (gridCell) {\n var rowComponent;\n switch (gridCell.floating) {\n case constants_1.Constants.PINNED_TOP:\n rowComponent = this.floatingTopRowComps[gridCell.rowIndex];\n break;\n case constants_1.Constants.PINNED_BOTTOM:\n rowComponent = this.floatingBottomRowComps[gridCell.rowIndex];\n break;\n default:\n rowComponent = this.rowCompsByIndex[gridCell.rowIndex];\n break;\n }\n if (!rowComponent) {\n return null;\n }\n var cellComponent = rowComponent.getRenderedCellForColumn(gridCell.column);\n return cellComponent;\n };\n RowRenderer.prototype.onTabKeyDown = function (previousRenderedCell, keyboardEvent) {\n var backwards = keyboardEvent.shiftKey;\n var success = this.moveToCellAfter(previousRenderedCell, backwards);\n if (success) {\n keyboardEvent.preventDefault();\n }\n };\n RowRenderer.prototype.tabToNextCell = function (backwards) {\n var focusedCell = this.focusedCellController.getFocusedCell();\n // if no focus, then cannot navigate\n if (utils_1._.missing(focusedCell)) {\n return false;\n }\n var renderedCell = this.getComponentForCell(focusedCell);\n // if cell is not rendered, means user has scrolled away from the cell\n if (utils_1._.missing(renderedCell)) {\n return false;\n }\n var result = this.moveToCellAfter(renderedCell, backwards);\n return result;\n };\n RowRenderer.prototype.moveToCellAfter = function (previousRenderedCell, backwards) {\n var editing = previousRenderedCell.isEditing();\n var res;\n if (editing) {\n if (this.gridOptionsWrapper.isFullRowEdit()) {\n res = this.moveToNextEditingRow(previousRenderedCell, backwards);\n }\n else {\n res = this.moveToNextEditingCell(previousRenderedCell, backwards);\n }\n }\n else {\n res = this.moveToNextCellNotEditing(previousRenderedCell, backwards);\n }\n return res;\n };\n RowRenderer.prototype.moveToNextEditingCell = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getGridCell();\n // need to do this before getting next cell to edit, in case the next cell\n // has editable function (eg colDef.editable=func() ) and it depends on the\n // result of this cell, so need to save updates from the first edit, in case\n // the value is referenced in the function.\n previousRenderedCell.stopEditing();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, true);\n var foundCell = utils_1._.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n nextRenderedCell.startEditingIfEnabled(null, null, true);\n nextRenderedCell.focusCell(false);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveToNextEditingRow = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getGridCell();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, true);\n var foundCell = utils_1._.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n this.moveEditToNextCellOrRow(previousRenderedCell, nextRenderedCell);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveToNextCellNotEditing = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getGridCell();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, false);\n var foundCell = utils_1._.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n nextRenderedCell.focusCell(true);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveEditToNextCellOrRow = function (previousRenderedCell, nextRenderedCell) {\n var pGridCell = previousRenderedCell.getGridCell();\n var nGridCell = nextRenderedCell.getGridCell();\n var rowsMatch = pGridCell.rowIndex === nGridCell.rowIndex && pGridCell.floating === nGridCell.floating;\n if (rowsMatch) {\n // same row, so we don't start / stop editing, we just move the focus along\n previousRenderedCell.setFocusOutOnEditor();\n nextRenderedCell.setFocusInOnEditor();\n }\n else {\n var pRow = previousRenderedCell.getRenderedRow();\n var nRow = nextRenderedCell.getRenderedRow();\n previousRenderedCell.setFocusOutOnEditor();\n pRow.stopEditing();\n nRow.startRowEditing();\n nextRenderedCell.setFocusInOnEditor();\n }\n nextRenderedCell.focusCell();\n };\n // called by the cell, when tab is pressed while editing.\n // @return: RenderedCell when navigation successful, otherwise null\n RowRenderer.prototype.findNextCellToFocusOn = function (gridCell, backwards, startEditing) {\n var nextCell = gridCell;\n while (true) {\n nextCell = this.cellNavigationService.getNextTabbedCell(nextCell, backwards);\n // allow user to override what cell to go to next\n var userFunc = this.gridOptionsWrapper.getTabToNextCellFunc();\n if (utils_1._.exists(userFunc)) {\n var params = {\n backwards: backwards,\n editing: startEditing,\n previousCellDef: gridCell.getGridCellDef(),\n nextCellDef: nextCell ? nextCell.getGridCellDef() : null\n };\n var nextCellDef = userFunc(params);\n if (utils_1._.exists(nextCellDef)) {\n nextCell = new gridCell_1.GridCell(nextCellDef);\n }\n else {\n nextCell = null;\n }\n }\n // if no 'next cell', means we have got to last cell of grid, so nothing to move to,\n // so bottom right cell going forwards, or top left going backwards\n if (!nextCell) {\n return null;\n }\n // if editing, but cell not editable, skip cell. we do this before we do all of\n // the 'ensure index visible' and 'flush all frames', otherwise if we are skipping\n // a bunch of cells (eg 10 rows) then all the work on ensuring cell visible is useless\n // (except for the last one) which causes grid to stall for a while.\n if (startEditing) {\n var rowNode = this.lookupRowNodeForCell(nextCell);\n var cellIsEditable = nextCell.column.isCellEditable(rowNode);\n if (!cellIsEditable) {\n continue;\n }\n }\n // this scrolls the row into view\n var cellIsNotFloating = utils_1._.missing(nextCell.floating);\n if (cellIsNotFloating) {\n this.gridPanel.ensureIndexVisible(nextCell.rowIndex);\n }\n // pinned columns don't scroll, so no need to ensure index visible\n if (!nextCell.column.isPinned()) {\n this.gridPanel.ensureColumnVisible(nextCell.column);\n }\n // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible\n // floating cell, the scrolls get out of sync\n this.gridPanel.horizontallyScrollHeaderCenterAndFloatingCenter();\n // get the grid panel to flush all animation frames - otherwise the call below to get the cellComp\n // could fail, if we just scrolled the grid (to make a cell visible) and the rendering hasn't finished.\n this.animationFrameService.flushAllFrames();\n // we have to call this after ensureColumnVisible - otherwise it could be a virtual column\n // or row that is not currently in view, hence the renderedCell would not exist\n var nextCellComp = this.getComponentForCell(nextCell);\n // if next cell is fullWidth row, then no rendered cell,\n // as fullWidth rows have no cells, so we skip it\n if (utils_1._.missing(nextCellComp)) {\n continue;\n }\n if (nextCellComp.isSuppressNavigable()) {\n continue;\n }\n // by default, when we click a cell, it gets selected into a range, so to keep keyboard navigation\n // consistent, we set into range here also.\n if (this.rangeController) {\n gridCell = new gridCell_1.GridCell({ rowIndex: nextCell.rowIndex, floating: nextCell.floating, column: nextCell.column });\n this.rangeController.setRangeToCell(gridCell);\n }\n // we successfully tabbed onto a grid cell, so return true\n return nextCellComp;\n }\n };\n RowRenderer.prototype.lookupRowNodeForCell = function (cell) {\n if (cell.floating === constants_1.Constants.PINNED_TOP) {\n return this.pinnedRowModel.getPinnedTopRow(cell.rowIndex);\n }\n if (cell.floating === constants_1.Constants.PINNED_BOTTOM) {\n return this.pinnedRowModel.getPinnedBottomRow(cell.rowIndex);\n }\n return this.paginationProxy.getRow(cell.rowIndex);\n };\n __decorate([\n context_1.Autowired(\"paginationProxy\"),\n __metadata(\"design:type\", paginationProxy_1.PaginationProxy)\n ], RowRenderer.prototype, \"paginationProxy\", void 0);\n __decorate([\n context_1.Autowired(\"columnController\"),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], RowRenderer.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired(\"gridOptionsWrapper\"),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], RowRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired(\"$scope\"),\n __metadata(\"design:type\", Object)\n ], RowRenderer.prototype, \"$scope\", void 0);\n __decorate([\n context_1.Autowired(\"expressionService\"),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], RowRenderer.prototype, \"expressionService\", void 0);\n __decorate([\n context_1.Autowired(\"templateService\"),\n __metadata(\"design:type\", templateService_1.TemplateService)\n ], RowRenderer.prototype, \"templateService\", void 0);\n __decorate([\n context_1.Autowired(\"valueService\"),\n __metadata(\"design:type\", valueService_1.ValueService)\n ], RowRenderer.prototype, \"valueService\", void 0);\n __decorate([\n context_1.Autowired(\"eventService\"),\n __metadata(\"design:type\", eventService_1.EventService)\n ], RowRenderer.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired(\"pinnedRowModel\"),\n __metadata(\"design:type\", pinnedRowModel_1.PinnedRowModel)\n ], RowRenderer.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n context_1.Autowired(\"loggerFactory\"),\n __metadata(\"design:type\", logger_1.LoggerFactory)\n ], RowRenderer.prototype, \"loggerFactory\", void 0);\n __decorate([\n context_1.Autowired(\"focusedCellController\"),\n __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n ], RowRenderer.prototype, \"focusedCellController\", void 0);\n __decorate([\n context_1.Autowired(\"cellNavigationService\"),\n __metadata(\"design:type\", cellNavigationService_1.CellNavigationService)\n ], RowRenderer.prototype, \"cellNavigationService\", void 0);\n __decorate([\n context_1.Autowired(\"columnApi\"),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], RowRenderer.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired(\"gridApi\"),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], RowRenderer.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired(\"beans\"),\n __metadata(\"design:type\", beans_1.Beans)\n ], RowRenderer.prototype, \"beans\", void 0);\n __decorate([\n context_1.Autowired(\"maxDivHeightScaler\"),\n __metadata(\"design:type\", maxDivHeightScaler_1.MaxDivHeightScaler)\n ], RowRenderer.prototype, \"maxDivHeightScaler\", void 0);\n __decorate([\n context_1.Autowired(\"animationFrameService\"),\n __metadata(\"design:type\", animationFrameService_1.AnimationFrameService)\n ], RowRenderer.prototype, \"animationFrameService\", void 0);\n __decorate([\n context_1.Optional(\"rangeController\"),\n __metadata(\"design:type\", Object)\n ], RowRenderer.prototype, \"rangeController\", void 0);\n __decorate([\n __param(0, context_1.Qualifier(\"loggerFactory\")),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], RowRenderer.prototype, \"agWire\", null);\n RowRenderer = __decorate([\n context_1.Bean(\"rowRenderer\")\n ], RowRenderer);\n return RowRenderer;\n}(beanStub_1.BeanStub));\nexports.RowRenderer = RowRenderer;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar utils_1 = require(\"../utils\");\nvar compIdSequence = new utils_1.NumberSequence();\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n function Component(template) {\n var _this = _super.call(this) || this;\n _this.childComponents = [];\n _this.annotatedEventListeners = [];\n _this.visible = true;\n // unique id for this row component. this is used for getting a reference to the HTML dom.\n // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying\n // around as we create a new rowComp instance for the same row node).\n _this.compId = compIdSequence.next();\n if (template) {\n _this.setTemplate(template);\n }\n return _this;\n }\n Component.prototype.getCompId = function () {\n return this.compId;\n };\n // for registered components only, eg creates AgCheckbox instance from ag-checkbox HTML tag\n Component.prototype.createChildComponentsFromTags = function (parentNode) {\n var _this = this;\n // we MUST take a copy of the list first, as the 'swapComponentForNode' adds comments into the DOM\n // which messes up the traversal order of the children.\n var childNodeList = utils_1._.copyNodeList(parentNode.childNodes);\n childNodeList.forEach(function (childNode) {\n var childComp = _this.getContext().createComponentFromElement(childNode, function (childComp) {\n // copy over all attributes, including css classes, so any attributes user put on the tag\n // wll be carried across\n _this.copyAttributesFromNode(childNode, childComp.getGui());\n });\n if (childComp) {\n // replace the tag (eg ag-checkbox) with the proper HTMLElement (eg 'div') in the dom\n _this.swapComponentForNode(childComp, parentNode, childNode);\n }\n else if (childNode.childNodes) {\n _this.createChildComponentsFromTags(childNode);\n }\n });\n };\n Component.prototype.copyAttributesFromNode = function (source, dest) {\n utils_1._.iterateNamedNodeMap(source.attributes, function (name, value) {\n dest.setAttribute(name, value);\n });\n };\n Component.prototype.swapComponentForNode = function (newComponent, parentNode, childNode) {\n var eComponent = newComponent.getGui();\n parentNode.replaceChild(eComponent, childNode);\n parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);\n this.childComponents.push(newComponent);\n this.swapInComponentForQuerySelectors(newComponent, childNode);\n };\n Component.prototype.swapInComponentForQuerySelectors = function (newComponent, childNode) {\n var thisProto = Object.getPrototypeOf(this);\n var thisNoType = this;\n while (thisProto != null) {\n var metaData = thisProto.__agComponentMetaData;\n var currentProtoName = (thisProto.constructor).name;\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n metaData[currentProtoName].querySelectors.forEach(function (querySelector) {\n if (thisNoType[querySelector.attributeName] === childNode) {\n thisNoType[querySelector.attributeName] = newComponent;\n }\n });\n }\n thisProto = Object.getPrototypeOf(thisProto);\n }\n };\n Component.prototype.setTemplate = function (template) {\n var eGui = utils_1._.loadTemplate(template);\n this.setTemplateFromElement(eGui);\n };\n Component.prototype.setTemplateFromElement = function (element) {\n this.eGui = element;\n this.eGui.__agComponent = this;\n this.addAnnotatedEventListeners();\n this.wireQuerySelectors();\n // context will not be available when user sets template in constructor\n var contextIsAvailable = !!this.getContext();\n if (contextIsAvailable) {\n this.createChildComponentsFromTags(this.getGui());\n }\n };\n Component.prototype.createChildComponentsPreConstruct = function () {\n // ui exists if user sets template in constructor. when this happens, we have to wait for the context\n // to be autoWired first before we can create child components.\n var uiExists = !!this.getGui();\n if (uiExists) {\n this.createChildComponentsFromTags(this.getGui());\n }\n };\n Component.prototype.wireQuerySelectors = function () {\n var _this = this;\n if (!this.eGui) {\n return;\n }\n var thisProto = Object.getPrototypeOf(this);\n var _loop_1 = function () {\n var metaData = thisProto.__agComponentMetaData;\n var currentProtoName = (thisProto.constructor).name;\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n var thisNoType_1 = this_1;\n metaData[currentProtoName].querySelectors.forEach(function (querySelector) {\n var resultOfQuery = _this.eGui.querySelector(querySelector.querySelector);\n if (resultOfQuery) {\n var backingComponent = resultOfQuery.__agComponent;\n if (backingComponent) {\n thisNoType_1[querySelector.attributeName] = backingComponent;\n }\n else {\n thisNoType_1[querySelector.attributeName] = resultOfQuery;\n }\n }\n else {\n // put debug msg in here if query selector fails???\n }\n });\n }\n thisProto = Object.getPrototypeOf(thisProto);\n };\n var this_1 = this;\n while (thisProto != null) {\n _loop_1();\n }\n };\n Component.prototype.addAnnotatedEventListeners = function () {\n var _this = this;\n this.removeAnnotatedEventListeners();\n if (!this.eGui) {\n return;\n }\n var listenerMethods = this.getAgComponentMetaData('listenerMethods');\n if (utils_1._.missingOrEmpty(listenerMethods)) {\n return;\n }\n if (!this.annotatedEventListeners) {\n this.annotatedEventListeners = [];\n }\n listenerMethods.forEach(function (eventListener) {\n var listener = _this[eventListener.methodName].bind(_this);\n _this.eGui.addEventListener(eventListener.eventName, listener);\n _this.annotatedEventListeners.push({ eventName: eventListener.eventName, listener: listener });\n });\n };\n Component.prototype.getAgComponentMetaData = function (key) {\n var res = [];\n var thisProto = Object.getPrototypeOf(this);\n while (thisProto != null) {\n var metaData = thisProto.__agComponentMetaData;\n var currentProtoName = (thisProto.constructor).name;\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName][key]) {\n res = res.concat(metaData[currentProtoName][key]);\n }\n thisProto = Object.getPrototypeOf(thisProto);\n }\n return res;\n };\n Component.prototype.removeAnnotatedEventListeners = function () {\n var _this = this;\n if (!this.annotatedEventListeners || !this.eGui) {\n return;\n }\n this.annotatedEventListeners.forEach(function (eventListener) {\n _this.eGui.removeEventListener(eventListener.eventName, eventListener.listener);\n });\n this.annotatedEventListeners = [];\n };\n Component.prototype.getGui = function () {\n return this.eGui;\n };\n // this method is for older code, that wants to provide the gui element,\n // it is not intended for this to be in ag-Stack\n Component.prototype.setGui = function (eGui) {\n this.eGui = eGui;\n };\n Component.prototype.queryForHtmlElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.queryForHtmlInputElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.appendChild = function (newChild) {\n if (utils_1._.isNodeOrElement(newChild)) {\n this.eGui.appendChild(newChild);\n }\n else {\n var childComponent = newChild;\n this.eGui.appendChild(childComponent.getGui());\n this.childComponents.push(childComponent);\n }\n };\n Component.prototype.addFeature = function (context, feature) {\n context.wireBean(feature);\n if (feature.destroy) {\n this.addDestroyFunc(feature.destroy.bind(feature));\n }\n };\n Component.prototype.isVisible = function () {\n return this.visible;\n };\n Component.prototype.setVisible = function (visible, visibilityMode) {\n var isDisplay = visibilityMode !== 'visibility';\n if (visible !== this.visible) {\n this.visible = visible;\n utils_1._.addOrRemoveCssClass(this.eGui, isDisplay ? 'ag-hidden' : 'ag-invisible', !visible);\n var event_1 = {\n type: Component.EVENT_VISIBLE_CHANGED,\n visible: this.visible\n };\n this.dispatchEvent(event_1);\n }\n };\n Component.prototype.addOrRemoveCssClass = function (className, addOrRemove) {\n utils_1._.addOrRemoveCssClass(this.eGui, className, addOrRemove);\n };\n Component.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.childComponents.forEach(function (childComponent) {\n if (childComponent && childComponent.destroy) {\n childComponent.destroy();\n }\n });\n this.childComponents.length = 0;\n this.removeAnnotatedEventListeners();\n };\n Component.prototype.addGuiEventListener = function (event, listener) {\n var _this = this;\n this.getGui().addEventListener(event, listener);\n this.addDestroyFunc(function () { return _this.getGui().removeEventListener(event, listener); });\n };\n Component.prototype.addCssClass = function (className) {\n utils_1._.addCssClass(this.getGui(), className);\n };\n Component.prototype.removeCssClass = function (className) {\n utils_1._.removeCssClass(this.getGui(), className);\n };\n Component.prototype.getAttribute = function (key) {\n var eGui = this.getGui();\n return eGui ? eGui.getAttribute(key) : null;\n };\n Component.prototype.getRefElement = function (refName) {\n return this.queryForHtmlElement('[ref=\"' + refName + '\"]');\n };\n Component.EVENT_VISIBLE_CHANGED = 'visibleChanged';\n __decorate([\n context_1.PreConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], Component.prototype, \"createChildComponentsPreConstruct\", null);\n return Component;\n}(beanStub_1.BeanStub));\nexports.Component = Component;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnGroup_1 = require(\"../entities/columnGroup\");\nvar originalColumnGroup_1 = require(\"../entities/originalColumnGroup\");\nvar context_1 = require(\"../context/context\");\nvar context_2 = require(\"../context/context\");\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar ColumnUtils = /** @class */ (function () {\n function ColumnUtils() {\n }\n ColumnUtils.prototype.calculateColInitialWidth = function (colDef) {\n if (!colDef.width) {\n // if no width defined in colDef, use default\n return this.gridOptionsWrapper.getColWidth();\n }\n else if (colDef.width < this.gridOptionsWrapper.getMinColWidth()) {\n // if width in col def to small, set to min width\n return this.gridOptionsWrapper.getMinColWidth();\n }\n else {\n // otherwise use the provided width\n return colDef.width;\n }\n };\n ColumnUtils.prototype.getOriginalPathForColumn = function (column, originalBalancedTree) {\n var result = [];\n var found = false;\n recursePath(originalBalancedTree, 0);\n // we should always find the path, but in case there is a bug somewhere, returning null\n // will make it fail rather than provide a 'hard to track down' bug\n if (found) {\n return result;\n }\n else {\n return null;\n }\n function recursePath(balancedColumnTree, dept) {\n for (var i = 0; i < balancedColumnTree.length; i++) {\n if (found) {\n // quit the search, so 'result' is kept with the found result\n return;\n }\n var node = balancedColumnTree[i];\n if (node instanceof originalColumnGroup_1.OriginalColumnGroup) {\n var nextNode = node;\n recursePath(nextNode.getChildren(), dept + 1);\n result[dept] = node;\n }\n else {\n if (node === column) {\n found = true;\n }\n }\n }\n }\n };\n /* public getPathForColumn(column: Column, allDisplayedColumnGroups: ColumnGroupChild[]): ColumnGroup[] {\n let result: ColumnGroup[] = [];\n let found = false;\n \n recursePath(allDisplayedColumnGroups, 0);\n \n // we should always find the path, but in case there is a bug somewhere, returning null\n // will make it fail rather than provide a 'hard to track down' bug\n if (found) {\n return result;\n } else {\n return null;\n }\n \n function recursePath(balancedColumnTree: ColumnGroupChild[], dept: number): void {\n \n for (let i = 0; i node;\n recursePath(nextNode.getChildren(), dept+1);\n result[dept] = node;\n } else {\n if (node === column) {\n found = true;\n }\n }\n }\n }\n }*/\n ColumnUtils.prototype.depthFirstOriginalTreeSearch = function (parent, tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof originalColumnGroup_1.OriginalColumnGroup) {\n _this.depthFirstOriginalTreeSearch(child, child.getChildren(), callback);\n }\n callback(child, parent);\n });\n };\n ColumnUtils.prototype.depthFirstAllColumnTreeSearch = function (tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof columnGroup_1.ColumnGroup) {\n _this.depthFirstAllColumnTreeSearch(child.getChildren(), callback);\n }\n callback(child);\n });\n };\n ColumnUtils.prototype.depthFirstDisplayedColumnTreeSearch = function (tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof columnGroup_1.ColumnGroup) {\n _this.depthFirstDisplayedColumnTreeSearch(child.getDisplayedChildren(), callback);\n }\n callback(child);\n });\n };\n __decorate([\n context_2.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ColumnUtils.prototype, \"gridOptionsWrapper\", void 0);\n ColumnUtils = __decorate([\n context_1.Bean('columnUtils')\n ], ColumnUtils);\n return ColumnUtils;\n}());\nexports.ColumnUtils = ColumnUtils;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rowNode_1 = require(\"../../entities/rowNode\");\nvar events_1 = require(\"../../events\");\nvar utils_1 = require(\"../../utils\");\nvar ClientSideNodeManager = /** @class */ (function () {\n function ClientSideNodeManager(rootNode, gridOptionsWrapper, context, eventService, columnController, gridApi, columnApi, selectionController) {\n this.nextId = 0;\n // when user is provide the id's, we also keep a map of ids to row nodes for convenience\n this.allNodesMap = {};\n this.rootNode = rootNode;\n this.gridOptionsWrapper = gridOptionsWrapper;\n this.context = context;\n this.eventService = eventService;\n this.columnController = columnController;\n this.gridApi = gridApi;\n this.columnApi = columnApi;\n this.selectionController = selectionController;\n this.rootNode.group = true;\n this.rootNode.level = -1;\n this.rootNode.id = ClientSideNodeManager.ROOT_NODE_ID;\n this.rootNode.allLeafChildren = [];\n this.rootNode.childrenAfterGroup = [];\n this.rootNode.childrenAfterSort = [];\n this.rootNode.childrenAfterFilter = [];\n // if we make this class a bean, then can annotate postConstruct\n this.postConstruct();\n }\n // @PostConstruct - this is not a bean, so postConstruct called by constructor\n ClientSideNodeManager.prototype.postConstruct = function () {\n // func below doesn't have 'this' pointer, so need to pull out these bits\n this.getNodeChildDetails = this.gridOptionsWrapper.getNodeChildDetailsFunc();\n this.suppressParentsInRowNodes = this.gridOptionsWrapper.isSuppressParentsInRowNodes();\n this.doesDataFlower = this.gridOptionsWrapper.getDoesDataFlowerFunc();\n this.isRowMasterFunc = this.gridOptionsWrapper.getIsRowMasterFunc();\n this.doingLegacyTreeData = utils_1._.exists(this.getNodeChildDetails);\n this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n };\n ClientSideNodeManager.prototype.getCopyOfNodesMap = function () {\n var result = utils_1._.cloneObject(this.allNodesMap);\n return result;\n };\n ClientSideNodeManager.prototype.getRowNode = function (id) {\n return this.allNodesMap[id];\n };\n ClientSideNodeManager.prototype.setRowData = function (rowData) {\n this.rootNode.childrenAfterFilter = null;\n this.rootNode.childrenAfterGroup = null;\n this.rootNode.childrenAfterSort = null;\n this.rootNode.childrenMapped = null;\n this.nextId = 0;\n this.allNodesMap = {};\n if (!rowData) {\n this.rootNode.allLeafChildren = [];\n this.rootNode.childrenAfterGroup = [];\n return;\n }\n // kick off recursion\n // we add rootNode as the parent, however if using ag-grid-enterprise, the grouping stage\n // sets the parent node on each row (even if we are not grouping). so setting parent node\n // here is for benefit of ag-grid-community users\n var result = this.recursiveFunction(rowData, this.rootNode, ClientSideNodeManager.TOP_LEVEL);\n if (this.doingLegacyTreeData) {\n this.rootNode.childrenAfterGroup = result;\n this.setLeafChildren(this.rootNode);\n }\n else {\n this.rootNode.allLeafChildren = result;\n }\n };\n ClientSideNodeManager.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n var _this = this;\n if (this.isLegacyTreeData()) {\n return null;\n }\n var add = rowDataTran.add, addIndex = rowDataTran.addIndex, remove = rowDataTran.remove, update = rowDataTran.update;\n var rowNodeTransaction = {\n remove: [],\n update: [],\n add: []\n };\n if (utils_1._.exists(add)) {\n var useIndex = typeof addIndex === 'number' && addIndex >= 0;\n if (useIndex) {\n // items get inserted in reverse order for index insertion\n add.reverse().forEach(function (item) {\n var newRowNode = _this.addRowNode(item, addIndex);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n else {\n add.forEach(function (item) {\n var newRowNode = _this.addRowNode(item);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n }\n if (utils_1._.exists(remove)) {\n var anyNodesSelected_1 = false;\n remove.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n if (rowNode.isSelected()) {\n anyNodesSelected_1 = true;\n }\n _this.updatedRowNode(rowNode, item, false);\n rowNodeTransaction.remove.push(rowNode);\n });\n if (anyNodesSelected_1) {\n this.selectionController.updateGroupsFromChildrenSelections();\n var event_1 = {\n type: events_1.Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n }\n if (utils_1._.exists(update)) {\n update.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n _this.updatedRowNode(rowNode, item, true);\n rowNodeTransaction.update.push(rowNode);\n });\n }\n if (rowNodeOrder) {\n utils_1._.sortRowNodesByOrder(this.rootNode.allLeafChildren, rowNodeOrder);\n }\n return rowNodeTransaction;\n };\n ClientSideNodeManager.prototype.addRowNode = function (data, index) {\n var newNode = this.createNode(data, this.rootNode, ClientSideNodeManager.TOP_LEVEL);\n if (utils_1._.exists(index)) {\n utils_1._.insertIntoArray(this.rootNode.allLeafChildren, newNode, index);\n }\n else {\n this.rootNode.allLeafChildren.push(newNode);\n }\n return newNode;\n };\n ClientSideNodeManager.prototype.lookupRowNode = function (data) {\n var rowNodeIdFunc = this.gridOptionsWrapper.getRowNodeIdFunc();\n var rowNode;\n if (utils_1._.exists(rowNodeIdFunc)) {\n // find rowNode using id\n var id = rowNodeIdFunc(data);\n rowNode = this.allNodesMap[id];\n if (!rowNode) {\n console.error(\"ag-Grid: could not find row id=\" + id + \", data item was not found for this id\");\n return null;\n }\n }\n else {\n // find rowNode using object references\n rowNode = utils_1._.find(this.rootNode.allLeafChildren, function (rowNode) { return rowNode.data === data; });\n if (!rowNode) {\n console.error(\"ag-Grid: could not find data item as object was not found\", data);\n return null;\n }\n }\n return rowNode;\n };\n ClientSideNodeManager.prototype.updatedRowNode = function (rowNode, data, update) {\n if (update) {\n // do update\n rowNode.updateData(data);\n }\n else {\n // do delete - setting 'tailingNodeInSequence = true' to ensure EVENT_SELECTION_CHANGED is not raised for\n // each row node updated, instead it is raised once by the calling code if any selected nodes exist.\n rowNode.setSelected(false, false, true);\n // so row renderer knows to fade row out (and not reposition it)\n rowNode.clearRowTop();\n utils_1._.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n delete this.allNodesMap[rowNode.id];\n }\n };\n ClientSideNodeManager.prototype.recursiveFunction = function (rowData, parent, level) {\n var _this = this;\n // make sure the rowData is an array and not a string of json - this was a commonly reported problem on the forum\n if (typeof rowData === 'string') {\n console.warn('ag-Grid: rowData must be an array, however you passed in a string. If you are loading JSON, make sure you convert the JSON string to JavaScript objects first');\n return;\n }\n var rowNodes = [];\n rowData.forEach(function (dataItem) {\n var node = _this.createNode(dataItem, parent, level);\n rowNodes.push(node);\n });\n return rowNodes;\n };\n ClientSideNodeManager.prototype.createNode = function (dataItem, parent, level) {\n var node = new rowNode_1.RowNode();\n this.context.wireBean(node);\n var doingTreeData = this.gridOptionsWrapper.isTreeData();\n var doingLegacyTreeData = !doingTreeData && utils_1._.exists(this.getNodeChildDetails);\n var nodeChildDetails = doingLegacyTreeData ? this.getNodeChildDetails(dataItem) : null;\n if (nodeChildDetails && nodeChildDetails.group) {\n node.group = true;\n node.childrenAfterGroup = this.recursiveFunction(nodeChildDetails.children, node, level + 1);\n node.expanded = nodeChildDetails.expanded === true;\n node.field = nodeChildDetails.field;\n node.key = nodeChildDetails.key;\n /** @deprecated is now 'master' */\n node.canFlower = node.master;\n // pull out all the leaf children and add to our node\n this.setLeafChildren(node);\n }\n else {\n node.group = false;\n if (doingTreeData) {\n node.master = false;\n node.expanded = false;\n }\n else {\n // this is the default, for when doing grid data\n if (this.doesDataFlower) {\n node.master = this.doesDataFlower(dataItem);\n }\n else if (this.doingMasterDetail) {\n // if we are doing master detail, then the\n // default is that everything can flower.\n if (this.isRowMasterFunc) {\n node.master = this.isRowMasterFunc(dataItem);\n }\n else {\n node.master = true;\n }\n }\n else {\n node.master = false;\n }\n var rowGroupColumns = this.columnController.getRowGroupColumns();\n var numRowGroupColumns = rowGroupColumns ? rowGroupColumns.length : 0;\n // need to take row group into account when determining level\n var masterRowLevel = level + numRowGroupColumns;\n node.expanded = node.master ? this.isExpanded(masterRowLevel) : false;\n }\n }\n // support for backwards compatibility, canFlow is now called 'master'\n node.canFlower = node.master;\n if (parent && !this.suppressParentsInRowNodes) {\n node.parent = parent;\n }\n node.level = level;\n node.setDataAndId(dataItem, this.nextId.toString());\n if (this.allNodesMap[node.id]) {\n console.warn(\"ag-grid: duplicate node id '\" + node.id + \"' detected from getRowNodeId callback, this could cause issues in your grid.\");\n }\n this.allNodesMap[node.id] = node;\n this.nextId++;\n return node;\n };\n ClientSideNodeManager.prototype.isExpanded = function (level) {\n var expandByDefault = this.gridOptionsWrapper.getGroupDefaultExpanded();\n if (expandByDefault === -1) {\n return true;\n }\n else {\n return level < expandByDefault;\n }\n };\n // this is only used for doing legacy tree data\n ClientSideNodeManager.prototype.setLeafChildren = function (node) {\n node.allLeafChildren = [];\n if (node.childrenAfterGroup) {\n node.childrenAfterGroup.forEach(function (childAfterGroup) {\n if (childAfterGroup.group) {\n if (childAfterGroup.allLeafChildren) {\n childAfterGroup.allLeafChildren.forEach(function (leafChild) { return node.allLeafChildren.push(leafChild); });\n }\n }\n else {\n node.allLeafChildren.push(childAfterGroup);\n }\n });\n }\n };\n ClientSideNodeManager.prototype.isLegacyTreeData = function () {\n var rowsAlreadyGrouped = utils_1._.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n if (rowsAlreadyGrouped) {\n console.warn('ag-Grid: adding and removing rows is not supported when using nodeChildDetailsFunc, ie it is not ' +\n 'supported for legacy tree data. Please see the docs on the new preferred way of providing tree data that works with delta updates.');\n return true;\n }\n else {\n return false;\n }\n };\n ClientSideNodeManager.TOP_LEVEL = 0;\n ClientSideNodeManager.ROOT_NODE_ID = 'ROOT_NODE_ID';\n return ClientSideNodeManager;\n}());\nexports.ClientSideNodeManager = ClientSideNodeManager;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar logger_1 = require(\"./logger\");\nvar eventService_1 = require(\"./eventService\");\nvar events_1 = require(\"./events\");\nvar context_3 = require(\"./context/context\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar context_4 = require(\"./context/context\");\nvar constants_1 = require(\"./constants\");\nvar columnApi_1 = require(\"./columnController/columnApi\");\nvar gridApi_1 = require(\"./gridApi\");\nvar utils_1 = require(\"./utils\");\nvar changedPath_1 = require(\"./rowModels/clientSide/changedPath\");\nvar SelectionController = /** @class */ (function () {\n function SelectionController() {\n }\n SelectionController.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('SelectionController');\n this.reset();\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.eventService.addEventListener(events_1.Events.EVENT_ROW_DATA_CHANGED, this.reset.bind(this));\n }\n else {\n this.logger.log('dont know what to do here');\n }\n };\n SelectionController.prototype.init = function () {\n this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.eventService.addEventListener(events_1.Events.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n };\n SelectionController.prototype.setLastSelectedNode = function (rowNode) {\n this.lastSelectedNode = rowNode;\n };\n SelectionController.prototype.getLastSelectedNode = function () {\n return this.lastSelectedNode;\n };\n SelectionController.prototype.getSelectedNodes = function () {\n var selectedNodes = [];\n utils_1._.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode) {\n selectedNodes.push(rowNode);\n }\n });\n return selectedNodes;\n };\n SelectionController.prototype.getSelectedRows = function () {\n var selectedRows = [];\n utils_1._.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.data) {\n selectedRows.push(rowNode.data);\n }\n });\n return selectedRows;\n };\n SelectionController.prototype.removeGroupsFromSelection = function () {\n var _this = this;\n utils_1._.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.group) {\n _this.selectedNodes[rowNode.id] = undefined;\n }\n });\n };\n // should only be called if groupSelectsChildren=true\n SelectionController.prototype.updateGroupsFromChildrenSelections = function (changedPath) {\n // we only do this when group selection state depends on selected children\n if (!this.gridOptionsWrapper.isGroupSelectsChildren()) {\n return;\n }\n // also only do it if CSRM (code should never allow this anyway)\n if (this.rowModel.getType() !== constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n return;\n }\n var clientSideRowModel = this.rowModel;\n var rootNode = clientSideRowModel.getRootNode();\n if (!changedPath) {\n changedPath = new changedPath_1.ChangedPath(true, rootNode);\n changedPath.setInactive();\n }\n changedPath.forEachChangedNodeDepthFirst(function (rowNode) {\n if (rowNode !== rootNode) {\n rowNode.calculateSelectedFromChildren();\n }\n });\n // clientSideRowModel.getTopLevelNodes()!.forEach((rowNode: RowNode) => {\n // rowNode.depthFirstSearch((node) => {\n // if (node.group) {\n // }\n // });\n // });\n };\n SelectionController.prototype.getNodeForIdIfSelected = function (id) {\n return this.selectedNodes[id];\n };\n SelectionController.prototype.clearOtherNodes = function (rowNodeToKeepSelected) {\n var _this = this;\n var groupsToRefresh = {};\n var updatedCount = 0;\n utils_1._.iterateObject(this.selectedNodes, function (key, otherRowNode) {\n if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {\n var rowNode = _this.selectedNodes[otherRowNode.id];\n updatedCount += rowNode.setSelectedParams({\n newValue: false,\n clearSelection: false,\n suppressFinishActions: true\n });\n if (_this.groupSelectsChildren && otherRowNode.parent) {\n groupsToRefresh[otherRowNode.parent.id] = otherRowNode.parent;\n }\n }\n });\n utils_1._.iterateObject(groupsToRefresh, function (key, group) {\n group.calculateSelectedFromChildren();\n });\n return updatedCount;\n };\n SelectionController.prototype.onRowSelected = function (event) {\n var rowNode = event.node;\n // we do not store the group rows when the groups select children\n if (this.groupSelectsChildren && rowNode.group) {\n return;\n }\n if (rowNode.isSelected()) {\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n this.selectedNodes[rowNode.id] = undefined;\n }\n };\n SelectionController.prototype.syncInRowNode = function (rowNode, oldNode) {\n this.syncInOldRowNode(rowNode, oldNode);\n this.syncInNewRowNode(rowNode);\n };\n // if the id has changed for the node, then this means the rowNode\n // is getting used for a different data item, which breaks\n // our selectedNodes, as the node now is mapped by the old id\n // which is inconsistent. so to keep the old node as selected,\n // we swap in the clone (with the old id and old data). this means\n // the oldNode is effectively a daemon we keep a reference to,\n // so if client calls api.getSelectedNodes(), it gets the daemon\n // in the result. when the client un-selects, the reference to the\n // daemon is removed. the daemon, because it's an oldNode, is not\n // used by the grid for rendering, it's a copy of what the node used\n // to be like before the id was changed.\n SelectionController.prototype.syncInOldRowNode = function (rowNode, oldNode) {\n var oldNodeHasDifferentId = utils_1._.exists(oldNode) && (rowNode.id !== oldNode.id);\n if (oldNodeHasDifferentId) {\n var oldNodeSelected = utils_1._.exists(this.selectedNodes[oldNode.id]);\n if (oldNodeSelected) {\n this.selectedNodes[oldNode.id] = oldNode;\n }\n }\n };\n SelectionController.prototype.syncInNewRowNode = function (rowNode) {\n if (utils_1._.exists(this.selectedNodes[rowNode.id])) {\n rowNode.setSelectedInitialValue(true);\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n rowNode.setSelectedInitialValue(false);\n }\n };\n SelectionController.prototype.reset = function () {\n this.logger.log('reset');\n this.selectedNodes = {};\n this.lastSelectedNode = null;\n };\n // returns a list of all nodes at 'best cost' - a feature to be used\n // with groups / trees. if a group has all it's children selected,\n // then the group appears in the result, but not the children.\n // Designed for use with 'children' as the group selection type,\n // where groups don't actually appear in the selection normally.\n SelectionController.prototype.getBestCostNodeSelection = function () {\n if (this.rowModel.getType() !== constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n console.warn('getBestCostNodeSelection is only available when using normal row model');\n }\n var clientSideRowModel = this.rowModel;\n var topLevelNodes = clientSideRowModel.getTopLevelNodes();\n if (topLevelNodes === null) {\n console.warn('selectAll not available doing rowModel=virtual');\n return;\n }\n var result = [];\n // recursive function, to find the selected nodes\n function traverse(nodes) {\n for (var i = 0, l = nodes.length; i < l; i++) {\n var node = nodes[i];\n if (node.isSelected()) {\n result.push(node);\n }\n else {\n // if not selected, then if it's a group, and the group\n // has children, continue to search for selections\n if (node.group && node.children) {\n traverse(node.children);\n }\n }\n }\n }\n traverse(topLevelNodes);\n return result;\n };\n SelectionController.prototype.setRowModel = function (rowModel) {\n this.rowModel = rowModel;\n };\n SelectionController.prototype.isEmpty = function () {\n var count = 0;\n utils_1._.iterateObject(this.selectedNodes, function (nodeId, rowNode) {\n if (rowNode) {\n count++;\n }\n });\n return count === 0;\n };\n SelectionController.prototype.deselectAllRowNodes = function (justFiltered) {\n if (justFiltered === void 0) { justFiltered = false; }\n var callback = function (rowNode) { return rowNode.selectThisNode(false); };\n var rowModelClientSide = this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n if (justFiltered) {\n if (!rowModelClientSide) {\n console.error('ag-Grid: selecting just filtered only works with In Memory Row Model');\n return;\n }\n var clientSideRowModel = this.rowModel;\n clientSideRowModel.forEachNodeAfterFilter(callback);\n }\n else {\n utils_1._.iterateObject(this.selectedNodes, function (id, rowNode) {\n // remember the reference can be to null, as we never 'delete' from the map\n if (rowNode) {\n callback(rowNode);\n }\n });\n // this clears down the map (whereas above only sets the items in map to 'undefined')\n this.reset();\n }\n // the above does not clean up the parent rows if they are selected\n if (rowModelClientSide && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections();\n }\n var event = {\n type: events_1.Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n SelectionController.prototype.selectAllRowNodes = function (justFiltered) {\n if (justFiltered === void 0) { justFiltered = false; }\n if (this.rowModel.getType() !== constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n throw new Error(\"selectAll only available with normal row model, ie not \" + this.rowModel.getType());\n }\n var clientSideRowModel = this.rowModel;\n var callback = function (rowNode) { return rowNode.selectThisNode(true); };\n if (justFiltered) {\n clientSideRowModel.forEachNodeAfterFilter(callback);\n }\n else {\n clientSideRowModel.forEachNode(callback);\n }\n // the above does not clean up the parent rows if they are selected\n if (this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections();\n }\n var event = {\n type: events_1.Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.selectNode = function (rowNode, tryMulti) {\n if (rowNode) {\n rowNode.setSelectedParams({ newValue: true, clearSelection: !tryMulti });\n }\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.deselectIndex = function (rowIndex) {\n var node = this.rowModel.getRow(rowIndex);\n this.deselectNode(node);\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.deselectNode = function (rowNode) {\n if (rowNode) {\n rowNode.setSelectedParams({ newValue: false, clearSelection: false });\n }\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.selectIndex = function (index, tryMulti) {\n var node = this.rowModel.getRow(index);\n this.selectNode(node, tryMulti);\n };\n __decorate([\n context_3.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], SelectionController.prototype, \"eventService\", void 0);\n __decorate([\n context_3.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], SelectionController.prototype, \"rowModel\", void 0);\n __decorate([\n context_3.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], SelectionController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_3.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], SelectionController.prototype, \"columnApi\", void 0);\n __decorate([\n context_3.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], SelectionController.prototype, \"gridApi\", void 0);\n __decorate([\n __param(0, context_2.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], SelectionController.prototype, \"setBeans\", null);\n __decorate([\n context_4.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], SelectionController.prototype, \"init\", null);\n SelectionController = __decorate([\n context_1.Bean('selectionController')\n ], SelectionController);\n return SelectionController;\n}());\nexports.SelectionController = SelectionController;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar VerticalStack = /** @class */ (function () {\n function VerticalStack() {\n this.isLayoutPanel = true;\n this.childPanels = [];\n this.eGui = document.createElement('div');\n this.eGui.style.height = '100%';\n }\n VerticalStack.prototype.addPanel = function (panel, height) {\n var component;\n if (panel.isLayoutPanel) {\n this.childPanels.push(panel);\n component = panel.getGui();\n }\n else {\n component = panel;\n }\n if (height) {\n component.style.height = height;\n }\n this.eGui.appendChild(component);\n };\n VerticalStack.prototype.getGui = function () {\n return this.eGui;\n };\n VerticalStack.prototype.doLayout = function () {\n for (var i = 0; i < this.childPanels.length; i++) {\n this.childPanels[i].doLayout();\n }\n };\n return VerticalStack;\n}());\nexports.VerticalStack = VerticalStack;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar logger_1 = require(\"../logger\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar column_1 = require(\"../entities/column\");\nvar utils_1 = require(\"../utils\");\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar MoveColumnController = /** @class */ (function () {\n function MoveColumnController(pinned, eContainer) {\n this.needToMoveLeft = false;\n this.needToMoveRight = false;\n this.pinned = pinned;\n this.eContainer = eContainer;\n this.centerContainer = !utils_1._.exists(pinned);\n }\n MoveColumnController.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n MoveColumnController.prototype.init = function () {\n this.logger = this.loggerFactory.create('MoveColumnController');\n };\n MoveColumnController.prototype.getIconName = function () {\n return this.pinned ? dragAndDropService_1.DragAndDropService.ICON_PINNED : dragAndDropService_1.DragAndDropService.ICON_MOVE;\n };\n MoveColumnController.prototype.onDragEnter = function (draggingEvent) {\n // we do dummy drag, so make sure column appears in the right location when first placed\n var columns = draggingEvent.dragItem.columns;\n var dragCameFromToolPanel = draggingEvent.dragSource.type === dragAndDropService_1.DragSourceType.ToolPanel;\n if (dragCameFromToolPanel) {\n // the if statement doesn't work if drag leaves grid, then enters again\n this.setColumnsVisible(columns, true, \"uiColumnDragged\");\n }\n else {\n // restore previous state of visible columns upon re-entering. this means if the user drags\n // a group out, and then drags the group back in, only columns that were originally visible\n // will be visible again. otherwise a group with three columns (but only two visible) could\n // be dragged out, then when it's dragged in again, all three are visible. this stops that.\n var visibleState_1 = draggingEvent.dragItem.visibleState;\n var visibleColumns = columns.filter(function (column) { return visibleState_1[column.getId()]; });\n this.setColumnsVisible(visibleColumns, true, \"uiColumnDragged\");\n }\n this.setColumnsPinned(columns, this.pinned, \"uiColumnDragged\");\n this.onDragging(draggingEvent, true);\n };\n MoveColumnController.prototype.onDragLeave = function (draggingEvent) {\n var hideColumnOnExit = !this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns() && !draggingEvent.fromNudge;\n if (hideColumnOnExit) {\n var dragItem = draggingEvent.dragSource.dragItemCallback();\n var columns = dragItem.columns;\n this.setColumnsVisible(columns, false, \"uiColumnDragged\");\n }\n this.ensureIntervalCleared();\n };\n MoveColumnController.prototype.setColumnsVisible = function (columns, visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.isLockVisible(); });\n this.columnController.setColumnsVisible(allowedCols, visible, source);\n }\n };\n MoveColumnController.prototype.setColumnsPinned = function (columns, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.isLockPinned(); });\n this.columnController.setColumnsPinned(allowedCols, pinned, source);\n }\n };\n MoveColumnController.prototype.onDragStop = function () {\n this.ensureIntervalCleared();\n };\n MoveColumnController.prototype.normaliseX = function (x) {\n // flip the coordinate if doing RTL\n var flipHorizontallyForRtl = this.gridOptionsWrapper.isEnableRtl();\n if (flipHorizontallyForRtl) {\n var clientWidth = this.eContainer.clientWidth;\n x = clientWidth - x;\n }\n // adjust for scroll only if centre container (the pinned containers dont scroll)\n var adjustForScroll = this.centerContainer;\n if (adjustForScroll) {\n x += this.gridPanel.getCenterViewportScrollLeft();\n }\n return x;\n };\n MoveColumnController.prototype.checkCenterForScrolling = function (xAdjustedForScroll) {\n if (this.centerContainer) {\n // scroll if the mouse has gone outside the grid (or just outside the scrollable part if pinning)\n // putting in 50 buffer, so even if user gets to edge of grid, a scroll will happen\n var firstVisiblePixel = this.gridPanel.getCenterViewportScrollLeft();\n var lastVisiblePixel = firstVisiblePixel + this.gridPanel.getCenterWidth();\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.needToMoveRight = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveLeft = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n else {\n this.needToMoveLeft = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveRight = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n if (this.needToMoveLeft || this.needToMoveRight) {\n this.ensureIntervalStarted();\n }\n else {\n this.ensureIntervalCleared();\n }\n }\n };\n MoveColumnController.prototype.onDragging = function (draggingEvent, fromEnter) {\n var _this = this;\n if (fromEnter === void 0) { fromEnter = false; }\n this.lastDraggingEvent = draggingEvent;\n // if moving up or down (ie not left or right) then do nothing\n if (utils_1._.missing(draggingEvent.hDirection)) {\n return;\n }\n var xNormalised = this.normaliseX(draggingEvent.x);\n // if the user is dragging into the panel, ie coming from the side panel into the main grid,\n // we don't want to scroll the grid this time, it would appear like the table is jumping\n // each time a column is dragged in.\n if (!fromEnter) {\n this.checkCenterForScrolling(xNormalised);\n }\n var hDirectionNormalised = this.normaliseDirection(draggingEvent.hDirection);\n var dragSourceType = draggingEvent.dragSource.type;\n var columnsToMove = draggingEvent.dragSource.dragItemCallback().columns;\n columnsToMove = columnsToMove.filter(function (col) {\n if (col.isLockPinned()) {\n // if locked return true only if both col and container are same pin type.\n // double equals (==) here on purpose so that null==undefined is true (for not pinned options)\n return col.getPinned() == _this.pinned;\n }\n else {\n // if not pin locked, then always allowed to be in this container\n return true;\n }\n });\n this.attemptMoveColumns(dragSourceType, columnsToMove, hDirectionNormalised, xNormalised, fromEnter);\n };\n MoveColumnController.prototype.normaliseDirection = function (hDirection) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n switch (hDirection) {\n case dragAndDropService_1.HDirection.Left: return dragAndDropService_1.HDirection.Right;\n case dragAndDropService_1.HDirection.Right: return dragAndDropService_1.HDirection.Left;\n default: console.error(\"ag-Grid: Unknown direction \" + hDirection);\n }\n }\n else {\n return hDirection;\n }\n };\n // returns the index of the first column in the list ONLY if the cols are all beside\n // each other. if the cols are not beside each other, then returns null\n MoveColumnController.prototype.calculateOldIndex = function (movingCols) {\n var gridCols = this.columnController.getAllGridColumns();\n var indexes = [];\n movingCols.forEach(function (col) { return indexes.push(gridCols.indexOf(col)); });\n utils_1._.sortNumberArray(indexes);\n var firstIndex = indexes[0];\n var lastIndex = indexes[indexes.length - 1];\n var spread = lastIndex - firstIndex;\n var gapsExist = spread !== indexes.length - 1;\n return gapsExist ? null : firstIndex;\n };\n MoveColumnController.prototype.attemptMoveColumns = function (dragSourceType, allMovingColumns, hDirection, xAdjusted, fromEnter) {\n var draggingLeft = hDirection === dragAndDropService_1.HDirection.Left;\n var draggingRight = hDirection === dragAndDropService_1.HDirection.Right;\n var validMoves = this.calculateValidMoves(allMovingColumns, draggingRight, xAdjusted);\n // if cols are not adjacent, then this returns null. when moving, we constrain the direction of the move\n // (ie left or right) to the mouse direction. however\n var oldIndex = this.calculateOldIndex(allMovingColumns);\n for (var i = 0; i < validMoves.length; i++) {\n var newIndex = validMoves[i];\n // the two check below stop an error when the user grabs a group my a middle column, then\n // it is possible the mouse pointer is to the right of a column while been dragged left.\n // so we need to make sure that the mouse pointer is actually left of the left most column\n // if moving left, and right of the right most column if moving right\n // we check 'fromEnter' below so we move the column to the new spot if the mouse is coming from\n // outside the grid, eg if the column is moving from side panel, mouse is moving left, then we should\n // place the column to the RHS even if the mouse is moving left and the column is already on\n // the LHS. otherwise we stick to the rule described above.\n var constrainDirection = oldIndex !== null && !fromEnter;\n // don't consider 'fromEnter' when dragging header cells, otherwise group can jump to opposite direction of drag\n if (dragSourceType == dragAndDropService_1.DragSourceType.HeaderCell) {\n constrainDirection = oldIndex !== null;\n }\n if (constrainDirection) {\n // only allow left drag if this column is moving left\n if (draggingLeft && newIndex >= oldIndex) {\n continue;\n }\n // only allow right drag if this column is moving right\n if (draggingRight && newIndex <= oldIndex) {\n continue;\n }\n }\n if (!this.columnController.doesMovePassRules(allMovingColumns, newIndex)) {\n continue;\n }\n this.columnController.moveColumns(allMovingColumns, newIndex, \"uiColumnDragged\");\n // important to return here, so once we do the first valid move, we don't try do any more\n return;\n }\n };\n MoveColumnController.prototype.calculateValidMoves = function (movingCols, draggingRight, x) {\n // this is the list of cols on the screen, so it's these we use when comparing the x mouse position\n var allDisplayedCols = this.columnController.getDisplayedColumns(this.pinned);\n // but this list is the list of all cols, when we move a col it's the index within this list that gets used,\n // so the result we return has to be and index location for this list\n var allGridCols = this.columnController.getAllGridColumns();\n var colIsMovingFunc = function (col) { return movingCols.indexOf(col) >= 0; };\n var colIsNotMovingFunc = function (col) { return movingCols.indexOf(col) < 0; };\n var movingDisplayedCols = allDisplayedCols.filter(colIsMovingFunc);\n var otherDisplayedCols = allDisplayedCols.filter(colIsNotMovingFunc);\n var otherGridCols = allGridCols.filter(colIsNotMovingFunc);\n // work out how many DISPLAYED columns fit before the 'x' position. this gives us the displayIndex.\n // for example, if cols are a,b,c,d and we find a,b fit before 'x', then we want to place the moving\n // col between b and c (so that it is under the mouse position).\n var displayIndex = 0;\n var availableWidth = x;\n // if we are dragging right, then the columns will be to the left of the mouse, so we also want to\n // include the width of the moving columns\n if (draggingRight) {\n var widthOfMovingDisplayedCols_1 = 0;\n movingDisplayedCols.forEach(function (col) { return widthOfMovingDisplayedCols_1 += col.getActualWidth(); });\n availableWidth -= widthOfMovingDisplayedCols_1;\n }\n if (availableWidth > 0) {\n // now count how many of the displayed columns will fit to the left\n for (var i = 0; i < otherDisplayedCols.length; i++) {\n var col = otherDisplayedCols[i];\n availableWidth -= col.getActualWidth();\n if (availableWidth < 0) {\n break;\n }\n displayIndex++;\n }\n // trial and error, if going right, we adjust by one, i didn't manage to quantify why, but it works\n if (draggingRight) {\n displayIndex++;\n }\n }\n // the display index is with respect to all the showing columns, however when we move, it's with\n // respect to all grid columns, so we need to translate from display index to grid index\n var gridColIndex;\n if (displayIndex > 0) {\n var leftColumn = otherDisplayedCols[displayIndex - 1];\n gridColIndex = otherGridCols.indexOf(leftColumn) + 1;\n }\n else {\n gridColIndex = 0;\n }\n var validMoves = [gridColIndex];\n // add in all adjacent empty columns as other valid moves. this allows us to try putting the new\n // column in any place of a hidden column, to try different combinations so that we don't break\n // married children. in other words, maybe the new index breaks a group, but only because some\n // columns are hidden, maybe we can reshuffle the hidden columns to find a place that works.\n var nextCol = allGridCols[gridColIndex];\n while (utils_1._.exists(nextCol) && this.isColumnHidden(allDisplayedCols, nextCol)) {\n gridColIndex++;\n validMoves.push(gridColIndex);\n nextCol = allGridCols[gridColIndex];\n }\n return validMoves;\n };\n // isHidden takes into account visible=false and group=closed, ie it is not displayed\n MoveColumnController.prototype.isColumnHidden = function (displayedColumns, col) {\n return displayedColumns.indexOf(col) < 0;\n };\n MoveColumnController.prototype.ensureIntervalStarted = function () {\n if (!this.movingIntervalId) {\n this.intervalCount = 0;\n this.failedMoveAttempts = 0;\n this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);\n if (this.needToMoveLeft) {\n this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_LEFT, true);\n }\n else {\n this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_RIGHT, true);\n }\n }\n };\n MoveColumnController.prototype.ensureIntervalCleared = function () {\n if (this.moveInterval) {\n window.clearInterval(this.movingIntervalId);\n this.movingIntervalId = null;\n this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_MOVE);\n }\n };\n MoveColumnController.prototype.moveInterval = function () {\n // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow\n // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.\n var pixelsToMove;\n this.intervalCount++;\n pixelsToMove = 10 + (this.intervalCount * 5);\n if (pixelsToMove > 100) {\n pixelsToMove = 100;\n }\n var pixelsMoved;\n if (this.needToMoveLeft) {\n pixelsMoved = this.gridPanel.scrollHorizontally(-pixelsToMove);\n }\n else if (this.needToMoveRight) {\n pixelsMoved = this.gridPanel.scrollHorizontally(pixelsToMove);\n }\n if (pixelsMoved !== 0) {\n this.onDragging(this.lastDraggingEvent);\n this.failedMoveAttempts = 0;\n }\n else {\n // we count the failed move attempts. if we fail to move 7 times, then we pin the column.\n // this is how we achieve pining by dragging the column to the edge of the grid.\n this.failedMoveAttempts++;\n var columns = this.lastDraggingEvent.dragItem.columns;\n var columnsThatCanPin = columns.filter(function (c) { return !c.isLockPinned(); });\n if (columnsThatCanPin.length > 0) {\n this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_PINNED);\n if (this.failedMoveAttempts > 7) {\n var pinType = this.needToMoveLeft ? column_1.Column.PINNED_LEFT : column_1.Column.PINNED_RIGHT;\n this.setColumnsPinned(columnsThatCanPin, pinType, \"uiColumnDragged\");\n this.dragAndDropService.nudge();\n }\n }\n }\n };\n __decorate([\n context_1.Autowired('loggerFactory'),\n __metadata(\"design:type\", logger_1.LoggerFactory)\n ], MoveColumnController.prototype, \"loggerFactory\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], MoveColumnController.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('dragAndDropService'),\n __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n ], MoveColumnController.prototype, \"dragAndDropService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], MoveColumnController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], MoveColumnController.prototype, \"init\", null);\n return MoveColumnController;\n}());\nexports.MoveColumnController = MoveColumnController;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar filterManager_1 = require(\"../filter/filterManager\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar FilterService = /** @class */ (function () {\n function FilterService() {\n }\n FilterService.prototype.postConstruct = function () {\n this.doingTreeData = this.gridOptionsWrapper.isTreeData();\n };\n FilterService.prototype.filter = function (changedPath) {\n var filterActive = this.filterManager.isAnyFilterPresent();\n this.filterNodes(filterActive, changedPath);\n };\n FilterService.prototype.filterNodes = function (filterActive, changedPath) {\n var _this = this;\n var filterCallback = function (rowNode, includeChildNodes) {\n // recursively get all children that are groups to also filter\n if (rowNode.hasChildren()) {\n // result of filter for this node. when filtering tree data, includeChildNodes = true when parent passes\n if (filterActive && !includeChildNodes) {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup.filter(function (childNode) {\n // a group is included in the result if it has any children of it's own.\n // by this stage, the child groups are already filtered\n var passBecauseChildren = childNode.childrenAfterFilter && childNode.childrenAfterFilter.length > 0;\n // both leaf level nodes and tree data nodes have data. these get added if\n // the data passes the filter\n var passBecauseDataPasses = childNode.data && _this.filterManager.doesRowPassFilter(childNode);\n // note - tree data nodes pass either if a) they pass themselves or b) any children of that node pass\n return passBecauseChildren || passBecauseDataPasses;\n });\n }\n else {\n // if not filtering, the result is the original list\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n }\n _this.setAllChildrenCount(rowNode);\n }\n else {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n rowNode.setAllChildrenCount(null);\n }\n };\n if (this.doingTreeDataFiltering()) {\n var treeDataDepthFirstFilter_1 = function (rowNode, alreadyFoundInParent) {\n // tree data filter traverses the hierarchy depth first and includes child nodes if parent passes\n // filter, and parent nodes will be include if any children exist.\n if (rowNode.childrenAfterGroup) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n var childNode = rowNode.childrenAfterGroup[i];\n // first check if current node passes filter before invoking child nodes\n var foundInParent = alreadyFoundInParent || _this.filterManager.doesRowPassFilter(childNode);\n if (childNode.childrenAfterGroup) {\n treeDataDepthFirstFilter_1(rowNode.childrenAfterGroup[i], foundInParent);\n }\n else {\n filterCallback(childNode, foundInParent);\n }\n }\n }\n filterCallback(rowNode, alreadyFoundInParent);\n };\n var treeDataFilterCallback = function (rowNode) { return treeDataDepthFirstFilter_1(rowNode, false); };\n changedPath.executeFromRootNode(treeDataFilterCallback);\n }\n else {\n var defaultFilterCallback = function (rowNode) { return filterCallback(rowNode, false); };\n changedPath.forEachChangedNodeDepthFirst(defaultFilterCallback, true);\n }\n };\n FilterService.prototype.setAllChildrenCountTreeData = function (rowNode) {\n // for tree data, we include all children, groups and leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterFilter.forEach(function (child) {\n // include child itself\n allChildrenCount++;\n // include children of children\n allChildrenCount += child.allChildrenCount;\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterService.prototype.setAllChildrenCountGridGrouping = function (rowNode) {\n // for grid data, we only count the leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterFilter.forEach(function (child) {\n if (child.group) {\n allChildrenCount += child.allChildrenCount;\n }\n else {\n allChildrenCount++;\n }\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterService.prototype.setAllChildrenCount = function (rowNode) {\n if (this.doingTreeData) {\n this.setAllChildrenCountTreeData(rowNode);\n }\n else {\n this.setAllChildrenCountGridGrouping(rowNode);\n }\n };\n FilterService.prototype.doingTreeDataFiltering = function () {\n return this.gridOptionsWrapper.isTreeData() && !this.gridOptionsWrapper.isExcludeChildrenWhenTreeDataFiltering();\n };\n __decorate([\n context_1.Autowired('filterManager'),\n __metadata(\"design:type\", filterManager_1.FilterManager)\n ], FilterService.prototype, \"filterManager\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], FilterService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], FilterService.prototype, \"postConstruct\", null);\n FilterService = __decorate([\n context_1.Bean(\"filterService\")\n ], FilterService);\n return FilterService;\n}());\nexports.FilterService = FilterService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"../../constants\");\nvar popupComponent_1 = require(\"../../widgets/popupComponent\");\nvar utils_1 = require(\"../../utils\");\nvar TextCellEditor = /** @class */ (function (_super) {\n __extends(TextCellEditor, _super);\n function TextCellEditor() {\n var _this = _super.call(this, TextCellEditor.TEMPLATE) || this;\n _this.eInput = _this.getGui().querySelector('input');\n return _this;\n }\n TextCellEditor.prototype.init = function (params) {\n this.params = params;\n var eInput = this.eInput;\n var startValue;\n // cellStartedEdit is only false if we are doing fullRow editing\n if (params.cellStartedEdit) {\n this.focusAfterAttached = true;\n var keyPressBackspaceOrDelete = params.keyPress === constants_1.Constants.KEY_BACKSPACE\n || params.keyPress === constants_1.Constants.KEY_DELETE;\n if (keyPressBackspaceOrDelete) {\n startValue = '';\n }\n else if (params.charPress) {\n startValue = params.charPress;\n }\n else {\n startValue = this.getStartValue(params);\n if (params.keyPress !== constants_1.Constants.KEY_F2) {\n this.highlightAllOnFocus = true;\n }\n }\n }\n else {\n this.focusAfterAttached = false;\n startValue = this.getStartValue(params);\n }\n if (utils_1._.exists(startValue)) {\n eInput.value = startValue;\n }\n this.addDestroyableEventListener(eInput, 'keydown', function (event) {\n var isNavigationKey = event.keyCode === constants_1.Constants.KEY_LEFT\n || event.keyCode === constants_1.Constants.KEY_RIGHT\n || event.keyCode === constants_1.Constants.KEY_UP\n || event.keyCode === constants_1.Constants.KEY_DOWN\n || event.keyCode === constants_1.Constants.KEY_PAGE_DOWN\n || event.keyCode === constants_1.Constants.KEY_PAGE_UP\n || event.keyCode === constants_1.Constants.KEY_PAGE_HOME\n || event.keyCode === constants_1.Constants.KEY_PAGE_END;\n if (isNavigationKey) {\n // this stops the grid from executing keyboard navigation\n event.stopPropagation();\n // this stops the browser from scrolling up / down\n var pageUp = event.keyCode === constants_1.Constants.KEY_PAGE_UP;\n var pageDown = event.keyCode === constants_1.Constants.KEY_PAGE_DOWN;\n if (pageUp || pageDown) {\n event.preventDefault();\n }\n }\n });\n };\n TextCellEditor.prototype.afterGuiAttached = function () {\n if (!this.focusAfterAttached) {\n return;\n }\n var eInput = this.eInput;\n eInput.focus();\n if (this.highlightAllOnFocus) {\n eInput.select();\n }\n else {\n // when we started editing, we want the caret at the end, not the start.\n // this comes into play in two scenarios: a) when user hits F2 and b)\n // when user hits a printable character, then on IE (and only IE) the caret\n // was placed after the first character, thus 'apply' would end up as 'pplea'\n var length_1 = eInput.value ? eInput.value.length : 0;\n if (length_1 > 0) {\n eInput.setSelectionRange(length_1, length_1);\n }\n }\n };\n // gets called when tabbing trough cells and in full row edit mode\n TextCellEditor.prototype.focusIn = function () {\n var eInput = this.eInput;\n eInput.focus();\n eInput.select();\n };\n TextCellEditor.prototype.getValue = function () {\n var eInput = this.eInput;\n return this.params.parseValue(eInput.value);\n };\n TextCellEditor.prototype.getStartValue = function (params) {\n var formatValue = params.useFormatter || params.column.getColDef().refData;\n return formatValue ? params.formatValue(params.value) : params.value;\n };\n TextCellEditor.prototype.isPopup = function () {\n return false;\n };\n TextCellEditor.TEMPLATE = '
';\n return TextCellEditor;\n}(popupComponent_1.PopupComponent));\nexports.TextCellEditor = TextCellEditor;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar beanStub_1 = require(\"../context/beanStub\");\nvar context_1 = require(\"../context/context\");\nvar eventService_1 = require(\"../eventService\");\nvar eventKeys_1 = require(\"../eventKeys\");\nvar utils_1 = require(\"../utils\");\n/**\n * This class solves the 'max height' problem, where the user might want to show more data than\n * the max div height actually allows.\n */\nvar MaxDivHeightScaler = /** @class */ (function (_super) {\n __extends(MaxDivHeightScaler, _super);\n function MaxDivHeightScaler() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // the scrollY position\n _this.scrollY = 0;\n // how tall the body is\n _this.uiBodyHeight = 0;\n return _this;\n }\n MaxDivHeightScaler.prototype.postConstruct = function () {\n this.addDestroyableEventListener(this.eventService, eventKeys_1.Events.EVENT_BODY_HEIGHT_CHANGED, this.updateOffset.bind(this));\n this.scrollBarWidth = utils_1._.getScrollbarWidth();\n this.maxDivHeight = utils_1._.getMaxDivHeight();\n };\n MaxDivHeightScaler.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n MaxDivHeightScaler.prototype.isScaling = function () {\n return this.scaling;\n };\n MaxDivHeightScaler.prototype.getOffset = function () {\n return this.offset;\n };\n MaxDivHeightScaler.prototype.updateOffset = function () {\n if (!this.scaling) {\n return;\n }\n var newScrollY = this.gridPanel.getVScrollPosition().top;\n var newBodyHeight = this.getUiBodyHeight();\n var atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;\n if (atLeastOneChanged) {\n this.scrollY = newScrollY;\n this.uiBodyHeight = newBodyHeight;\n this.calculateOffset();\n }\n };\n MaxDivHeightScaler.prototype.calculateOffset = function () {\n this.uiContainerHeight = this.maxDivHeight;\n this.pixelsToShave = this.modelHeight - this.uiContainerHeight;\n this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;\n var scrollPercent = this.scrollY / this.maxScrollY;\n this.setOffset(scrollPercent * this.pixelsToShave);\n };\n MaxDivHeightScaler.prototype.clearOffset = function () {\n this.uiContainerHeight = this.modelHeight;\n this.pixelsToShave = 0;\n this.setOffset(0);\n };\n MaxDivHeightScaler.prototype.setOffset = function (newOffset) {\n // because we are talking pixels, no point in confusing things with half numbers\n var newOffsetFloor = typeof newOffset === 'number' ? Math.floor(newOffset) : null;\n if (this.offset === newOffsetFloor) {\n return;\n }\n this.offset = newOffsetFloor;\n this.eventService.dispatchEvent({ type: eventKeys_1.Events.EVENT_HEIGHT_SCALE_CHANGED });\n };\n MaxDivHeightScaler.prototype.setModelHeight = function (modelHeight) {\n this.modelHeight = modelHeight;\n this.scaling = this.maxDivHeight > 0 && modelHeight > this.maxDivHeight;\n if (this.scaling) {\n this.calculateOffset();\n }\n else {\n this.clearOffset();\n }\n };\n MaxDivHeightScaler.prototype.getUiContainerHeight = function () {\n return this.uiContainerHeight;\n };\n MaxDivHeightScaler.prototype.getRealPixelPosition = function (modelPixel) {\n return modelPixel - this.offset;\n };\n MaxDivHeightScaler.prototype.getUiBodyHeight = function () {\n var pos = this.gridPanel.getVScrollPosition();\n return pos.bottom - pos.top;\n };\n MaxDivHeightScaler.prototype.getScrollPositionForPixel = function (rowTop) {\n if (this.pixelsToShave <= 0) {\n return rowTop;\n }\n var modelMaxScroll = this.modelHeight - this.getUiBodyHeight();\n var scrollPercent = rowTop / modelMaxScroll;\n var scrollPixel = this.maxScrollY * scrollPercent;\n return scrollPixel;\n };\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], MaxDivHeightScaler.prototype, \"eventService\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], MaxDivHeightScaler.prototype, \"postConstruct\", null);\n MaxDivHeightScaler = __decorate([\n context_1.Bean('maxDivHeightScaler')\n ], MaxDivHeightScaler);\n return MaxDivHeightScaler;\n}(beanStub_1.BeanStub));\nexports.MaxDivHeightScaler = MaxDivHeightScaler;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar globalObj = typeof global === 'undefined' ? {} : global;\nglobalObj.HTMLElement = typeof HTMLElement === 'undefined' ? {} : HTMLElement;\nglobalObj.HTMLButtonElement = typeof HTMLButtonElement === 'undefined' ? {} : HTMLButtonElement;\nglobalObj.HTMLSelectElement = typeof HTMLSelectElement === 'undefined' ? {} : HTMLSelectElement;\nglobalObj.HTMLInputElement = typeof HTMLInputElement === 'undefined' ? {} : HTMLInputElement;\nglobalObj.Node = typeof Node === 'undefined' ? {} : Node;\nglobalObj.MouseEvent = typeof MouseEvent === 'undefined' ? {} : MouseEvent;\n// columnController\nvar columnFactory_1 = require(\"./dist/lib/columnController/columnFactory\");\nexports.ColumnFactory = columnFactory_1.ColumnFactory;\nvar columnController_1 = require(\"./dist/lib/columnController/columnController\");\nexports.ColumnController = columnController_1.ColumnController;\nvar columnKeyCreator_1 = require(\"./dist/lib/columnController/columnKeyCreator\");\nexports.ColumnKeyCreator = columnKeyCreator_1.ColumnKeyCreator;\nvar columnUtils_1 = require(\"./dist/lib/columnController/columnUtils\");\nexports.ColumnUtils = columnUtils_1.ColumnUtils;\nvar displayedGroupCreator_1 = require(\"./dist/lib/columnController/displayedGroupCreator\");\nexports.DisplayedGroupCreator = displayedGroupCreator_1.DisplayedGroupCreator;\nvar groupInstanceIdCreator_1 = require(\"./dist/lib/columnController/groupInstanceIdCreator\");\nexports.GroupInstanceIdCreator = groupInstanceIdCreator_1.GroupInstanceIdCreator;\n// components\nvar componentUtil_1 = require(\"./dist/lib/components/componentUtil\");\nexports.ComponentUtil = componentUtil_1.ComponentUtil;\nvar colDefUtil_1 = require(\"./dist/lib/components/colDefUtil\");\nexports.ColDefUtil = colDefUtil_1.ColDefUtil;\nvar userComponentRegistry_1 = require(\"./dist/lib/components/framework/userComponentRegistry\");\nexports.UserComponentRegistry = userComponentRegistry_1.UserComponentRegistry;\nvar userComponentFactory_1 = require(\"./dist/lib/components/framework/userComponentFactory\");\nexports.UserComponentFactory = userComponentFactory_1.UserComponentFactory;\nvar agGridNg1_1 = require(\"./dist/lib/components/agGridNg1\");\nexports.initialiseAgGridWithAngular1 = agGridNg1_1.initialiseAgGridWithAngular1;\nvar agGridWebComponent_1 = require(\"./dist/lib/components/agGridWebComponent\");\nexports.initialiseAgGridWithWebComponents = agGridWebComponent_1.initialiseAgGridWithWebComponents;\n// context\nvar beanStub_1 = require(\"./dist/lib/context/beanStub\");\nexports.BeanStub = beanStub_1.BeanStub;\nvar context_1 = require(\"./dist/lib/context/context\");\nexports.Context = context_1.Context;\nexports.Autowired = context_1.Autowired;\nexports.PostConstruct = context_1.PostConstruct;\nexports.PreConstruct = context_1.PreConstruct;\nexports.Optional = context_1.Optional;\nexports.Bean = context_1.Bean;\nexports.Qualifier = context_1.Qualifier;\nexports.PreDestroy = context_1.PreDestroy;\nvar componentAnnotations_1 = require(\"./dist/lib/widgets/componentAnnotations\");\nexports.QuerySelector = componentAnnotations_1.QuerySelector;\nexports.Listener = componentAnnotations_1.Listener;\nexports.RefSelector = componentAnnotations_1.RefSelector;\n// dragAndDrop\nvar dragAndDropService_1 = require(\"./dist/lib/dragAndDrop/dragAndDropService\");\nexports.DragAndDropService = dragAndDropService_1.DragAndDropService;\nexports.DragSourceType = dragAndDropService_1.DragSourceType;\nexports.HDirection = dragAndDropService_1.HDirection;\nexports.VDirection = dragAndDropService_1.VDirection;\nvar dragService_1 = require(\"./dist/lib/dragAndDrop/dragService\");\nexports.DragService = dragService_1.DragService;\n// entities\nvar column_1 = require(\"./dist/lib/entities/column\");\nexports.Column = column_1.Column;\nvar columnGroup_1 = require(\"./dist/lib/entities/columnGroup\");\nexports.ColumnGroup = columnGroup_1.ColumnGroup;\nvar gridCell_1 = require(\"./dist/lib/entities/gridCell\");\nexports.GridCell = gridCell_1.GridCell;\nvar gridRow_1 = require(\"./dist/lib/entities/gridRow\");\nexports.GridRow = gridRow_1.GridRow;\nvar originalColumnGroup_1 = require(\"./dist/lib/entities/originalColumnGroup\");\nexports.OriginalColumnGroup = originalColumnGroup_1.OriginalColumnGroup;\nvar rowNode_1 = require(\"./dist/lib/entities/rowNode\");\nexports.RowNode = rowNode_1.RowNode;\n// filter\nvar baseFilter_1 = require(\"./dist/lib/filter/baseFilter\");\nexports.BaseFilter = baseFilter_1.BaseFilter;\nvar dateFilter_1 = require(\"./dist/lib/filter/dateFilter\");\nexports.DateFilter = dateFilter_1.DateFilter;\nvar filterManager_1 = require(\"./dist/lib/filter/filterManager\");\nexports.FilterManager = filterManager_1.FilterManager;\nvar numberFilter_1 = require(\"./dist/lib/filter/numberFilter\");\nexports.NumberFilter = numberFilter_1.NumberFilter;\nvar textFilter_1 = require(\"./dist/lib/filter/textFilter\");\nexports.TextFilter = textFilter_1.TextFilter;\n// gridPanel\nvar gridPanel_1 = require(\"./dist/lib/gridPanel/gridPanel\");\nexports.GridPanel = gridPanel_1.GridPanel;\nvar scrollVisibleService_1 = require(\"./dist/lib/gridPanel/scrollVisibleService\");\nexports.ScrollVisibleService = scrollVisibleService_1.ScrollVisibleService;\nvar mouseEventService_1 = require(\"./dist/lib/gridPanel/mouseEventService\");\nexports.MouseEventService = mouseEventService_1.MouseEventService;\n// headerRendering\nvar bodyDropPivotTarget_1 = require(\"./dist/lib/headerRendering/bodyDropPivotTarget\");\nexports.BodyDropPivotTarget = bodyDropPivotTarget_1.BodyDropPivotTarget;\nvar bodyDropTarget_1 = require(\"./dist/lib/headerRendering/bodyDropTarget\");\nexports.BodyDropTarget = bodyDropTarget_1.BodyDropTarget;\nvar cssClassApplier_1 = require(\"./dist/lib/headerRendering/cssClassApplier\");\nexports.CssClassApplier = cssClassApplier_1.CssClassApplier;\nvar headerContainer_1 = require(\"./dist/lib/headerRendering/headerContainer\");\nexports.HeaderContainer = headerContainer_1.HeaderContainer;\nvar headerRootComp_1 = require(\"./dist/lib/headerRendering/headerRootComp\");\nexports.HeaderRootComp = headerRootComp_1.HeaderRootComp;\nvar headerRowComp_1 = require(\"./dist/lib/headerRendering/headerRowComp\");\nexports.HeaderRowComp = headerRowComp_1.HeaderRowComp;\nvar horizontalResizeService_1 = require(\"./dist/lib/headerRendering/horizontalResizeService\");\nexports.HorizontalResizeService = horizontalResizeService_1.HorizontalResizeService;\nvar moveColumnController_1 = require(\"./dist/lib/headerRendering/moveColumnController\");\nexports.MoveColumnController = moveColumnController_1.MoveColumnController;\nvar standardMenu_1 = require(\"./dist/lib/headerRendering/standardMenu\");\nexports.StandardMenuFactory = standardMenu_1.StandardMenuFactory;\n// layout\nvar tabbedLayout_1 = require(\"./dist/lib/layout/tabbedLayout\");\nexports.TabbedLayout = tabbedLayout_1.TabbedLayout;\nvar verticalStack_1 = require(\"./dist/lib/layout/verticalStack\");\nexports.VerticalStack = verticalStack_1.VerticalStack;\n// misc\nvar simpleHttpRequest_1 = require(\"./dist/lib/misc/simpleHttpRequest\");\nexports.simpleHttpRequest = simpleHttpRequest_1.simpleHttpRequest;\nvar largeTextCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/largeTextCellEditor\");\nexports.LargeTextCellEditor = largeTextCellEditor_1.LargeTextCellEditor;\nvar popupEditorWrapper_1 = require(\"./dist/lib/rendering/cellEditors/popupEditorWrapper\");\nexports.PopupEditorWrapper = popupEditorWrapper_1.PopupEditorWrapper;\nvar popupSelectCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/popupSelectCellEditor\");\nexports.PopupSelectCellEditor = popupSelectCellEditor_1.PopupSelectCellEditor;\nvar popupTextCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/popupTextCellEditor\");\nexports.PopupTextCellEditor = popupTextCellEditor_1.PopupTextCellEditor;\nvar selectCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/selectCellEditor\");\nexports.SelectCellEditor = selectCellEditor_1.SelectCellEditor;\nvar textCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/textCellEditor\");\nexports.TextCellEditor = textCellEditor_1.TextCellEditor;\nvar animateShowChangeCellRenderer_1 = require(\"./dist/lib/rendering/cellRenderers/animateShowChangeCellRenderer\");\nexports.AnimateShowChangeCellRenderer = animateShowChangeCellRenderer_1.AnimateShowChangeCellRenderer;\nvar animateSlideCellRenderer_1 = require(\"./dist/lib/rendering/cellRenderers/animateSlideCellRenderer\");\nexports.AnimateSlideCellRenderer = animateSlideCellRenderer_1.AnimateSlideCellRenderer;\nvar groupCellRenderer_1 = require(\"./dist/lib/rendering/cellRenderers/groupCellRenderer\");\nexports.GroupCellRenderer = groupCellRenderer_1.GroupCellRenderer;\n// features\nvar setLeftFeature_1 = require(\"./dist/lib/rendering/features/setLeftFeature\");\nexports.SetLeftFeature = setLeftFeature_1.SetLeftFeature;\n// rendering\nvar autoWidthCalculator_1 = require(\"./dist/lib/rendering/autoWidthCalculator\");\nexports.AutoWidthCalculator = autoWidthCalculator_1.AutoWidthCalculator;\nvar cellRendererFactory_1 = require(\"./dist/lib/rendering/cellRendererFactory\");\nexports.CellRendererFactory = cellRendererFactory_1.CellRendererFactory;\nvar checkboxSelectionComponent_1 = require(\"./dist/lib/rendering/checkboxSelectionComponent\");\nexports.CheckboxSelectionComponent = checkboxSelectionComponent_1.CheckboxSelectionComponent;\nvar cellComp_1 = require(\"./dist/lib/rendering/cellComp\");\nexports.CellComp = cellComp_1.CellComp;\nvar rowComp_1 = require(\"./dist/lib/rendering/rowComp\");\nexports.RowComp = rowComp_1.RowComp;\nvar rowRenderer_1 = require(\"./dist/lib/rendering/rowRenderer\");\nexports.RowRenderer = rowRenderer_1.RowRenderer;\nvar valueFormatterService_1 = require(\"./dist/lib/rendering/valueFormatterService\");\nexports.ValueFormatterService = valueFormatterService_1.ValueFormatterService;\n// rowControllers/inMemory\nvar filterStage_1 = require(\"./dist/lib/rowModels/clientSide/filterStage\");\nexports.FilterStage = filterStage_1.FilterStage;\nvar flattenStage_1 = require(\"./dist/lib/rowModels/clientSide/flattenStage\");\nexports.FlattenStage = flattenStage_1.FlattenStage;\nvar sortStage_1 = require(\"./dist/lib/rowModels/clientSide/sortStage\");\nexports.SortStage = sortStage_1.SortStage;\n// row models\nvar pinnedRowModel_1 = require(\"./dist/lib/rowModels/pinnedRowModel\");\nexports.PinnedRowModel = pinnedRowModel_1.PinnedRowModel;\nvar clientSideRowModel_1 = require(\"./dist/lib/rowModels/clientSide/clientSideRowModel\");\nexports.ClientSideRowModel = clientSideRowModel_1.ClientSideRowModel;\nvar changedPath_1 = require(\"./dist/lib/rowModels/clientSide/changedPath\");\nexports.ChangedPath = changedPath_1.ChangedPath;\nvar clientSideNodeManager_1 = require(\"./dist/lib/rowModels/clientSide/clientSideNodeManager\");\nexports.ClientSideNodeManager = clientSideNodeManager_1.ClientSideNodeManager;\nvar infiniteRowModel_1 = require(\"./dist/lib/rowModels/infinite/infiniteRowModel\");\nexports.InfiniteRowModel = infiniteRowModel_1.InfiniteRowModel;\nvar rowNodeBlock_1 = require(\"./dist/lib/rowModels/cache/rowNodeBlock\");\nexports.RowNodeBlock = rowNodeBlock_1.RowNodeBlock;\nvar rowNodeBlockLoader_1 = require(\"./dist/lib/rowModels/cache/rowNodeBlockLoader\");\nexports.RowNodeBlockLoader = rowNodeBlockLoader_1.RowNodeBlockLoader;\nvar paginationProxy_1 = require(\"./dist/lib/rowModels/paginationProxy\");\nexports.PaginationProxy = paginationProxy_1.PaginationProxy;\nvar rowNodeCache_1 = require(\"./dist/lib/rowModels/cache/rowNodeCache\");\nexports.RowNodeCache = rowNodeCache_1.RowNodeCache;\n//styling\nvar stylingService_1 = require(\"./dist/lib/styling/stylingService\");\nexports.StylingService = stylingService_1.StylingService;\n// widgets\nvar agCheckbox_1 = require(\"./dist/lib/widgets/agCheckbox\");\nexports.AgCheckbox = agCheckbox_1.AgCheckbox;\nvar popupWindow_1 = require(\"./dist/lib/widgets/popupWindow\");\nexports.PopupWindow = popupWindow_1.PopupWindow;\nvar popupMessageBox_1 = require(\"./dist/lib/widgets/popupMessageBox\");\nexports.PopupMessageBox = popupMessageBox_1.PopupMessageBox;\nvar component_1 = require(\"./dist/lib/widgets/component\");\nexports.Component = component_1.Component;\nvar popupComponent_1 = require(\"./dist/lib/widgets/popupComponent\");\nexports.PopupComponent = popupComponent_1.PopupComponent;\nvar popupService_1 = require(\"./dist/lib/widgets/popupService\");\nexports.PopupService = popupService_1.PopupService;\nvar touchListener_1 = require(\"./dist/lib/widgets/touchListener\");\nexports.TouchListener = touchListener_1.TouchListener;\n// exporter\nvar csvCreator_1 = require(\"./dist/lib/exporter/csvCreator\");\nexports.CsvCreator = csvCreator_1.CsvCreator;\nexports.BaseCreator = csvCreator_1.BaseCreator;\nvar downloader_1 = require(\"./dist/lib/exporter/downloader\");\nexports.Downloader = downloader_1.Downloader;\nvar xmlFactory_1 = require(\"./dist/lib/exporter/xmlFactory\");\nexports.XmlFactory = xmlFactory_1.XmlFactory;\nvar gridSerializer_1 = require(\"./dist/lib/exporter/gridSerializer\");\nexports.BaseGridSerializingSession = gridSerializer_1.BaseGridSerializingSession;\nexports.GridSerializer = gridSerializer_1.GridSerializer;\nvar gridSerializer_2 = require(\"./dist/lib/exporter/gridSerializer\");\nexports.RowType = gridSerializer_2.RowType;\nvar zipContainer_1 = require(\"./dist/lib/exporter/files/zip/zipContainer\");\nexports.ZipContainer = zipContainer_1.ZipContainer;\n// root\nvar baseFrameworkFactory_1 = require(\"./dist/lib/baseFrameworkFactory\");\nexports.BaseFrameworkFactory = baseFrameworkFactory_1.BaseFrameworkFactory;\nvar cellNavigationService_1 = require(\"./dist/lib/cellNavigationService\");\nexports.CellNavigationService = cellNavigationService_1.CellNavigationService;\nvar alignedGridsService_1 = require(\"./dist/lib/alignedGridsService\");\nexports.AlignedGridsService = alignedGridsService_1.AlignedGridsService;\nvar constants_1 = require(\"./dist/lib/constants\");\nexports.Constants = constants_1.Constants;\nvar grid_1 = require(\"./dist/lib/grid\");\nexports.Grid = grid_1.Grid;\nvar gridApi_1 = require(\"./dist/lib/gridApi\");\nexports.GridApi = gridApi_1.GridApi;\nvar eventKeys_1 = require(\"./dist/lib/eventKeys\");\nexports.Events = eventKeys_1.Events;\nvar focusedCellController_1 = require(\"./dist/lib/focusedCellController\");\nexports.FocusedCellController = focusedCellController_1.FocusedCellController;\nvar functions_1 = require(\"./dist/lib/functions\");\nexports.defaultGroupComparator = functions_1.defaultGroupComparator;\nvar gridOptionsWrapper_1 = require(\"./dist/lib/gridOptionsWrapper\");\nexports.GridOptionsWrapper = gridOptionsWrapper_1.GridOptionsWrapper;\nvar eventService_1 = require(\"./dist/lib/eventService\");\nexports.EventService = eventService_1.EventService;\nvar selectableService_1 = require(\"./dist/lib/rowNodes/selectableService\");\nexports.SelectableService = selectableService_1.SelectableService;\nvar gridCore_1 = require(\"./dist/lib/gridCore\");\nexports.GridCore = gridCore_1.GridCore;\nvar logger_1 = require(\"./dist/lib/logger\");\nexports.Logger = logger_1.Logger;\nvar selectionController_1 = require(\"./dist/lib/selectionController\");\nexports.SelectionController = selectionController_1.SelectionController;\nvar sortController_1 = require(\"./dist/lib/sortController\");\nexports.SortController = sortController_1.SortController;\nvar templateService_1 = require(\"./dist/lib/templateService\");\nexports.TemplateService = templateService_1.TemplateService;\nvar utils_1 = require(\"./dist/lib/utils\");\nexports.Utils = utils_1.Utils;\nexports.NumberSequence = utils_1.NumberSequence;\nexports._ = utils_1._;\nexports.Promise = utils_1.Promise;\nvar valueService_1 = require(\"./dist/lib/valueService/valueService\");\nexports.ValueService = valueService_1.ValueService;\nvar expressionService_1 = require(\"./dist/lib/valueService/expressionService\");\nexports.ExpressionService = expressionService_1.ExpressionService;\nvar logger_2 = require(\"./dist/lib/logger\");\nexports.LoggerFactory = logger_2.LoggerFactory;\nvar columnApi_1 = require(\"./dist/lib/columnController/columnApi\");\nexports.ColumnApi = columnApi_1.ColumnApi;\nvar frameworkComponentWrapper_1 = require(\"./dist/lib/components/framework/frameworkComponentWrapper\");\nexports.BaseComponentWrapper = frameworkComponentWrapper_1.BaseComponentWrapper;\nvar environment_1 = require(\"./dist/lib/environment\");\nexports.Environment = environment_1.Environment;\nvar tooltipManager_1 = require(\"./dist/lib/widgets/tooltipManager\");\nexports.TooltipManager = tooltipManager_1.TooltipManager;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Constants = /** @class */ (function () {\n function Constants() {\n }\n Constants.STEP_EVERYTHING = 0;\n Constants.STEP_FILTER = 1;\n Constants.STEP_SORT = 2;\n Constants.STEP_MAP = 3;\n Constants.STEP_AGGREGATE = 4;\n Constants.STEP_PIVOT = 5;\n Constants.ROW_BUFFER_SIZE = 10;\n Constants.LAYOUT_INTERVAL = 500;\n Constants.BATCH_WAIT_MILLIS = 50;\n Constants.EXPORT_TYPE_DRAG_COPY = 'dragCopy';\n Constants.EXPORT_TYPE_CLIPBOARD = 'clipboard';\n Constants.EXPORT_TYPE_EXCEL = 'excel';\n Constants.EXPORT_TYPE_CSV = 'csv';\n Constants.KEY_BACKSPACE = 8;\n Constants.KEY_TAB = 9;\n Constants.KEY_NEW_LINE = 10;\n Constants.KEY_ENTER = 13;\n Constants.KEY_SHIFT = 16;\n Constants.KEY_ESCAPE = 27;\n Constants.KEY_SPACE = 32;\n Constants.KEY_LEFT = 37;\n Constants.KEY_UP = 38;\n Constants.KEY_RIGHT = 39;\n Constants.KEY_DOWN = 40;\n Constants.KEY_DELETE = 46;\n Constants.KEY_A = 65;\n Constants.KEY_C = 67;\n Constants.KEY_V = 86;\n Constants.KEY_D = 68;\n Constants.KEY_F2 = 113;\n Constants.KEY_PAGE_UP = 33;\n Constants.KEY_PAGE_DOWN = 34;\n Constants.KEY_PAGE_HOME = 36;\n Constants.KEY_PAGE_END = 35;\n Constants.ROW_MODEL_TYPE_INFINITE = 'infinite';\n Constants.ROW_MODEL_TYPE_VIEWPORT = 'viewport';\n Constants.ROW_MODEL_TYPE_CLIENT_SIDE = 'clientSide';\n Constants.ROW_MODEL_TYPE_SERVER_SIDE = 'serverSide';\n Constants.DEPRECATED_ROW_MODEL_TYPE_NORMAL = 'normal';\n Constants.ALWAYS = 'always';\n Constants.ONLY_WHEN_GROUPING = 'onlyWhenGrouping';\n Constants.PINNED_TOP = 'top';\n Constants.PINNED_BOTTOM = 'bottom';\n Constants.DOM_LAYOUT_NORMAL = 'normal';\n Constants.DOM_LAYOUT_PRINT = 'print';\n Constants.DOM_LAYOUT_AUTO_HEIGHT = 'autoHeight';\n Constants.GROUP_AUTO_COLUMN_ID = 'ag-Grid-AutoColumn';\n return Constants;\n}());\nexports.Constants = Constants;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar columnApi_1 = require(\"./columnController/columnApi\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar rowRenderer_1 = require(\"./rendering/rowRenderer\");\nvar filterManager_1 = require(\"./filter/filterManager\");\nvar eventService_1 = require(\"./eventService\");\nvar gridPanel_1 = require(\"./gridPanel/gridPanel\");\nvar logger_1 = require(\"./logger\");\nvar popupService_1 = require(\"./widgets/popupService\");\nvar context_1 = require(\"./context/context\");\nvar focusedCellController_1 = require(\"./focusedCellController\");\nvar component_1 = require(\"./widgets/component\");\nvar gridApi_1 = require(\"./gridApi\");\nvar componentAnnotations_1 = require(\"./widgets/componentAnnotations\");\nvar events_1 = require(\"./events\");\nvar resizeObserverService_1 = require(\"./misc/resizeObserverService\");\nvar sideBar_1 = require(\"./entities/sideBar\");\nvar utils_1 = require(\"./utils\");\nvar GridCore = /** @class */ (function (_super) {\n __extends(GridCore, _super);\n function GridCore() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridCore.prototype.init = function () {\n var _this = this;\n this.logger = this.loggerFactory.create('GridCore');\n var template = this.enterprise ? GridCore.TEMPLATE_ENTERPRISE : GridCore.TEMPLATE_NORMAL;\n this.setTemplate(template);\n // register with services that need grid core\n [\n this.gridApi,\n this.filterManager,\n this.rowRenderer,\n this.popupService\n ].forEach(function (service) { return service.registerGridCore(_this); });\n if (this.enterprise) {\n this.clipboardService.registerGridCore(this);\n }\n this.gridOptionsWrapper.addLayoutElement(this.getGui());\n // see what the grid options are for default of toolbar\n this.setSideBarVisible(this.gridOptionsWrapper.isShowToolPanel());\n this.eGridDiv.appendChild(this.getGui());\n this.addDestroyFunc(function () {\n _this.eGridDiv.removeChild(_this.getGui());\n });\n // if using angular, watch for quickFilter changes\n if (this.$scope) {\n var quickFilterUnregisterFn = this.$scope.$watch(this.quickFilterOnScope, function (newFilter) { return _this.filterManager.setQuickFilter(newFilter); });\n this.addDestroyFunc(quickFilterUnregisterFn);\n }\n // important to set rtl before doLayout, as setting the RTL class impacts the scroll position,\n // which doLayout indirectly depends on\n this.addRtlSupport();\n this.logger.log('ready');\n this.gridOptionsWrapper.addLayoutElement(this.eRootWrapperBody);\n var gridPanelEl = this.gridPanel.getGui();\n this.addDestroyableEventListener(gridPanelEl, 'focusin', function () {\n utils_1._.addCssClass(gridPanelEl, 'ag-has-focus');\n });\n this.addDestroyableEventListener(gridPanelEl, 'focusout', function (e) {\n if (!gridPanelEl.contains(e.relatedTarget)) {\n utils_1._.removeCssClass(gridPanelEl, 'ag-has-focus');\n }\n });\n var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eGridDiv, this.onGridSizeChanged.bind(this));\n this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n };\n GridCore.prototype.onGridSizeChanged = function () {\n var event = {\n type: events_1.Events.EVENT_GRID_SIZE_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n clientWidth: this.eGridDiv.clientWidth,\n clientHeight: this.eGridDiv.clientHeight\n };\n this.eventService.dispatchEvent(event);\n };\n GridCore.prototype.addRtlSupport = function () {\n var cssClass = this.gridOptionsWrapper.isEnableRtl() ? 'ag-rtl' : 'ag-ltr';\n utils_1._.addCssClass(this.getGui(), cssClass);\n };\n GridCore.prototype.getRootGui = function () {\n return this.getGui();\n };\n GridCore.prototype.isSideBarVisible = function () {\n if (!this.sideBarComp) {\n return false;\n }\n return this.sideBarComp.isVisible();\n };\n GridCore.prototype.setSideBarVisible = function (show) {\n if (!this.sideBarComp) {\n if (show) {\n console.warn('ag-Grid: toolPanel is only available in ag-Grid Enterprise');\n }\n return;\n }\n this.sideBarComp.setVisible(show);\n };\n GridCore.prototype.closeToolPanel = function () {\n if (!this.sideBarComp) {\n console.warn('ag-Grid: toolPanel is only available in ag-Grid Enterprise');\n return;\n }\n this.sideBarComp.close();\n };\n GridCore.prototype.getSideBar = function () {\n return this.gridOptions.sideBar;\n };\n GridCore.prototype.refreshSideBar = function () {\n if (this.sideBarComp) {\n this.sideBarComp.refresh();\n }\n };\n GridCore.prototype.setSideBar = function (def) {\n this.eRootWrapperBody.removeChild(this.sideBarComp.getGui());\n this.gridOptions.sideBar = sideBar_1.SideBarDefParser.parse(def);\n this.sideBarComp.reset();\n this.eRootWrapperBody.appendChild(this.sideBarComp.getGui());\n };\n GridCore.prototype.getOpenedToolPanel = function () {\n if (!this.sideBarComp) {\n return null;\n }\n return this.sideBarComp.openedItem();\n };\n GridCore.prototype.openToolPanel = function (key) {\n if (!this.sideBarComp) {\n console.warn('ag-Grid: toolPanel is only available in ag-Grid Enterprise');\n return;\n }\n this.sideBarComp.openToolPanel(key);\n };\n GridCore.prototype.isToolPanelShowing = function () {\n return this.sideBarComp.isToolPanelShowing();\n };\n GridCore.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.logger.log('Grid DOM removed');\n };\n // Valid values for position are bottom, middle and top\n GridCore.prototype.ensureNodeVisible = function (comparator, position) {\n if (position === void 0) { position = 'top'; }\n if (this.doingVirtualPaging) {\n throw new Error('Cannot use ensureNodeVisible when doing virtual paging, as we cannot check rows that are not in memory');\n }\n // look for the node index we want to display\n var rowCount = this.rowModel.getPageLastRow() + 1;\n var comparatorIsAFunction = typeof comparator === 'function';\n var indexToSelect = -1;\n // go through all the nodes, find the one we want to show\n for (var i = 0; i < rowCount; i++) {\n var node = this.rowModel.getRow(i);\n if (comparatorIsAFunction) {\n if (comparator(node)) {\n indexToSelect = i;\n break;\n }\n }\n else {\n // check object equality against node and data\n if (comparator === node || comparator === node.data) {\n indexToSelect = i;\n break;\n }\n }\n }\n if (indexToSelect >= 0) {\n this.gridPanel.ensureIndexVisible(indexToSelect, position);\n }\n };\n GridCore.TEMPLATE_NORMAL = \"
\\n
\\n \\n
\\n \\n
\";\n GridCore.TEMPLATE_ENTERPRISE = \"
\\n \\n
\\n \\n \\n
\\n \\n \\n \\n
\";\n __decorate([\n context_1.Autowired('enterprise'),\n __metadata(\"design:type\", Boolean)\n ], GridCore.prototype, \"enterprise\", void 0);\n __decorate([\n context_1.Autowired('gridOptions'),\n __metadata(\"design:type\", Object)\n ], GridCore.prototype, \"gridOptions\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], GridCore.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], GridCore.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('frameworkFactory'),\n __metadata(\"design:type\", Object)\n ], GridCore.prototype, \"frameworkFactory\", void 0);\n __decorate([\n context_1.Autowired('resizeObserverService'),\n __metadata(\"design:type\", resizeObserverService_1.ResizeObserverService)\n ], GridCore.prototype, \"resizeObserverService\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], GridCore.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('rowRenderer'),\n __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n ], GridCore.prototype, \"rowRenderer\", void 0);\n __decorate([\n context_1.Autowired('filterManager'),\n __metadata(\"design:type\", filterManager_1.FilterManager)\n ], GridCore.prototype, \"filterManager\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], GridCore.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('eGridDiv'),\n __metadata(\"design:type\", HTMLElement)\n ], GridCore.prototype, \"eGridDiv\", void 0);\n __decorate([\n context_1.Autowired('$scope'),\n __metadata(\"design:type\", Object)\n ], GridCore.prototype, \"$scope\", void 0);\n __decorate([\n context_1.Autowired('quickFilterOnScope'),\n __metadata(\"design:type\", String)\n ], GridCore.prototype, \"quickFilterOnScope\", void 0);\n __decorate([\n context_1.Autowired('popupService'),\n __metadata(\"design:type\", popupService_1.PopupService)\n ], GridCore.prototype, \"popupService\", void 0);\n __decorate([\n context_1.Autowired('focusedCellController'),\n __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n ], GridCore.prototype, \"focusedCellController\", void 0);\n __decorate([\n context_1.Autowired('loggerFactory'),\n __metadata(\"design:type\", logger_1.LoggerFactory)\n ], GridCore.prototype, \"loggerFactory\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], GridCore.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], GridCore.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Optional('clipboardService'),\n __metadata(\"design:type\", Object)\n ], GridCore.prototype, \"clipboardService\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('gridPanel'),\n __metadata(\"design:type\", gridPanel_1.GridPanel)\n ], GridCore.prototype, \"gridPanel\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('sideBar'),\n __metadata(\"design:type\", Object)\n ], GridCore.prototype, \"sideBarComp\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('rootWrapperBody'),\n __metadata(\"design:type\", HTMLElement)\n ], GridCore.prototype, \"eRootWrapperBody\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], GridCore.prototype, \"init\", null);\n return GridCore;\n}(component_1.Component));\nexports.GridCore = GridCore;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar baseFilter_1 = require(\"./baseFilter\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar utils_1 = require(\"../utils\");\nvar TextFilter = /** @class */ (function (_super) {\n __extends(TextFilter, _super);\n function TextFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextFilter.prototype.getDefaultType = function () {\n return baseFilter_1.BaseFilter.CONTAINS;\n };\n TextFilter.prototype.customInit = function () {\n this.comparator = this.filterParams.textCustomComparator ? this.filterParams.textCustomComparator : TextFilter.DEFAULT_COMPARATOR;\n this.formatter =\n this.filterParams.textFormatter ? this.filterParams.textFormatter :\n this.filterParams.caseSensitive == true ? TextFilter.DEFAULT_FORMATTER :\n TextFilter.DEFAULT_LOWERCASE_FORMATTER;\n _super.prototype.customInit.call(this);\n };\n TextFilter.prototype.modelFromFloatingFilter = function (from) {\n return {\n type: this.selectedFilter,\n filter: from,\n filterType: 'text'\n };\n };\n TextFilter.prototype.getApplicableFilterTypes = function () {\n return [baseFilter_1.BaseFilter.EQUALS, baseFilter_1.BaseFilter.NOT_EQUAL, baseFilter_1.BaseFilter.STARTS_WITH, baseFilter_1.BaseFilter.ENDS_WITH,\n baseFilter_1.BaseFilter.CONTAINS, baseFilter_1.BaseFilter.NOT_CONTAINS];\n };\n TextFilter.prototype.bodyTemplate = function (type) {\n var translate = this.translate.bind(this);\n var fieldId = type == baseFilter_1.FilterConditionType.MAIN ? \"filterText\" : \"filterConditionText\";\n return \"
\\n
\\n \\n
\\n
\";\n };\n TextFilter.prototype.initialiseFilterBodyUi = function (type) {\n _super.prototype.initialiseFilterBodyUi.call(this, type);\n this.addFilterChangedListener(type);\n this.setFilter(this.filterConditionText, baseFilter_1.FilterConditionType.CONDITION);\n this.setFilterType(this.selectedFilterCondition, baseFilter_1.FilterConditionType.CONDITION);\n };\n TextFilter.prototype.addFilterChangedListener = function (type) {\n var _this = this;\n var eElement = type === baseFilter_1.FilterConditionType.MAIN ? this.eFilterTextField : this.eFilterConditionTextField;\n var debounceMs = this.getDebounceMs(this.filterParams);\n var toDebounce = utils_1._.debounce(function () { return _this.onFilterTextFieldChanged(type); }, debounceMs);\n this.addDestroyableEventListener(eElement, 'input', toDebounce);\n };\n TextFilter.prototype.refreshFilterBodyUi = function (type) {\n var filterType = type === baseFilter_1.FilterConditionType.MAIN ? this.selectedFilter : this.selectedFilterCondition;\n if (this.eFilterConditionTextField) {\n this.addFilterChangedListener(baseFilter_1.FilterConditionType.CONDITION);\n }\n // show / hide filter input, i.e. if custom filter has 'hideFilterInputField = true' or an empty filter\n var filterInput = type === baseFilter_1.FilterConditionType.MAIN ? this.eFilterTextField : this.eFilterConditionTextField;\n if (filterInput) {\n var showFilterInput = !this.doesFilterHaveHiddenInput(filterType) && filterType !== baseFilter_1.BaseFilter.EMPTY;\n utils_1._.setVisible(filterInput, showFilterInput);\n }\n };\n TextFilter.prototype.afterGuiAttached = function () {\n this.eFilterTextField.focus();\n };\n TextFilter.prototype.filterValues = function (type) {\n return type === baseFilter_1.FilterConditionType.MAIN ? this.filterText : this.filterConditionText;\n };\n TextFilter.prototype.individualFilterPasses = function (params, type) {\n var filterText = type == baseFilter_1.FilterConditionType.MAIN ? this.filterText : this.filterConditionText;\n var filter = type == baseFilter_1.FilterConditionType.MAIN ? this.selectedFilter : this.selectedFilterCondition;\n var customFilterOption = this.customFilterOptions[filter];\n if (customFilterOption) {\n // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden\n if (filterText != null || customFilterOption.hideFilterInput) {\n var cellValue = this.filterParams.valueGetter(params.node);\n var formattedCellValue = this.formatter(cellValue);\n return customFilterOption.test(filterText, formattedCellValue);\n }\n }\n if (!filterText) {\n return type === baseFilter_1.FilterConditionType.MAIN ? true : this.conditionValue === 'AND';\n }\n else {\n return this.checkIndividualFilter(params, filter, filterText);\n }\n };\n TextFilter.prototype.checkIndividualFilter = function (params, filterType, filterText) {\n var cellValue = this.filterParams.valueGetter(params.node);\n var filterTextFormatted = this.formatter(filterText);\n if (cellValue == null || cellValue === undefined) {\n return filterType === baseFilter_1.BaseFilter.NOT_EQUAL || filterType === baseFilter_1.BaseFilter.NOT_CONTAINS;\n }\n var valueFormatted = this.formatter(cellValue);\n return this.comparator(filterType, valueFormatted, filterTextFormatted);\n };\n TextFilter.prototype.onFilterTextFieldChanged = function (type) {\n var value = type === baseFilter_1.FilterConditionType.MAIN ? this.eFilterTextField.value : this.eFilterConditionTextField.value;\n var current = type === baseFilter_1.FilterConditionType.MAIN ? this.filterText : this.filterConditionText;\n var filterText = utils_1._.makeNull(value);\n if (filterText && filterText.trim() === '') {\n filterText = null;\n }\n if (current !== filterText) {\n var newLowerCase = filterText && this.filterParams.caseSensitive != true ? filterText.toLowerCase() :\n filterText;\n var previousLowerCase = current && this.filterParams.caseSensitive != true ? current.toLowerCase() :\n current;\n if (type === baseFilter_1.FilterConditionType.MAIN) {\n this.filterText = this.formatter(filterText);\n }\n else {\n this.filterConditionText = this.formatter(filterText);\n }\n if (previousLowerCase !== newLowerCase) {\n this.onFilterChanged();\n }\n }\n };\n TextFilter.prototype.setFilter = function (filter, type) {\n filter = utils_1._.makeNull(filter);\n if (type === baseFilter_1.FilterConditionType.MAIN) {\n if (filter) {\n this.filterText = this.formatter(filter);\n if (!this.eFilterTextField) {\n return;\n }\n this.eFilterTextField.value = filter;\n }\n else {\n this.filterText = null;\n if (!this.eFilterTextField) {\n return;\n }\n this.eFilterTextField.value = null;\n }\n }\n else {\n if (filter) {\n this.filterConditionText = this.formatter(filter);\n if (!this.eFilterConditionTextField) {\n return;\n }\n this.eFilterConditionTextField.value = filter;\n }\n else {\n this.filterConditionText = null;\n if (!this.eFilterConditionTextField) {\n return;\n }\n this.eFilterConditionTextField.value = null;\n }\n }\n };\n TextFilter.prototype.getFilter = function () {\n return this.filterText;\n };\n TextFilter.prototype.resetState = function (resetConditionFilterOnly) {\n if (resetConditionFilterOnly === void 0) { resetConditionFilterOnly = false; }\n if (!resetConditionFilterOnly) {\n this.setFilterType(this.defaultFilter, baseFilter_1.FilterConditionType.MAIN);\n this.setFilter(null, baseFilter_1.FilterConditionType.MAIN);\n }\n this.setFilterType(this.defaultFilter, baseFilter_1.FilterConditionType.CONDITION);\n this.setFilter(null, baseFilter_1.FilterConditionType.CONDITION);\n };\n TextFilter.prototype.serialize = function (type) {\n var filter = type === baseFilter_1.FilterConditionType.MAIN ? this.selectedFilter : this.selectedFilterCondition;\n var filterText = type === baseFilter_1.FilterConditionType.MAIN ? this.filterText : this.filterConditionText;\n return {\n type: filter ? filter : this.defaultFilter,\n filter: filterText,\n filterType: 'text'\n };\n };\n TextFilter.prototype.parse = function (model, type) {\n this.setFilterType(model.type, type);\n this.setFilter(model.filter, type);\n };\n TextFilter.prototype.setType = function (filterType, type) {\n this.setFilterType(filterType, type);\n };\n TextFilter.DEFAULT_FORMATTER = function (from) {\n return from;\n };\n TextFilter.DEFAULT_LOWERCASE_FORMATTER = function (from) {\n if (from == null) {\n return null;\n }\n return from.toString().toLowerCase();\n };\n TextFilter.DEFAULT_COMPARATOR = function (filter, value, filterText) {\n switch (filter) {\n case TextFilter.CONTAINS:\n return value.indexOf(filterText) >= 0;\n case TextFilter.NOT_CONTAINS:\n return value.indexOf(filterText) === -1;\n case TextFilter.EQUALS:\n return value === filterText;\n case TextFilter.NOT_EQUAL:\n return value != filterText;\n case TextFilter.STARTS_WITH:\n return value.indexOf(filterText) === 0;\n case TextFilter.ENDS_WITH:\n var index = value.lastIndexOf(filterText);\n return index >= 0 && index === (value.length - filterText.length);\n default:\n // should never happen\n console.warn('invalid filter type ' + filter);\n return false;\n }\n };\n __decorate([\n componentAnnotations_1.QuerySelector('#filterText'),\n __metadata(\"design:type\", HTMLInputElement)\n ], TextFilter.prototype, \"eFilterTextField\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#filterConditionText'),\n __metadata(\"design:type\", HTMLInputElement)\n ], TextFilter.prototype, \"eFilterConditionTextField\", void 0);\n return TextFilter;\n}(baseFilter_1.ComparableBaseFilter));\nexports.TextFilter = TextFilter;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar context_1 = require(\"../../context/context\");\nvar component_1 = require(\"../../widgets/component\");\nvar NoRowsOverlayComponent = /** @class */ (function (_super) {\n __extends(NoRowsOverlayComponent, _super);\n function NoRowsOverlayComponent() {\n return _super.call(this) || this;\n }\n NoRowsOverlayComponent.prototype.init = function (params) {\n var template = this.gridOptionsWrapper.getOverlayNoRowsTemplate() ?\n this.gridOptionsWrapper.getOverlayNoRowsTemplate() : NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var localisedTemplate = template.replace('[NO_ROWS_TO_SHOW]', localeTextFunc('noRowsToShow', 'No Rows To Show'));\n this.setTemplate(localisedTemplate);\n };\n NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE = '[NO_ROWS_TO_SHOW]';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], NoRowsOverlayComponent.prototype, \"gridOptionsWrapper\", void 0);\n return NoRowsOverlayComponent;\n}(component_1.Component));\nexports.NoRowsOverlayComponent = NoRowsOverlayComponent;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rowRenderer_1 = require(\"./rowRenderer\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar headerWrapperComp_1 = require(\"../headerRendering/header/headerWrapperComp\");\nvar AutoWidthCalculator = /** @class */ (function () {\n function AutoWidthCalculator() {\n }\n AutoWidthCalculator.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n AutoWidthCalculator.prototype.registerHeaderRootComp = function (headerRootComp) {\n this.headerRootComp = headerRootComp;\n };\n // this is the trick: we create a dummy container and clone all the cells\n // into the dummy, then check the dummy's width. then destroy the dummy\n // as we don't need it any more.\n // drawback: only the cells visible on the screen are considered\n AutoWidthCalculator.prototype.getPreferredWidthForColumn = function (column) {\n var eHeaderCell = this.getHeaderCellForColumn(column);\n // cell isn't visible\n if (!eHeaderCell) {\n return -1;\n }\n var eDummyContainer = document.createElement('span');\n // position fixed, so it isn't restricted to the boundaries of the parent\n eDummyContainer.style.position = 'fixed';\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n var eBodyContainer = this.gridPanel.getCenterContainer();\n eBodyContainer.appendChild(eDummyContainer);\n // get all the cells that are currently displayed (this only brings back\n // rendered cells, rows not rendered due to row visualisation will not be here)\n this.putRowCellsIntoDummyContainer(column, eDummyContainer);\n // also put header cell in\n // we only consider the lowest level cell, not the group cell. in 99% of the time, this\n // will be enough. if we consider groups, then it gets to complicated for what it's worth,\n // as the groups can span columns and this class only considers one column at a time.\n this.cloneItemIntoDummy(eHeaderCell, eDummyContainer);\n // at this point, all the clones are lined up vertically with natural widths. the dummy\n // container will have a width wide enough just to fit the largest.\n var dummyContainerWidth = eDummyContainer.offsetWidth;\n // we are finished with the dummy container, so get rid of it\n eBodyContainer.removeChild(eDummyContainer);\n // we add padding as I found sometimes the gui still put '...' after some of the texts. so the\n // user can configure the grid to add a few more pixels after the calculated width\n var autoSizePadding = this.gridOptionsWrapper.getAutoSizePadding();\n return dummyContainerWidth + autoSizePadding;\n };\n AutoWidthCalculator.prototype.getHeaderCellForColumn = function (column) {\n var comp = null;\n // find the rendered header cell\n this.headerRootComp.forEachHeaderElement(function (headerElement) {\n if (headerElement instanceof headerWrapperComp_1.HeaderWrapperComp) {\n var headerWrapperComp = headerElement;\n if (headerWrapperComp.getColumn() === column) {\n comp = headerWrapperComp;\n }\n }\n });\n return comp ? comp.getGui() : null;\n };\n AutoWidthCalculator.prototype.putRowCellsIntoDummyContainer = function (column, eDummyContainer) {\n var _this = this;\n var eCells = this.rowRenderer.getAllCellsForColumn(column);\n eCells.forEach(function (eCell) { return _this.cloneItemIntoDummy(eCell, eDummyContainer); });\n };\n AutoWidthCalculator.prototype.cloneItemIntoDummy = function (eCell, eDummyContainer) {\n // make a deep clone of the cell\n var eCellClone = eCell.cloneNode(true);\n // the original has a fixed width, we remove this to allow the natural width based on content\n eCellClone.style.width = '';\n // the original has position = absolute, we need to remove this so it's positioned normally\n eCellClone.style.position = 'static';\n eCellClone.style.left = '';\n // we put the cell into a containing div, as otherwise the cells would just line up\n // on the same line, standard flow layout, by putting them into divs, they are laid\n // out one per line\n var eCloneParent = document.createElement('div');\n // table-row, so that each cell is on a row. i also tried display='block', but this\n // didn't work in IE\n eCloneParent.style.display = 'table-row';\n // the twig on the branch, the branch on the tree, the tree in the hole,\n // the hole in the bog, the bog in the clone, the clone in the parent,\n // the parent in the dummy, and the dummy down in the vall-e-ooo, OOOOOOOOO! Oh row the rattling bog....\n eCloneParent.appendChild(eCellClone);\n eDummyContainer.appendChild(eCloneParent);\n };\n __decorate([\n context_1.Autowired('rowRenderer'),\n __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n ], AutoWidthCalculator.prototype, \"rowRenderer\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], AutoWidthCalculator.prototype, \"gridOptionsWrapper\", void 0);\n AutoWidthCalculator = __decorate([\n context_1.Bean('autoWidthCalculator')\n ], AutoWidthCalculator);\n return AutoWidthCalculator;\n}());\nexports.AutoWidthCalculator = AutoWidthCalculator;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar logger_1 = require(\"../logger\");\nvar columnUtils_1 = require(\"./columnUtils\");\nvar columnKeyCreator_1 = require(\"./columnKeyCreator\");\nvar originalColumnGroup_1 = require(\"../entities/originalColumnGroup\");\nvar column_1 = require(\"../entities/column\");\nvar context_1 = require(\"../context/context\");\nvar defaultColumnTypes_1 = require(\"../entities/defaultColumnTypes\");\nvar utils_1 = require(\"../utils\");\n// takes ColDefs and ColGroupDefs and turns them into Columns and OriginalGroups\nvar ColumnFactory = /** @class */ (function () {\n function ColumnFactory() {\n }\n ColumnFactory.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ColumnFactory');\n };\n ColumnFactory.prototype.createColumnTree = function (defs, primaryColumns, existingColumns) {\n // column key creator dishes out unique column id's in a deterministic way,\n // so if we have two grids (that could be master/slave) with same column definitions,\n // then this ensures the two grids use identical id's.\n var columnKeyCreator = new columnKeyCreator_1.ColumnKeyCreator();\n if (existingColumns) {\n var existingKeys = existingColumns.map(function (col) { return col.getId(); });\n columnKeyCreator.addExistingKeys(existingKeys);\n }\n // we take a copy of the columns as we are going to be removing from them\n var existingColsCopy = existingColumns ? existingColumns.slice() : null;\n // create am unbalanced tree that maps the provided definitions\n var unbalancedTree = this.recursivelyCreateColumns(defs, 0, primaryColumns, existingColsCopy, columnKeyCreator, null);\n var treeDept = this.findMaxDept(unbalancedTree, 0);\n this.logger.log('Number of levels for grouped columns is ' + treeDept);\n var res = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);\n var deptFirstCallback = function (child, parent) {\n if (child instanceof originalColumnGroup_1.OriginalColumnGroup) {\n child.setupExpandable();\n }\n // we set the original parents at the end, rather than when we go along, as balancing the tree\n // adds extra levels into the tree. so we can only set parents when balancing is done.\n child.setOriginalParent(parent);\n };\n this.columnUtils.depthFirstOriginalTreeSearch(null, res, deptFirstCallback);\n return {\n columnTree: res,\n treeDept: treeDept\n };\n };\n ColumnFactory.prototype.createForAutoGroups = function (autoGroupCols, gridBalancedTree) {\n var _this = this;\n var autoColBalancedTree = [];\n autoGroupCols.forEach(function (col) {\n var fakeTreeItem = _this.createAutoGroupTreeItem(gridBalancedTree, col);\n autoColBalancedTree.push(fakeTreeItem);\n });\n return autoColBalancedTree;\n };\n ColumnFactory.prototype.createAutoGroupTreeItem = function (balancedColumnTree, column) {\n var dept = this.findDepth(balancedColumnTree);\n // at the end, this will be the top of the tree item.\n var nextChild = column;\n for (var i = dept - 1; i >= 0; i--) {\n var autoGroup = new originalColumnGroup_1.OriginalColumnGroup(null, \"FAKE_PATH_\" + column.getId() + \"}_\" + i, true, i);\n this.context.wireBean(autoGroup);\n autoGroup.setChildren([nextChild]);\n nextChild.setOriginalParent(autoGroup);\n nextChild = autoGroup;\n }\n // at this point, the nextChild is the top most item in the tree\n return nextChild;\n };\n ColumnFactory.prototype.findDepth = function (balancedColumnTree) {\n var dept = 0;\n var pointer = balancedColumnTree;\n while (pointer && pointer[0] && pointer[0] instanceof originalColumnGroup_1.OriginalColumnGroup) {\n dept++;\n pointer = pointer[0].getChildren();\n }\n return dept;\n };\n ColumnFactory.prototype.balanceColumnTree = function (unbalancedTree, currentDept, columnDept, columnKeyCreator) {\n var result = [];\n // go through each child, for groups, recurse a level deeper,\n // for columns we need to pad\n for (var i = 0; i < unbalancedTree.length; i++) {\n var child = unbalancedTree[i];\n if (child instanceof originalColumnGroup_1.OriginalColumnGroup) {\n // child is a group, all we do is go to the next level of recursion\n var originalGroup = child;\n var newChildren = this.balanceColumnTree(originalGroup.getChildren(), currentDept + 1, columnDept, columnKeyCreator);\n originalGroup.setChildren(newChildren);\n result.push(originalGroup);\n }\n else {\n // child is a column - so here we add in the padded column groups if needed\n var firstPaddedGroup = void 0;\n var currentPaddedGroup = void 0;\n // this for loop will NOT run any loops if no padded column groups are needed\n for (var j = columnDept - 1; j >= currentDept; j--) {\n var newColId = columnKeyCreator.getUniqueKey(null, null);\n var colGroupDefMerged = this.createMergedColGroupDef(null);\n var paddedGroup = new originalColumnGroup_1.OriginalColumnGroup(colGroupDefMerged, newColId, true, currentDept);\n this.context.wireBean(paddedGroup);\n if (currentPaddedGroup) {\n currentPaddedGroup.setChildren([paddedGroup]);\n }\n currentPaddedGroup = paddedGroup;\n if (!firstPaddedGroup) {\n firstPaddedGroup = currentPaddedGroup;\n }\n }\n // likewise this if statement will not run if no padded groups\n if (firstPaddedGroup) {\n result.push(firstPaddedGroup);\n var hasGroups = unbalancedTree.some(function (child) { return child instanceof originalColumnGroup_1.OriginalColumnGroup; });\n if (hasGroups) {\n currentPaddedGroup.setChildren([child]);\n continue;\n }\n else {\n currentPaddedGroup.setChildren(unbalancedTree);\n break;\n }\n }\n result.push(child);\n }\n }\n return result;\n };\n ColumnFactory.prototype.findMaxDept = function (treeChildren, dept) {\n var maxDeptThisLevel = dept;\n for (var i = 0; i < treeChildren.length; i++) {\n var abstractColumn = treeChildren[i];\n if (abstractColumn instanceof originalColumnGroup_1.OriginalColumnGroup) {\n var originalGroup = abstractColumn;\n var newDept = this.findMaxDept(originalGroup.getChildren(), dept + 1);\n if (maxDeptThisLevel < newDept) {\n maxDeptThisLevel = newDept;\n }\n }\n }\n return maxDeptThisLevel;\n };\n ColumnFactory.prototype.recursivelyCreateColumns = function (defs, level, primaryColumns, existingColsCopy, columnKeyCreator, parent) {\n var _this = this;\n var result = [];\n if (!defs) {\n return result;\n }\n defs.forEach(function (def) {\n var newGroupOrColumn;\n if (_this.isColumnGroup(def)) {\n newGroupOrColumn = _this.createColumnGroup(primaryColumns, def, level, existingColsCopy, columnKeyCreator, parent);\n }\n else {\n newGroupOrColumn = _this.createColumn(primaryColumns, def, existingColsCopy, columnKeyCreator, parent);\n }\n result.push(newGroupOrColumn);\n });\n return result;\n };\n ColumnFactory.prototype.createColumnGroup = function (primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, parent) {\n var colGroupDefMerged = this.createMergedColGroupDef(colGroupDef);\n var groupId = columnKeyCreator.getUniqueKey(colGroupDefMerged.groupId, null);\n var originalGroup = new originalColumnGroup_1.OriginalColumnGroup(colGroupDefMerged, groupId, false, level);\n this.context.wireBean(originalGroup);\n var children = this.recursivelyCreateColumns(colGroupDefMerged.children, level + 1, primaryColumns, existingColumns, columnKeyCreator, originalGroup);\n originalGroup.setChildren(children);\n return originalGroup;\n };\n ColumnFactory.prototype.createMergedColGroupDef = function (colGroupDef) {\n var colGroupDefMerged = {};\n utils_1._.assign(colGroupDefMerged, this.gridOptionsWrapper.getDefaultColGroupDef());\n utils_1._.assign(colGroupDefMerged, colGroupDef);\n this.checkForDeprecatedItems(colGroupDefMerged);\n return colGroupDefMerged;\n };\n ColumnFactory.prototype.createColumn = function (primaryColumns, colDef, existingColsCopy, columnKeyCreator, parent) {\n var colDefMerged = this.mergeColDefs(colDef);\n this.checkForDeprecatedItems(colDefMerged);\n // see if column already exists\n var column = this.findExistingColumn(colDef, existingColsCopy);\n if (!column) {\n // no existing column, need to create one\n var colId = columnKeyCreator.getUniqueKey(colDefMerged.colId, colDefMerged.field);\n column = new column_1.Column(colDefMerged, colDef, colId, primaryColumns);\n this.context.wireBean(column);\n }\n else {\n column.setColDef(colDefMerged, colDef);\n }\n return column;\n };\n ColumnFactory.prototype.findExistingColumn = function (colDef, existingColsCopy) {\n var res = utils_1._.find(existingColsCopy, function (col) {\n var oldColDef = col.getUserProvidedColDef();\n if (!oldColDef) {\n return false;\n }\n // first check object references\n if (oldColDef === colDef) {\n return true;\n }\n // second check id's\n var oldColHadId = oldColDef.colId !== null && oldColDef.colId !== undefined;\n if (oldColHadId) {\n return oldColDef.colId === colDef.colId;\n }\n else {\n return false;\n }\n });\n // make sure we remove, so if user provided duplicate id, then we don't have more than\n // one column instance for colDef with common id\n if (res) {\n utils_1._.removeFromArray(existingColsCopy, res);\n }\n return res;\n };\n ColumnFactory.prototype.mergeColDefs = function (colDef) {\n // start with empty merged definition\n var colDefMerged = {};\n // merge properties from default column definitions\n utils_1._.assign(colDefMerged, this.gridOptionsWrapper.getDefaultColDef());\n // merge properties from column type properties\n if (colDef.type) {\n this.assignColumnTypes(colDef, colDefMerged);\n }\n // merge properties from column definitions\n utils_1._.assign(colDefMerged, colDef);\n return colDefMerged;\n };\n ColumnFactory.prototype.assignColumnTypes = function (colDef, colDefMerged) {\n var typeKeys;\n if (colDef.type instanceof Array) {\n var invalidArray = colDef.type.some(function (a) { return typeof a !== 'string'; });\n if (invalidArray) {\n console.warn(\"ag-grid: if colDef.type is supplied an array it should be of type 'string[]'\");\n }\n else {\n typeKeys = colDef.type;\n }\n }\n else if (typeof colDef.type === 'string') {\n typeKeys = colDef.type.split(',');\n }\n else {\n console.warn(\"ag-grid: colDef.type should be of type 'string' | 'string[]'\");\n return;\n }\n // merge user defined with default column types\n var allColumnTypes = utils_1._.assign({}, this.gridOptionsWrapper.getColumnTypes(), defaultColumnTypes_1.DefaultColumnTypes);\n typeKeys.forEach(function (t) {\n var typeColDef = allColumnTypes[t.trim()];\n if (typeColDef) {\n utils_1._.assign(colDefMerged, typeColDef);\n }\n else {\n console.warn(\"ag-grid: colDef.type '\" + t + \"' does not correspond to defined gridOptions.columnTypes\");\n }\n });\n };\n ColumnFactory.prototype.checkForDeprecatedItems = function (colDef) {\n if (colDef) {\n var colDefNoType = colDef; // take out the type, so we can access attributes not defined in the type\n if (colDefNoType.group !== undefined) {\n console.warn('ag-grid: colDef.group is invalid, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.headerGroup !== undefined) {\n console.warn('ag-grid: colDef.headerGroup is invalid, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.headerGroupShow !== undefined) {\n console.warn('ag-grid: colDef.headerGroupShow is invalid, should be columnGroupShow, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.suppressRowGroup !== undefined) {\n console.warn('ag-grid: colDef.suppressRowGroup is deprecated, please use colDef.type instead');\n }\n if (colDefNoType.suppressAggregation !== undefined) {\n console.warn('ag-grid: colDef.suppressAggregation is deprecated, please use colDef.type instead');\n }\n if (colDefNoType.suppressRowGroup || colDefNoType.suppressAggregation) {\n console.warn('ag-grid: colDef.suppressAggregation and colDef.suppressRowGroup are deprecated, use allowRowGroup, allowPivot and allowValue instead');\n }\n if (colDefNoType.displayName) {\n console.warn(\"ag-grid: Found displayName \" + colDefNoType.displayName + \", please use headerName instead, displayName is deprecated.\");\n colDefNoType.headerName = colDefNoType.displayName;\n }\n }\n };\n // if object has children, we assume it's a group\n ColumnFactory.prototype.isColumnGroup = function (abstractColDef) {\n return abstractColDef.children !== undefined;\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ColumnFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnUtils'),\n __metadata(\"design:type\", columnUtils_1.ColumnUtils)\n ], ColumnFactory.prototype, \"columnUtils\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], ColumnFactory.prototype, \"context\", void 0);\n __decorate([\n __param(0, context_1.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], ColumnFactory.prototype, \"setBeans\", null);\n ColumnFactory = __decorate([\n context_1.Bean('columnFactory')\n ], ColumnFactory);\n return ColumnFactory;\n}());\nexports.ColumnFactory = ColumnFactory;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar popupWindow_1 = require(\"./popupWindow\");\nvar context_1 = require(\"../context/context\");\nvar component_1 = require(\"./component\");\nvar componentAnnotations_1 = require(\"./componentAnnotations\");\nvar PopupMessageBox = /** @class */ (function (_super) {\n __extends(PopupMessageBox, _super);\n function PopupMessageBox(title, message) {\n var _this = _super.call(this) || this;\n _this.title = title;\n _this.message = message;\n return _this;\n }\n PopupMessageBox.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n this.setTitle(this.title);\n var messageBodyComp = new MessageBody();\n this.addFeature(this.getContext(), messageBodyComp);\n messageBodyComp.setMessage(this.message);\n this.setBody(messageBodyComp.getGui());\n this.addDestroyableEventListener(messageBodyComp, 'onBtOk', function () { return _this.closePopup(); });\n };\n return PopupMessageBox;\n}(popupWindow_1.PopupWindow));\nexports.PopupMessageBox = PopupMessageBox;\nvar MessageBody = /** @class */ (function (_super) {\n __extends(MessageBody, _super);\n function MessageBody() {\n return _super.call(this, MessageBody.TEMPLATE) || this;\n }\n MessageBody.prototype.setMessage = function (message) {\n this.eCenter.innerText = message;\n };\n MessageBody.prototype.postConstruct = function () {\n this.addDestroyableEventListener(this.eOk, 'click', this.onBtOk.bind(this));\n };\n MessageBody.prototype.onBtOk = function () {\n this.dispatchEvent({ type: 'onBtOk' });\n };\n MessageBody.TEMPLATE = \"
\\n
\\n
\\n \\n
\\n
\";\n __decorate([\n componentAnnotations_1.RefSelector('eCenter'),\n __metadata(\"design:type\", HTMLElement)\n ], MessageBody.prototype, \"eCenter\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eOk'),\n __metadata(\"design:type\", HTMLElement)\n ], MessageBody.prototype, \"eOk\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], MessageBody.prototype, \"postConstruct\", null);\n return MessageBody;\n}(component_1.Component));\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar userComponentRegistry_1 = require(\"./userComponentRegistry\");\nvar agComponentUtils_1 = require(\"./agComponentUtils\");\nvar componentMetadataProvider_1 = require(\"./componentMetadataProvider\");\nvar utils_1 = require(\"../../utils\");\nvar ComponentSource;\n(function (ComponentSource) {\n ComponentSource[ComponentSource[\"DEFAULT\"] = 0] = \"DEFAULT\";\n ComponentSource[ComponentSource[\"REGISTERED_BY_NAME\"] = 1] = \"REGISTERED_BY_NAME\";\n ComponentSource[ComponentSource[\"HARDCODED\"] = 2] = \"HARDCODED\";\n})(ComponentSource = exports.ComponentSource || (exports.ComponentSource = {}));\nvar UserComponentFactory = /** @class */ (function () {\n function UserComponentFactory() {\n }\n UserComponentFactory.prototype.newDateComponent = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, \"dateComponent\", \"agDateInput\");\n };\n UserComponentFactory.prototype.newHeaderComponent = function (params) {\n return this.createAndInitUserComponent(params.column.getColDef(), params, \"headerComponent\", \"agColumnHeader\");\n };\n UserComponentFactory.prototype.newHeaderGroupComponent = function (params) {\n return this.createAndInitUserComponent(params.columnGroup.getColGroupDef(), params, \"headerGroupComponent\", \"agColumnGroupHeader\");\n };\n UserComponentFactory.prototype.newFullWidthGroupRowInnerCellRenderer = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, \"groupRowInnerRenderer\", null, true);\n };\n // this one is unusual, as it can be LoadingCellRenderer, DetailCellRenderer, FullWidthCellRenderer or GroupRowRenderer.\n // so we have to pass the type in.\n UserComponentFactory.prototype.newFullWidthCellRenderer = function (params, cellRendererType, cellRendererName) {\n return this.createAndInitUserComponent(null, params, cellRendererType, cellRendererName);\n };\n UserComponentFactory.prototype.newCellRenderer = function (target, params) {\n return this.createAndInitUserComponent(target, params, \"cellRenderer\", null, true);\n };\n UserComponentFactory.prototype.newPinnedRowCellRenderer = function (target, params) {\n return this.createAndInitUserComponent(target, params, \"pinnedRowCellRenderer\", null, true);\n };\n UserComponentFactory.prototype.newCellEditor = function (colDef, params) {\n return this.createAndInitUserComponent(colDef, params, 'cellEditor', 'agCellEditor');\n };\n UserComponentFactory.prototype.newInnerCellRenderer = function (target, params) {\n return this.createAndInitUserComponent(target, params, \"innerRenderer\", null);\n };\n UserComponentFactory.prototype.newLoadingOverlayComponent = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, \"loadingOverlayComponent\", \"agLoadingOverlay\");\n };\n UserComponentFactory.prototype.newNoRowsOverlayComponent = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, \"noRowsOverlayComponent\", \"agNoRowsOverlay\");\n };\n UserComponentFactory.prototype.newTooltipComponent = function (params) {\n var colDef = params.column && params.column.getColDef();\n return this.createAndInitUserComponent(colDef, params, \"tooltipComponent\", 'agTooltipComponent');\n };\n UserComponentFactory.prototype.newFilterComponent = function (colDef, params, defaultFilter, modifyParamsCallback) {\n return this.createAndInitUserComponent(colDef, params, 'filter', defaultFilter, false, modifyParamsCallback);\n };\n UserComponentFactory.prototype.newFloatingFilterComponent = function (colDef, params, defaultFloatingFilter) {\n return this.createAndInitUserComponent(colDef, params, \"floatingFilterComponent\", defaultFloatingFilter, true);\n };\n UserComponentFactory.prototype.newToolPanelComponent = function (toolPanelDef, params) {\n return this.createAndInitUserComponent(toolPanelDef, params, 'toolPanel');\n };\n UserComponentFactory.prototype.newStatusPanelComponent = function (def, params) {\n return this.createAndInitUserComponent(def, params, 'statusPanel');\n };\n /**\n * This method creates a component given everything needed to guess what sort of component needs to be instantiated\n * It takes\n * @param definitionObject: This is the context for which this component needs to be created, it can be gridOptions\n * (global) or columnDef mostly.\n * @param paramsFromGrid: Params to be passed to the component and passed by ag-Grid. This will get merged with any params\n * specified by the user in the configuration\n * @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n * 'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n * @param defaultComponentName: The actual name of the component to instantiate, this is usually the same as propertyName, but in\n * some cases is not, like floatingFilter, if it is the same is not necessary to specify\n * @param optional: Handy method to tell if this should return a component ALWAYS. if that is the case, but there is no\n * component found, it throws an error, by default all components are MANDATORY\n * @param modifyParamsCallback: A chance to customise the params passed to the init method. It receives what the current\n * params are and the component that init is about to get called for\n */\n UserComponentFactory.prototype.createAndInitUserComponent = function (definitionObject, paramsFromGrid, propertyName, defaultComponentName, \n // optional items are: FloatingFilter, CellComp (for cellRenderer)\n optional, \n // used by FilterManager only\n modifyParamsCallback) {\n if (optional === void 0) { optional = false; }\n if (!definitionObject) {\n definitionObject = this.gridOptions;\n }\n // Create the component instance\n var componentAndParams = this.createComponentInstance(definitionObject, propertyName, paramsFromGrid, defaultComponentName, optional);\n if (!componentAndParams) {\n return null;\n }\n var componentInstance = componentAndParams.componentInstance;\n // Wire the component and call the init method with the correct params\n var params = this.createFinalParams(definitionObject, propertyName, paramsFromGrid, componentAndParams.paramsFromSelector);\n this.addReactHacks(params);\n // give caller chance to set any params that depend on the componentInstance (need here as the\n // componentInstance was not available when createUserComponent was called)\n var paramsAfterCallback = modifyParamsCallback ? modifyParamsCallback(params, componentInstance) : params;\n var deferredInit = this.initComponent(componentInstance, paramsAfterCallback);\n if (deferredInit == null) {\n return utils_1.Promise.resolve(componentInstance);\n }\n else {\n var asPromise = deferredInit;\n return asPromise.map(function (notRelevant) { return componentInstance; });\n }\n };\n UserComponentFactory.prototype.addReactHacks = function (params) {\n // a temporary fix for AG-1574\n // AG-1715 raised to do a wider ranging refactor to improve this\n var agGridReact = this.context.getBean('agGridReact');\n if (agGridReact) {\n params.agGridReact = utils_1._.cloneObject(agGridReact);\n }\n // AG-1716 - directly related to AG-1574 and AG-1715\n var frameworkComponentWrapper = this.context.getBean('frameworkComponentWrapper');\n if (frameworkComponentWrapper) {\n params.frameworkComponentWrapper = frameworkComponentWrapper;\n }\n };\n /**\n * This method creates a component given everything needed to guess what sort of component needs to be instantiated\n * It takes\n * @param clazz: The class to instantiate,\n * @param agGridParams: Params to be passed to the component and passed by ag-Grid. This will get merged with any params\n * specified by the user in the configuration\n * @param modifyParamsCallback: A chance to customise the params passed to the init method. It receives what the current\n * params are and the component that init is about to get called for\n */\n UserComponentFactory.prototype.createUserComponentFromConcreteClass = function (clazz, agGridParams) {\n var internalComponent = new clazz();\n this.initComponent(internalComponent, agGridParams);\n return internalComponent;\n };\n /**\n * This method returns the underlying representation of the component to be created. ie for Javascript the\n * underlying function where we should be calling new into. In case of the frameworks, the framework class\n * object that represents the component to be created.\n *\n * This method is handy for different reasons, for example if you want to check if a component has a particular\n * method implemented without having to create the component, just by inspecting the source component\n *\n * It takes\n * @param definitionObject: This is the context for which this component needs to be created, it can be gridOptions\n * (global) or columnDef mostly.\n * @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n * 'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n * @param params: Params to be passed to the dynamic component function in case it needs to be\n * invoked\n * @param defaultComponentName: The name of the component to load if there is no component specified\n */\n UserComponentFactory.prototype.lookupComponentClassDef = function (definitionObject, propertyName, params, defaultComponentName) {\n if (params === void 0) { params = null; }\n /**\n * There are five things that can happen when resolving a component.\n * a) HardcodedFwComponent: That holder[propertyName]Framework has associated a Framework native component\n * b) HardcodedJsComponent: That holder[propertyName] has associate a JS component\n * c) hardcodedJsFunction: That holder[propertyName] has associate a JS function\n * d) hardcodedNameComponent: That holder[propertyName] has associate a string that represents a component to load\n * e) That none of the three previous are specified, then we need to use the DefaultRegisteredComponent\n */\n var hardcodedNameComponent = null;\n var HardcodedJsComponent = null;\n var hardcodedJsFunction = null;\n var HardcodedFwComponent = null;\n var componentSelectorFunc;\n if (definitionObject != null) {\n var componentPropertyValue = definitionObject[propertyName];\n // for filters only, we allow 'true' for the component, which means default filter to be used\n var usingDefaultComponent = componentPropertyValue === true;\n if (componentPropertyValue != null && !usingDefaultComponent) {\n if (typeof componentPropertyValue === 'string') {\n hardcodedNameComponent = componentPropertyValue;\n }\n else if (typeof componentPropertyValue === 'boolean') {\n // never happens, as we test for usingDefaultComponent above,\n // however it's needed for the next block to compile\n }\n else if (this.agComponentUtils.doesImplementIComponent(componentPropertyValue)) {\n HardcodedJsComponent = componentPropertyValue;\n }\n else {\n hardcodedJsFunction = componentPropertyValue;\n }\n }\n HardcodedFwComponent = definitionObject[propertyName + \"Framework\"];\n componentSelectorFunc = definitionObject[propertyName + \"Selector\"];\n }\n /**\n * Since we allow many types of flavors for specifying the components, let's make sure this is not an illegal\n * combination\n */\n if ((HardcodedJsComponent && HardcodedFwComponent) ||\n (hardcodedNameComponent && HardcodedFwComponent) ||\n (hardcodedJsFunction && HardcodedFwComponent)) {\n throw Error(\"ag-grid: you are trying to specify: \" + propertyName + \" twice as a component.\");\n }\n if (HardcodedFwComponent && !this.frameworkComponentWrapper) {\n throw Error(\"ag-grid: you are specifying a framework component but you are not using a framework version of ag-grid for : \" + propertyName);\n }\n if (componentSelectorFunc && (hardcodedNameComponent || HardcodedJsComponent || hardcodedJsFunction || HardcodedFwComponent)) {\n throw Error(\"ag-grid: you can't specify both, the selector and the component of ag-grid for : \" + propertyName);\n }\n /**\n * At this stage we are guaranteed to either have,\n * DEPRECATED\n * - A unique HardcodedFwComponent\n * - A unique HardcodedJsComponent\n * - A unique hardcodedJsFunction\n * BY NAME- FAVOURED APPROACH\n * - A unique hardcodedNameComponent\n * - None of the previous, hence we revert to: RegisteredComponent\n */\n if (HardcodedFwComponent) {\n // console.warn(`ag-grid: Since version 12.1.0 specifying a component directly is deprecated, you should register the component by name`);\n // console.warn(`${HardcodedFwComponent}`);\n return {\n componentFromFramework: true,\n component: HardcodedFwComponent,\n source: ComponentSource.HARDCODED,\n paramsFromSelector: null\n };\n }\n if (HardcodedJsComponent) {\n // console.warn(`ag-grid: Since version 12.1.0 specifying a component directly is deprecated, you should register the component by name`);\n // console.warn(`${HardcodedJsComponent}`);\n return {\n componentFromFramework: false,\n component: HardcodedJsComponent,\n source: ComponentSource.HARDCODED,\n paramsFromSelector: null\n };\n }\n if (hardcodedJsFunction) {\n // console.warn(`ag-grid: Since version 12.1.0 specifying a function directly is deprecated, you should register the component by name`);\n // console.warn(`${hardcodedJsFunction}`);\n return this.agComponentUtils.adaptFunction(propertyName, hardcodedJsFunction, false, ComponentSource.HARDCODED);\n }\n var selectorResult = componentSelectorFunc ? componentSelectorFunc(params) : null;\n var componentNameToUse;\n if (selectorResult && selectorResult.component) {\n componentNameToUse = selectorResult.component;\n }\n else if (hardcodedNameComponent) {\n componentNameToUse = hardcodedNameComponent;\n }\n else {\n componentNameToUse = defaultComponentName;\n }\n if (!componentNameToUse) {\n return null;\n }\n var registeredCompClassDef = this.lookupFromRegisteredComponents(propertyName, componentNameToUse);\n return {\n componentFromFramework: registeredCompClassDef.componentFromFramework,\n component: registeredCompClassDef.component,\n source: registeredCompClassDef.source,\n paramsFromSelector: selectorResult ? selectorResult.params : null\n };\n };\n UserComponentFactory.prototype.lookupFromRegisteredComponents = function (propertyName, componentNameOpt) {\n var componentName = componentNameOpt != null ? componentNameOpt : propertyName;\n var registeredComponent = this.userComponentRegistry.retrieve(componentName);\n if (registeredComponent == null) {\n return null;\n }\n //If it is a FW it has to be registered as a component\n if (registeredComponent.componentFromFramework) {\n return {\n component: registeredComponent.component,\n componentFromFramework: true,\n source: ComponentSource.REGISTERED_BY_NAME,\n paramsFromSelector: null\n };\n }\n //If it is JS it may be a function or a component\n if (this.agComponentUtils.doesImplementIComponent(registeredComponent.component)) {\n return {\n component: registeredComponent.component,\n componentFromFramework: false,\n source: (registeredComponent.source == userComponentRegistry_1.RegisteredComponentSource.REGISTERED) ? ComponentSource.REGISTERED_BY_NAME : ComponentSource.DEFAULT,\n paramsFromSelector: null\n };\n }\n // This is a function\n return this.agComponentUtils.adaptFunction(propertyName, registeredComponent.component, registeredComponent.componentFromFramework, (registeredComponent.source == userComponentRegistry_1.RegisteredComponentSource.REGISTERED) ? ComponentSource.REGISTERED_BY_NAME : ComponentSource.DEFAULT);\n };\n /**\n * Useful to check what would be the resultant params for a given object\n * @param definitionObject: This is the context for which this component needs to be created, it can be gridOptions\n * (global) or columnDef mostly.\n * @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n * 'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n * @param paramsFromGrid: Params to be passed to the component and passed by ag-Grid. This will get merged with any params\n * specified by the user in the configuration\n * @returns {any} It merges the user agGridParams with the actual params specified by the user.\n */\n UserComponentFactory.prototype.createFinalParams = function (definitionObject, propertyName, paramsFromGrid, paramsFromSelector) {\n if (paramsFromSelector === void 0) { paramsFromSelector = null; }\n var res = {};\n utils_1._.mergeDeep(res, paramsFromGrid);\n var userParams = definitionObject ? definitionObject[propertyName + \"Params\"] : null;\n if (userParams != null) {\n if (typeof userParams === 'function') {\n utils_1._.mergeDeep(res, userParams(paramsFromGrid));\n }\n else if (typeof userParams === 'object') {\n utils_1._.mergeDeep(res, userParams);\n }\n }\n utils_1._.mergeDeep(res, paramsFromSelector);\n return res;\n };\n UserComponentFactory.prototype.createComponentInstance = function (holder, propertyName, paramsForSelector, defaultComponentName, optional) {\n var componentToUse = this.lookupComponentClassDef(holder, propertyName, paramsForSelector, defaultComponentName);\n var missing = !componentToUse || !componentToUse.component;\n if (missing) {\n if (!optional) {\n console.error(\"Error creating component \" + propertyName + \"=>\" + defaultComponentName);\n }\n return null;\n }\n var componentInstance;\n if (componentToUse.componentFromFramework) {\n // Using framework component\n var FrameworkComponentRaw = componentToUse.component;\n var thisComponentConfig = this.componentMetadataProvider.retrieve(propertyName);\n componentInstance = this.frameworkComponentWrapper.wrap(FrameworkComponentRaw, thisComponentConfig.mandatoryMethodList, thisComponentConfig.optionalMethodList, defaultComponentName);\n }\n else {\n // Using plain JavaScript component\n componentInstance = new componentToUse.component();\n }\n return { componentInstance: componentInstance, paramsFromSelector: componentToUse.paramsFromSelector };\n };\n UserComponentFactory.prototype.initComponent = function (component, finalParams) {\n this.context.wireBean(component);\n if (component.init == null) {\n return;\n }\n else {\n return component.init(finalParams);\n }\n };\n __decorate([\n context_1.Autowired(\"gridOptions\"),\n __metadata(\"design:type\", Object)\n ], UserComponentFactory.prototype, \"gridOptions\", void 0);\n __decorate([\n context_1.Autowired(\"gridOptionsWrapper\"),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], UserComponentFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired(\"context\"),\n __metadata(\"design:type\", context_1.Context)\n ], UserComponentFactory.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired(\"agComponentUtils\"),\n __metadata(\"design:type\", agComponentUtils_1.AgComponentUtils)\n ], UserComponentFactory.prototype, \"agComponentUtils\", void 0);\n __decorate([\n context_1.Autowired(\"componentMetadataProvider\"),\n __metadata(\"design:type\", componentMetadataProvider_1.ComponentMetadataProvider)\n ], UserComponentFactory.prototype, \"componentMetadataProvider\", void 0);\n __decorate([\n context_1.Autowired(\"userComponentRegistry\"),\n __metadata(\"design:type\", userComponentRegistry_1.UserComponentRegistry)\n ], UserComponentFactory.prototype, \"userComponentRegistry\", void 0);\n __decorate([\n context_1.Optional(\"frameworkComponentWrapper\"),\n __metadata(\"design:type\", Object)\n ], UserComponentFactory.prototype, \"frameworkComponentWrapper\", void 0);\n UserComponentFactory = __decorate([\n context_1.Bean('userComponentFactory')\n ], UserComponentFactory);\n return UserComponentFactory;\n}());\nexports.UserComponentFactory = UserComponentFactory;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar columnGroup_1 = require(\"./columnGroup\");\nvar column_1 = require(\"./column\");\nvar eventService_1 = require(\"../eventService\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar OriginalColumnGroup = /** @class */ (function () {\n function OriginalColumnGroup(colGroupDef, groupId, padding, level) {\n this.localEventService = new eventService_1.EventService();\n this.expandable = false;\n this.colGroupDef = colGroupDef;\n this.groupId = groupId;\n this.expanded = colGroupDef && !!colGroupDef.openByDefault;\n this.padding = padding;\n this.level = level;\n }\n OriginalColumnGroup.prototype.setOriginalParent = function (originalParent) {\n this.originalParent = this.originalParent;\n };\n OriginalColumnGroup.prototype.getOriginalParent = function () {\n return this.originalParent;\n };\n OriginalColumnGroup.prototype.getLevel = function () {\n return this.level;\n };\n OriginalColumnGroup.prototype.isVisible = function () {\n // return true if at least one child is visible\n if (this.children) {\n return this.children.some(function (child) { return child.isVisible(); });\n }\n return false;\n };\n OriginalColumnGroup.prototype.isPadding = function () {\n return this.padding;\n };\n OriginalColumnGroup.prototype.setExpanded = function (expanded) {\n this.expanded = expanded === undefined ? false : expanded;\n var event = {\n type: OriginalColumnGroup.EVENT_EXPANDED_CHANGED\n };\n this.localEventService.dispatchEvent(event);\n };\n OriginalColumnGroup.prototype.isExpandable = function () {\n return this.expandable;\n };\n OriginalColumnGroup.prototype.isExpanded = function () {\n return this.expanded;\n };\n OriginalColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n OriginalColumnGroup.prototype.getId = function () {\n return this.getGroupId();\n };\n OriginalColumnGroup.prototype.setChildren = function (children) {\n this.children = children;\n };\n OriginalColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n OriginalColumnGroup.prototype.getColGroupDef = function () {\n return this.colGroupDef;\n };\n OriginalColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n OriginalColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n if (!this.children) {\n return;\n }\n this.children.forEach(function (child) {\n if (child instanceof column_1.Column) {\n leafColumns.push(child);\n }\n else if (child instanceof OriginalColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n OriginalColumnGroup.prototype.getColumnGroupShow = function () {\n if (!this.padding) {\n return this.colGroupDef.columnGroupShow;\n }\n else {\n // if this is padding we have exactly only child. we then\n // take the value from the child and push it up, making\n // this group 'invisible'.\n return this.children[0].getColumnGroupShow();\n }\n };\n // need to check that this group has at least one col showing when both expanded and contracted.\n // if not, then we don't allow expanding and contracting on this group\n OriginalColumnGroup.prototype.setupExpandable = function () {\n var _this = this;\n this.setExpandable();\n // note - we should be removing this event listener\n this.getLeafColumns().forEach(function (col) { return col.addEventListener(column_1.Column.EVENT_VISIBLE_CHANGED, _this.onColumnVisibilityChanged.bind(_this)); });\n };\n OriginalColumnGroup.prototype.setExpandable = function () {\n if (this.isPadding()) {\n return;\n }\n // want to make sure the group doesn't disappear when it's open\n var atLeastOneShowingWhenOpen = false;\n // want to make sure the group doesn't disappear when it's closed\n var atLeastOneShowingWhenClosed = false;\n // want to make sure the group has something to show / hide\n var atLeastOneChangeable = false;\n var children = this.findChildren();\n for (var i = 0, j = children.length; i < j; i++) {\n var abstractColumn = children[i];\n if (!abstractColumn.isVisible()) {\n continue;\n }\n // if the abstractColumn is a grid generated group, there will be no colDef\n var headerGroupShow = abstractColumn.getColumnGroupShow();\n if (headerGroupShow === columnGroup_1.ColumnGroup.HEADER_GROUP_SHOW_OPEN) {\n atLeastOneShowingWhenOpen = true;\n atLeastOneChangeable = true;\n }\n else if (headerGroupShow === columnGroup_1.ColumnGroup.HEADER_GROUP_SHOW_CLOSED) {\n atLeastOneShowingWhenClosed = true;\n atLeastOneChangeable = true;\n }\n else {\n atLeastOneShowingWhenOpen = true;\n atLeastOneShowingWhenClosed = true;\n }\n }\n var expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;\n if (this.expandable !== expandable) {\n this.expandable = expandable;\n var event_1 = {\n type: OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED\n };\n this.localEventService.dispatchEvent(event_1);\n }\n };\n OriginalColumnGroup.prototype.findChildren = function () {\n var children = this.children;\n var firstChild = children[0];\n if (firstChild && (!firstChild.isPadding || !firstChild.isPadding())) {\n return children;\n }\n while (children.length === 1 && children[0] instanceof OriginalColumnGroup) {\n children = children[0].children;\n }\n return children;\n };\n OriginalColumnGroup.prototype.onColumnVisibilityChanged = function () {\n this.setExpandable();\n };\n OriginalColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n OriginalColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n OriginalColumnGroup.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED = 'expandableChanged';\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], OriginalColumnGroup.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], OriginalColumnGroup.prototype, \"gridApi\", void 0);\n return OriginalColumnGroup;\n}());\nexports.OriginalColumnGroup = OriginalColumnGroup;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar beanStub_1 = require(\"../../context/beanStub\");\nvar rowNodeBlock_1 = require(\"./rowNodeBlock\");\nvar utils_1 = require(\"../../utils\");\nvar RowNodeCache = /** @class */ (function (_super) {\n __extends(RowNodeCache, _super);\n function RowNodeCache(cacheParams) {\n var _this = _super.call(this) || this;\n _this.maxRowFound = false;\n _this.blocks = {};\n _this.blockCount = 0;\n _this.virtualRowCount = cacheParams.initialRowCount;\n _this.cacheParams = cacheParams;\n return _this;\n }\n RowNodeCache.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n this.forEachBlockInOrder(function (block) { return _this.destroyBlock(block); });\n };\n RowNodeCache.prototype.init = function () {\n var _this = this;\n this.active = true;\n this.addDestroyFunc(function () { return _this.active = false; });\n };\n RowNodeCache.prototype.isActive = function () {\n return this.active;\n };\n RowNodeCache.prototype.getVirtualRowCount = function () {\n return this.virtualRowCount;\n };\n RowNodeCache.prototype.hack_setVirtualRowCount = function (virtualRowCount) {\n this.virtualRowCount = virtualRowCount;\n };\n RowNodeCache.prototype.isMaxRowFound = function () {\n return this.maxRowFound;\n };\n // listener on EVENT_LOAD_COMPLETE\n RowNodeCache.prototype.onPageLoaded = function (event) {\n this.cacheParams.rowNodeBlockLoader.loadComplete();\n this.checkBlockToLoad();\n // if we are not active, then we ignore all events, otherwise we could end up getting the\n // grid to refresh even though we are no longer the active cache\n if (!this.isActive()) {\n return;\n }\n this.logger.log(\"onPageLoaded: page = \" + event.page.getBlockNumber() + \", lastRow = \" + event.lastRow);\n if (event.success) {\n this.checkVirtualRowCount(event.page, event.lastRow);\n }\n };\n RowNodeCache.prototype.purgeBlocksIfNeeded = function (blockToExclude) {\n var _this = this;\n // put all candidate blocks into a list for sorting\n var blocksForPurging = [];\n this.forEachBlockInOrder(function (block) {\n // we exclude checking for the page just created, as this has yet to be accessed and hence\n // the lastAccessed stamp will not be updated for the first time yet\n if (block === blockToExclude) {\n return;\n }\n blocksForPurging.push(block);\n });\n // note: need to verify that this sorts items in the right order\n blocksForPurging.sort(function (a, b) { return b.getLastAccessed() - a.getLastAccessed(); });\n // we remove (maxBlocksInCache - 1) as we already excluded the 'just created' page.\n // in other words, after the splice operation below, we have taken out the blocks\n // we want to keep, which means we are left with blocks that we can potentially purge\n var maxBlocksProvided = this.cacheParams.maxBlocksInCache > 0;\n var blocksToKeep = maxBlocksProvided ? this.cacheParams.maxBlocksInCache - 1 : null;\n var emptyBlocksToKeep = RowNodeCache.MAX_EMPTY_BLOCKS_TO_KEEP - 1;\n blocksForPurging.forEach(function (block, index) {\n var purgeBecauseBlockEmpty = block.getState() === rowNodeBlock_1.RowNodeBlock.STATE_DIRTY && index >= emptyBlocksToKeep;\n var purgeBecauseCacheFull = maxBlocksProvided ? index >= blocksToKeep : false;\n if (purgeBecauseBlockEmpty || purgeBecauseCacheFull) {\n // we never purge blocks if they are open, as purging them would mess up with\n // our indexes, it would be very messy to restore the purged block to it's\n // previous state if it had open children (and what if open children of open\n // children, jeeeesus, just thinking about it freaks me out) so best is have a\n // rule, if block is open, we never purge.\n if (block.isAnyNodeOpen(_this.virtualRowCount)) {\n return;\n }\n // at this point, block is not needed, and no open nodes, so burn baby burn\n _this.removeBlockFromCache(block);\n }\n });\n };\n RowNodeCache.prototype.postCreateBlock = function (newBlock) {\n newBlock.addEventListener(rowNodeBlock_1.RowNodeBlock.EVENT_LOAD_COMPLETE, this.onPageLoaded.bind(this));\n this.setBlock(newBlock.getBlockNumber(), newBlock);\n this.purgeBlocksIfNeeded(newBlock);\n this.checkBlockToLoad();\n };\n RowNodeCache.prototype.removeBlockFromCache = function (blockToRemove) {\n if (!blockToRemove) {\n return;\n }\n this.destroyBlock(blockToRemove);\n // we do not want to remove the 'loaded' event listener, as the\n // concurrent loads count needs to be updated when the load is complete\n // if the purged page is in loading state\n };\n // gets called after: 1) block loaded 2) block created 3) cache refresh\n RowNodeCache.prototype.checkBlockToLoad = function () {\n this.cacheParams.rowNodeBlockLoader.checkBlockToLoad();\n };\n RowNodeCache.prototype.checkVirtualRowCount = function (block, lastRow) {\n // if client provided a last row, we always use it, as it could change between server calls\n // if user deleted data and then called refresh on the grid.\n if (typeof lastRow === 'number' && lastRow >= 0) {\n this.virtualRowCount = lastRow;\n this.maxRowFound = true;\n this.onCacheUpdated();\n }\n else if (!this.maxRowFound) {\n // otherwise, see if we need to add some virtual rows\n var lastRowIndex = (block.getBlockNumber() + 1) * this.cacheParams.blockSize;\n var lastRowIndexPlusOverflow = lastRowIndex + this.cacheParams.overflowSize;\n if (this.virtualRowCount < lastRowIndexPlusOverflow) {\n this.virtualRowCount = lastRowIndexPlusOverflow;\n this.onCacheUpdated();\n }\n else if (this.cacheParams.dynamicRowHeight) {\n // the only other time is if dynamic row height, as loading rows\n // will change the height of the block, given the height of the rows\n // is only known after the row is loaded.\n this.onCacheUpdated();\n }\n }\n };\n RowNodeCache.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {\n this.virtualRowCount = rowCount;\n // if undefined is passed, we do not set this value, if one of {true,false}\n // is passed, we do set the value.\n if (utils_1._.exists(maxRowFound)) {\n this.maxRowFound = maxRowFound;\n }\n // if we are still searching, then the row count must not end at the end\n // of a particular page, otherwise the searching will not pop into the\n // next page\n if (!this.maxRowFound) {\n if (this.virtualRowCount % this.cacheParams.blockSize === 0) {\n this.virtualRowCount++;\n }\n }\n this.onCacheUpdated();\n };\n RowNodeCache.prototype.forEachNodeDeep = function (callback, sequence) {\n var _this = this;\n this.forEachBlockInOrder(function (block) {\n block.forEachNodeDeep(callback, sequence, _this.virtualRowCount);\n });\n };\n RowNodeCache.prototype.forEachBlockInOrder = function (callback) {\n var ids = this.getBlockIdsSorted();\n this.forEachBlockId(ids, callback);\n };\n RowNodeCache.prototype.forEachBlockInReverseOrder = function (callback) {\n var ids = this.getBlockIdsSorted().reverse();\n this.forEachBlockId(ids, callback);\n };\n RowNodeCache.prototype.forEachBlockId = function (ids, callback) {\n var _this = this;\n ids.forEach(function (id) {\n var block = _this.blocks[id];\n callback(block, id);\n });\n };\n RowNodeCache.prototype.getBlockIdsSorted = function () {\n // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n var numberComparator = function (a, b) { return a - b; }; // default comparator for array is string comparison\n var blockIds = Object.keys(this.blocks).map(function (idStr) { return parseInt(idStr, 10); }).sort(numberComparator);\n return blockIds;\n };\n RowNodeCache.prototype.getBlock = function (blockId) {\n return this.blocks[blockId];\n };\n RowNodeCache.prototype.setBlock = function (id, block) {\n this.blocks[id] = block;\n this.blockCount++;\n this.cacheParams.rowNodeBlockLoader.addBlock(block);\n };\n RowNodeCache.prototype.destroyBlock = function (block) {\n delete this.blocks[block.getBlockNumber()];\n block.destroy();\n this.blockCount--;\n this.cacheParams.rowNodeBlockLoader.removeBlock(block);\n };\n // gets called 1) row count changed 2) cache purged 3) items inserted\n RowNodeCache.prototype.onCacheUpdated = function () {\n if (this.isActive()) {\n // this results in both row models (infinite and server side) firing ModelUpdated,\n // however server side row model also updates the row indexes first\n var event_1 = {\n type: RowNodeCache.EVENT_CACHE_UPDATED\n };\n this.dispatchEvent(event_1);\n }\n };\n RowNodeCache.prototype.purgeCache = function () {\n var _this = this;\n this.forEachBlockInOrder(function (block) { return _this.removeBlockFromCache(block); });\n // re-initialise cache - this ensures a cache with no rows can reload when purged!\n this.virtualRowCount = this.cacheParams.initialRowCount;\n this.maxRowFound = false;\n this.onCacheUpdated();\n };\n RowNodeCache.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n var _this = this;\n var result = [];\n var lastBlockId = -1;\n var inActiveRange = false;\n var numberSequence = new utils_1.NumberSequence();\n // if only one node passed, we start the selection at the top\n if (utils_1._.missing(firstInRange)) {\n inActiveRange = true;\n }\n var foundGapInSelection = false;\n this.forEachBlockInOrder(function (block, id) {\n if (foundGapInSelection) {\n return;\n }\n if (inActiveRange && (lastBlockId + 1 !== id)) {\n foundGapInSelection = true;\n return;\n }\n lastBlockId = id;\n block.forEachNodeShallow(function (rowNode) {\n var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n if (inActiveRange || hitFirstOrLast) {\n result.push(rowNode);\n }\n if (hitFirstOrLast) {\n inActiveRange = !inActiveRange;\n }\n }, numberSequence, _this.virtualRowCount);\n });\n // inActiveRange will be still true if we never hit the second rowNode\n var invalidRange = foundGapInSelection || inActiveRange;\n return invalidRange ? [] : result;\n };\n RowNodeCache.EVENT_CACHE_UPDATED = 'cacheUpdated';\n // this property says how many empty blocks should be in a cache, eg if scrolls down fast and creates 10\n // blocks all for loading, the grid will only load the last 2 - it will assume the blocks the user quickly\n // scrolled over are not needed to be loaded.\n RowNodeCache.MAX_EMPTY_BLOCKS_TO_KEEP = 2;\n return RowNodeCache;\n}(beanStub_1.BeanStub));\nexports.RowNodeCache = RowNodeCache;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar component_1 = require(\"../../widgets/component\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar utils_1 = require(\"../../utils\");\nvar LoadingCellRenderer = /** @class */ (function (_super) {\n __extends(LoadingCellRenderer, _super);\n function LoadingCellRenderer() {\n return _super.call(this, LoadingCellRenderer.TEMPLATE) || this;\n }\n LoadingCellRenderer.prototype.init = function (params) {\n var eLoadingIcon = utils_1._.createIconNoSpan('groupLoading', this.gridOptionsWrapper, null);\n this.eLoadingIcon.appendChild(eLoadingIcon);\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eLoadingText.innerText = localeTextFunc('loadingOoo', 'Loading');\n };\n LoadingCellRenderer.prototype.refresh = function (params) {\n return false;\n };\n LoadingCellRenderer.TEMPLATE = \"
\\n \\n \\n
\";\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], LoadingCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eLoadingIcon'),\n __metadata(\"design:type\", HTMLElement)\n ], LoadingCellRenderer.prototype, \"eLoadingIcon\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eLoadingText'),\n __metadata(\"design:type\", HTMLElement)\n ], LoadingCellRenderer.prototype, \"eLoadingText\", void 0);\n return LoadingCellRenderer;\n}(component_1.Component));\nexports.LoadingCellRenderer = LoadingCellRenderer;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"./component\");\nvar componentAnnotations_1 = require(\"./componentAnnotations\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar utils_1 = require(\"../utils\");\nvar AgCheckbox = /** @class */ (function (_super) {\n __extends(AgCheckbox, _super);\n function AgCheckbox() {\n var _this = _super.call(this) || this;\n _this.selected = false;\n _this.readOnly = false;\n _this.passive = false;\n return _this;\n }\n AgCheckbox.prototype.preConstruct = function () {\n this.setTemplate(AgCheckbox.TEMPLATE);\n };\n AgCheckbox.prototype.postConstruct = function () {\n this.loadIcons();\n this.updateIcons();\n };\n AgCheckbox.prototype.setLabel = function (label) {\n this.eLabel.innerText = label;\n };\n AgCheckbox.prototype.loadIcons = function () {\n utils_1._.clearElement(this.eChecked);\n utils_1._.clearElement(this.eUnchecked);\n utils_1._.clearElement(this.eIndeterminate);\n if (this.readOnly) {\n this.eChecked.appendChild(utils_1._.createIconNoSpan('checkboxCheckedReadOnly', this.gridOptionsWrapper, null));\n this.eUnchecked.appendChild(utils_1._.createIconNoSpan('checkboxUncheckedReadOnly', this.gridOptionsWrapper, null));\n this.eIndeterminate.appendChild(utils_1._.createIconNoSpan('checkboxIndeterminateReadOnly', this.gridOptionsWrapper, null));\n }\n else {\n this.eChecked.appendChild(utils_1._.createIconNoSpan('checkboxChecked', this.gridOptionsWrapper, null));\n this.eUnchecked.appendChild(utils_1._.createIconNoSpan('checkboxUnchecked', this.gridOptionsWrapper, null));\n this.eIndeterminate.appendChild(utils_1._.createIconNoSpan('checkboxIndeterminate', this.gridOptionsWrapper, null));\n }\n };\n AgCheckbox.prototype.onClick = function (event) {\n // if we don't set the path, then won't work in Edge, as once the is removed from the dom,\n // it's not possible to calculate the path by following the parent's chain. in other browser (eg\n // chrome) there is event.path for this purpose, but missing in Edge.\n utils_1._.addAgGridEventPath(event);\n if (!this.readOnly) {\n this.toggle();\n }\n };\n AgCheckbox.prototype.getNextValue = function () {\n if (this.selected === undefined) {\n return true;\n }\n else {\n return !this.selected;\n }\n };\n AgCheckbox.prototype.setPassive = function (passive) {\n this.passive = passive;\n };\n AgCheckbox.prototype.setReadOnly = function (readOnly) {\n this.readOnly = readOnly;\n this.loadIcons();\n };\n AgCheckbox.prototype.isReadOnly = function () {\n return this.readOnly;\n };\n AgCheckbox.prototype.isSelected = function () {\n return this.selected;\n };\n AgCheckbox.prototype.toggle = function () {\n var nextValue = this.getNextValue();\n if (this.passive) {\n var event_1 = {\n type: AgCheckbox.EVENT_CHANGED,\n selected: nextValue\n };\n this.dispatchEvent(event_1);\n }\n else {\n this.setSelected(nextValue);\n }\n };\n AgCheckbox.prototype.setSelected = function (selected) {\n if (this.selected === selected) {\n return;\n }\n if (selected === true) {\n this.selected = true;\n }\n else if (selected === false) {\n this.selected = false;\n }\n else {\n this.selected = undefined;\n }\n this.updateIcons();\n var event = {\n type: AgCheckbox.EVENT_CHANGED,\n selected: this.selected\n };\n this.dispatchEvent(event);\n };\n AgCheckbox.prototype.updateIcons = function () {\n utils_1._.setVisible(this.eChecked, this.selected === true);\n utils_1._.setVisible(this.eUnchecked, this.selected === false);\n utils_1._.setVisible(this.eIndeterminate, this.selected === undefined);\n };\n AgCheckbox.EVENT_CHANGED = 'change';\n AgCheckbox.TEMPLATE = '' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], AgCheckbox.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('.ag-checkbox-checked'),\n __metadata(\"design:type\", HTMLElement)\n ], AgCheckbox.prototype, \"eChecked\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('.ag-checkbox-unchecked'),\n __metadata(\"design:type\", HTMLElement)\n ], AgCheckbox.prototype, \"eUnchecked\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('.ag-checkbox-indeterminate'),\n __metadata(\"design:type\", HTMLElement)\n ], AgCheckbox.prototype, \"eIndeterminate\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('.ag-checkbox-label'),\n __metadata(\"design:type\", HTMLElement)\n ], AgCheckbox.prototype, \"eLabel\", void 0);\n __decorate([\n context_1.PreConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], AgCheckbox.prototype, \"preConstruct\", null);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], AgCheckbox.prototype, \"postConstruct\", null);\n __decorate([\n componentAnnotations_1.Listener('click'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [MouseEvent]),\n __metadata(\"design:returntype\", void 0)\n ], AgCheckbox.prototype, \"onClick\", null);\n return AgCheckbox;\n}(component_1.Component));\nexports.AgCheckbox = AgCheckbox;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"./component\");\nvar componentAnnotations_1 = require(\"./componentAnnotations\");\nvar context_1 = require(\"../context/context\");\nvar popupService_1 = require(\"./popupService\");\nvar PopupWindow = /** @class */ (function (_super) {\n __extends(PopupWindow, _super);\n function PopupWindow() {\n return _super.call(this, PopupWindow.TEMPLATE) || this;\n }\n PopupWindow.prototype.postConstruct = function () {\n // need to show filter before positioning, as only after filter\n // is visible can we find out what the width of it is\n this.closePopup = this.popupService.addPopup(false, this.getGui(), false, this.destroy.bind(this));\n this.addDestroyableEventListener(this.eClose, 'click', this.onBtClose.bind(this));\n };\n PopupWindow.prototype.setBody = function (eBody) {\n this.eContentWrapper.appendChild(eBody);\n };\n PopupWindow.prototype.setTitle = function (title) {\n this.eTitle.innerText = title;\n };\n // called when user hits the 'x' in the top right\n PopupWindow.prototype.onBtClose = function () {\n this.closePopup();\n };\n PopupWindow.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.dispatchEvent({ type: PopupWindow.DESTROY_EVENT });\n };\n // NOTE - in time, the styles here will need to go to CSS files\n PopupWindow.TEMPLATE = \"
\\n
\\n X\\n New Chart\\n
\\n
\\n
\";\n PopupWindow.DESTROY_EVENT = 'destroy';\n __decorate([\n context_1.Autowired('popupService'),\n __metadata(\"design:type\", popupService_1.PopupService)\n ], PopupWindow.prototype, \"popupService\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eContentWrapper'),\n __metadata(\"design:type\", HTMLElement)\n ], PopupWindow.prototype, \"eContentWrapper\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eTitle'),\n __metadata(\"design:type\", HTMLElement)\n ], PopupWindow.prototype, \"eTitle\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eClose'),\n __metadata(\"design:type\", HTMLElement)\n ], PopupWindow.prototype, \"eClose\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], PopupWindow.prototype, \"postConstruct\", null);\n return PopupWindow;\n}(component_1.Component));\nexports.PopupWindow = PopupWindow;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"./component\");\nvar PopupComponent = /** @class */ (function (_super) {\n __extends(PopupComponent, _super);\n function PopupComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupComponent.prototype.isPopup = function () {\n return true;\n };\n return PopupComponent;\n}(component_1.Component));\nexports.PopupComponent = PopupComponent;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"./constants\");\nvar FUNCTION_STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\nvar FUNCTION_ARGUMENT_NAMES = /([^\\s,]+)/g;\nvar AG_GRID_STOP_PROPAGATION = '__ag_Grid_Stop_Propagation';\n// util class, only used when debugging, for printing time to console\nvar Timer = /** @class */ (function () {\n function Timer() {\n this.timestamp = new Date().getTime();\n }\n Timer.prototype.print = function (msg) {\n var duration = (new Date().getTime()) - this.timestamp;\n console.info(msg + \" = \" + duration);\n this.timestamp = new Date().getTime();\n };\n return Timer;\n}());\nexports.Timer = Timer;\n/** HTML Escapes. */\nvar HTML_ESCAPES = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nvar reUnescapedHtml = /[&<>\"']/g;\nvar Utils = /** @class */ (function () {\n function Utils() {\n }\n // https://ag-grid.com/forum/showthread.php?tid=4362\n // when in IE or Edge, when you are editing a cell, then click on another cell,\n // the other cell doesn't keep focus, so navigation keys, type to start edit etc\n // don't work. appears that when you update the dom in IE it looses focus\n Utils.doIeFocusHack = function (el) {\n if (exports._.isBrowserIE() || exports._.isBrowserEdge()) {\n if (exports._.missing(document.activeElement) || document.activeElement === document.body) {\n // console.log('missing focus');\n el.focus();\n }\n }\n };\n // if the key was passed before, then doesn't execute the func\n Utils.doOnce = function (func, key) {\n if (this.doOnceFlags[key]) {\n return;\n }\n func();\n this.doOnceFlags[key] = true;\n };\n // got from https://stackoverflow.com/questions/3944122/detect-left-mouse-button-press\n Utils.isLeftClick = function (mouseEvent) {\n if (\"buttons\" in mouseEvent) {\n return mouseEvent.buttons == 1;\n }\n var button = mouseEvent.which || mouseEvent.button;\n return button == 1;\n };\n // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n Utils.areEventsNear = function (e1, e2, pixelCount) {\n // by default, we wait 4 pixels before starting the drag\n if (pixelCount === 0) {\n return false;\n }\n var diffX = Math.abs(e1.clientX - e2.clientX);\n var diffY = Math.abs(e1.clientY - e2.clientY);\n return Math.max(diffX, diffY) <= pixelCount;\n };\n Utils.jsonEquals = function (val1, val2) {\n var val1Json = val1 ? JSON.stringify(val1) : null;\n var val2Json = val2 ? JSON.stringify(val2) : null;\n var res = val1Json === val2Json;\n return res;\n };\n Utils.shallowCompare = function (arr1, arr2) {\n // if both are missing, then they are the same\n if (this.missing(arr1) && this.missing(arr2)) {\n return true;\n }\n // if one is present, but other is missing, then then are different\n if (this.missing(arr1) || this.missing(arr2)) {\n return false;\n }\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (var i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n };\n Utils.getNameOfClass = function (TheClass) {\n var funcNameRegex = /function (.{1,})\\(/;\n var funcAsString = TheClass.toString();\n var results = (funcNameRegex).exec(funcAsString);\n return (results && results.length > 1) ? results[1] : \"\";\n };\n Utils.values = function (object) {\n var result = [];\n this.iterateObject(object, function (key, value) {\n result.push(value);\n });\n return result;\n };\n Utils.getValueUsingField = function (data, field, fieldContainsDots) {\n if (!field || !data) {\n return;\n }\n // if no '.', then it's not a deep value\n if (!fieldContainsDots) {\n return data[field];\n }\n else {\n // otherwise it is a deep value, so need to dig for it\n var fields = field.split('.');\n var currentObject = data;\n for (var i = 0; i < fields.length; i++) {\n currentObject = currentObject[fields[i]];\n if (this.missing(currentObject)) {\n return null;\n }\n }\n return currentObject;\n }\n };\n Utils.getAbsoluteHeight = function (el) {\n var styles = window.getComputedStyle(el);\n var margin = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n return Math.ceil(el.offsetHeight + margin);\n };\n Utils.getAbsoluteWidth = function (el) {\n var styles = window.getComputedStyle(el);\n var margin = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n return Math.ceil(el.offsetWidth + margin);\n };\n Utils.getScrollLeft = function (element, rtl) {\n var scrollLeft = element.scrollLeft;\n if (rtl) {\n // Absolute value - for FF that reports RTL scrolls in negative numbers\n scrollLeft = Math.abs(scrollLeft);\n // Get Chrome to return the same value as well\n if (this.isBrowserChrome()) {\n scrollLeft = element.scrollWidth - element.clientWidth - scrollLeft;\n }\n }\n return scrollLeft;\n };\n Utils.cleanNumber = function (value) {\n if (typeof value === 'string') {\n value = parseInt(value, 10);\n }\n if (typeof value === 'number') {\n value = Math.floor(value);\n }\n else {\n value = null;\n }\n return value;\n };\n Utils.setScrollLeft = function (element, value, rtl) {\n if (rtl) {\n // Chrome and Safari when doing RTL have the END position of the scroll as zero, not the start\n if (this.isBrowserSafari() || this.isBrowserChrome()) {\n value = element.scrollWidth - element.clientWidth - value;\n }\n // Firefox uses negative numbers when doing RTL scrolling\n if (this.isBrowserFirefox()) {\n value *= -1;\n }\n }\n element.scrollLeft = value;\n };\n Utils.iterateNamedNodeMap = function (map, callback) {\n if (!map) {\n return;\n }\n for (var i = 0; i < map.length; i++) {\n var attr = map[i];\n callback(attr.name, attr.value);\n }\n };\n Utils.iterateObject = function (object, callback) {\n if (!object || this.missing(object)) {\n return;\n }\n if (Array.isArray(object)) {\n object.forEach(function (value, index) {\n callback(index + '', value);\n });\n }\n else {\n var keys = Object.keys(object);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = object[key];\n callback(key, value);\n }\n }\n };\n Utils.cloneObject = function (object) {\n var copy = {};\n var keys = Object.keys(object);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = object[key];\n copy[key] = value;\n }\n return copy;\n };\n Utils.deepCloneObject = function (object) {\n return JSON.parse(JSON.stringify(object));\n };\n Utils.map = function (array, callback) {\n var result = [];\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n var mappedItem = callback(item, i);\n result.push(mappedItem);\n }\n return result;\n };\n Utils.mapObject = function (object, callback) {\n var result = [];\n Utils.iterateObject(object, function (key, value) {\n result.push(callback(value));\n });\n return result;\n };\n Utils.forEach = function (array, callback) {\n if (!array) {\n return;\n }\n for (var i = 0; i < array.length; i++) {\n var value = array[i];\n callback(value, i);\n }\n };\n Utils.filter = function (array, callback) {\n var result = [];\n array.forEach(function (item) {\n if (callback(item)) {\n result.push(item);\n }\n });\n return result;\n };\n Utils.getAllKeysInObjects = function (objects) {\n var allValues = {};\n objects.forEach(function (obj) {\n if (obj) {\n Object.keys(obj).forEach(function (key) { return allValues[key] = null; });\n }\n });\n return Object.keys(allValues);\n };\n Utils.mergeDeep = function (dest, source) {\n if (!this.exists(source)) {\n return;\n }\n this.iterateObject(source, function (key, newValue) {\n var oldValue = dest[key];\n if (oldValue === newValue) {\n return;\n }\n if (typeof oldValue === 'object' && typeof newValue === 'object') {\n Utils.mergeDeep(oldValue, newValue);\n }\n else {\n dest[key] = newValue;\n }\n });\n };\n Utils.assign = function (object) {\n var _this = this;\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n sources.forEach(function (source) {\n if (_this.exists(source)) {\n _this.iterateObject(source, function (key, value) {\n object[key] = value;\n });\n }\n });\n return object;\n };\n Utils.parseYyyyMmDdToDate = function (yyyyMmDd, separator) {\n try {\n if (!yyyyMmDd) {\n return null;\n }\n if (yyyyMmDd.indexOf(separator) === -1) {\n return null;\n }\n var fields = yyyyMmDd.split(separator);\n if (fields.length != 3) {\n return null;\n }\n return new Date(Number(fields[0]), Number(fields[1]) - 1, Number(fields[2]));\n }\n catch (e) {\n return null;\n }\n };\n Utils.serializeDateToYyyyMmDd = function (date, separator) {\n if (!date) {\n return null;\n }\n return date.getFullYear() + separator + Utils.pad(date.getMonth() + 1, 2) + separator + Utils.pad(date.getDate(), 2);\n };\n Utils.pad = function (num, totalStringSize) {\n var asString = num + \"\";\n while (asString.length < totalStringSize) {\n asString = \"0\" + asString;\n }\n return asString;\n };\n Utils.pushAll = function (target, source) {\n if (this.missing(source) || this.missing(target)) {\n return;\n }\n source.forEach(function (func) { return target.push(func); });\n };\n Utils.createArrayOfNumbers = function (first, last) {\n var result = [];\n for (var i = first; i <= last; i++) {\n result.push(i);\n }\n return result;\n };\n Utils.getFunctionParameters = function (func) {\n var fnStr = func.toString().replace(FUNCTION_STRIP_COMMENTS, '');\n var result = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(FUNCTION_ARGUMENT_NAMES);\n if (result === null) {\n return [];\n }\n else {\n return result;\n }\n };\n Utils.find = function (collection, predicate, value) {\n if (collection === null || collection === undefined) {\n return null;\n }\n if (!Array.isArray(collection)) {\n var objToArray = this.values(collection);\n return this.find(objToArray, predicate, value);\n }\n var collectionAsArray = collection;\n var firstMatchingItem = null;\n for (var i = 0; i < collectionAsArray.length; i++) {\n var item = collectionAsArray[i];\n if (typeof predicate === 'string') {\n if (item[predicate] === value) {\n firstMatchingItem = item;\n break;\n }\n }\n else {\n var callback = predicate;\n if (callback(item)) {\n firstMatchingItem = item;\n break;\n }\n }\n }\n return firstMatchingItem;\n };\n Utils.toStrings = function (array) {\n return this.map(array, function (item) {\n if (item === undefined || item === null || !item.toString) {\n return null;\n }\n else {\n return item.toString();\n }\n });\n };\n Utils.iterateArray = function (array, callback) {\n for (var index = 0; index < array.length; index++) {\n var value = array[index];\n callback(value, index);\n }\n };\n //Returns true if it is a DOM node\n //taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n Utils.isNode = function (o) {\n return (typeof Node === \"function\" ? o instanceof Node :\n o && typeof o === \"object\" && typeof o.nodeType === \"number\" && typeof o.nodeName === \"string\");\n };\n //Returns true if it is a DOM element\n //taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n Utils.isElement = function (o) {\n return (typeof HTMLElement === \"function\" ? o instanceof HTMLElement : //DOM2\n o && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName === \"string\");\n };\n Utils.isNodeOrElement = function (o) {\n return this.isNode(o) || this.isElement(o);\n };\n // makes a copy of a node list into a list\n Utils.copyNodeList = function (nodeList) {\n var childCount = nodeList ? nodeList.length : 0;\n var res = [];\n for (var i = 0; i < childCount; i++) {\n res.push(nodeList[i]);\n }\n return res;\n };\n Utils.isEventFromPrintableCharacter = function (event) {\n var pressedChar = String.fromCharCode(event.charCode);\n // newline is an exception, as it counts as a printable character, but we don't\n // want to start editing when it is pressed. without this check, if user is in chrome\n // and editing a cell, and they press ctrl+enter, the cell stops editing, and then\n // starts editing again with a blank value (two 'key down' events are fired). to\n // test this, remove the line below, edit a cell in chrome and hit ctrl+enter while editing.\n // https://ag-grid.atlassian.net/browse/AG-605\n if (this.isKeyPressed(event, constants_1.Constants.KEY_NEW_LINE)) {\n return false;\n }\n // no allowed printable chars have alt or ctrl key combinations\n if (event.altKey || event.ctrlKey) {\n return false;\n }\n if (exports._.exists(event.key)) {\n // modern browser will implement key, so we return if key is length 1, eg if it is 'a' for the\n // a key, or '2' for the '2' key. non-printable characters have names, eg 'Enter' or 'Backspace'.\n var printableCharacter = event.key.length === 1;\n // IE11 & Edge treat the numpad del key differently - with numlock on we get \"Del\" for key,\n // so this addition checks if its IE11/Edge and handles that specific case the same was as all other browsers\n var numpadDelWithNumlockOnForEdgeOrIe = Utils.isNumpadDelWithNumlockOnForEdgeOrIe(event);\n return printableCharacter || numpadDelWithNumlockOnForEdgeOrIe;\n }\n else {\n // otherwise, for older browsers, we test against a list of characters, which doesn't include\n // accents for non-English, but don't care much, as most users are on modern browsers\n return Utils.PRINTABLE_CHARACTERS.indexOf(pressedChar) >= 0;\n }\n };\n // allows user to tell the grid to skip specific keyboard events\n Utils.isUserSuppressingKeyboardEvent = function (gridOptionsWrapper, keyboardEvent, rowNode, column, editing) {\n var gridOptionsFunc = gridOptionsWrapper.getSuppressKeyboardEventFunc();\n var colDefFunc = column.getColDef().suppressKeyboardEvent;\n // if no callbacks provided by user, then do nothing\n if (!gridOptionsFunc && !colDefFunc) {\n return false;\n }\n var params = {\n event: keyboardEvent,\n editing: editing,\n column: column,\n api: gridOptionsWrapper.getApi(),\n node: rowNode,\n data: rowNode.data,\n colDef: column.getColDef(),\n context: gridOptionsWrapper.getContext(),\n columnApi: gridOptionsWrapper.getColumnApi()\n };\n // colDef get first preference on suppressing events\n if (colDefFunc) {\n var colDefFuncResult = colDefFunc(params);\n // if colDef func suppressed, then return now, no need to call gridOption func\n if (colDefFuncResult) {\n return true;\n }\n }\n if (gridOptionsFunc) {\n // if gridOption func, return the result\n return gridOptionsFunc(params);\n }\n else {\n // otherwise return false, don't suppress, as colDef didn't suppress and no func on gridOptions\n return false;\n }\n };\n Utils.getCellCompForEvent = function (gridOptionsWrapper, event) {\n var sourceElement = this.getTarget(event);\n while (sourceElement) {\n var renderedCell = gridOptionsWrapper.getDomData(sourceElement, 'cellComp');\n if (renderedCell) {\n return renderedCell;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n };\n //adds all type of change listeners to an element, intended to be a text field\n Utils.addChangeListener = function (element, listener) {\n element.addEventListener(\"changed\", listener);\n element.addEventListener(\"paste\", listener);\n element.addEventListener(\"input\", listener);\n // IE doesn't fire changed for special keys (eg delete, backspace), so need to\n // listen for this further ones\n element.addEventListener(\"keydown\", listener);\n element.addEventListener(\"keyup\", listener);\n };\n //if value is undefined, null or blank, returns null, otherwise returns the value\n Utils.makeNull = function (value) {\n var valueNoType = value;\n if (value === null || value === undefined || valueNoType === \"\") {\n return null;\n }\n else {\n return value;\n }\n };\n Utils.missing = function (value) {\n return !this.exists(value);\n };\n Utils.missingOrEmpty = function (value) {\n return !value || this.missing(value) || value.length === 0;\n };\n Utils.missingOrEmptyObject = function (value) {\n return this.missing(value) || Object.keys(value).length === 0;\n };\n Utils.exists = function (value, allowEmptyString) {\n if (allowEmptyString === void 0) { allowEmptyString = false; }\n return value != null && (value !== '' || allowEmptyString);\n };\n Utils.firstExistingValue = function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if (exports._.exists(value)) {\n return value;\n }\n }\n return null;\n };\n Utils.anyExists = function (values) {\n if (values) {\n for (var i = 0; i < values.length; i++) {\n if (this.exists(values[i])) {\n return true;\n }\n }\n }\n return false;\n };\n Utils.existsAndNotEmpty = function (value) {\n return value != null && this.exists(value) && value.length > 0;\n };\n Utils.clearElement = function (el) {\n while (el && el.firstChild) {\n el.removeChild(el.firstChild);\n }\n };\n Utils.removeElement = function (parent, cssSelector) {\n this.removeFromParent(parent.querySelector(cssSelector));\n };\n Utils.removeFromParent = function (node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n };\n Utils.isVisible = function (element) {\n return (element.offsetParent !== null);\n };\n /**\n * loads the template and returns it as an element. makes up for no simple way in\n * the dom api to load html directly, eg we cannot do this: document.createElement(template)\n */\n Utils.loadTemplate = function (template) {\n var tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = template;\n return tempDiv.firstChild;\n };\n Utils.appendHtml = function (eContainer, htmlTemplate) {\n if (eContainer.lastChild) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML\n // we put the items at the start, so new items appear underneath old items,\n // so when expanding/collapsing groups, the new rows don't go on top of the\n // rows below that are moving our of the way\n eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);\n }\n else {\n eContainer.innerHTML = htmlTemplate;\n }\n };\n Utils.addOrRemoveCssClass = function (element, className, addOrRemove) {\n if (addOrRemove) {\n this.addCssClass(element, className);\n }\n else {\n this.removeCssClass(element, className);\n }\n };\n Utils.callIfPresent = function (func) {\n if (func) {\n func();\n }\n };\n Utils.addCssClass = function (element, className) {\n var _this = this;\n if (!className || className.length === 0) {\n return;\n }\n if (className.indexOf(' ') >= 0) {\n className.split(' ').forEach(function (value) { return _this.addCssClass(element, value); });\n return;\n }\n if (element.classList) {\n if (!element.classList.contains(className)) {\n element.classList.add(className);\n }\n }\n else {\n if (element.className && element.className.length > 0) {\n var cssClasses = element.className.split(' ');\n if (cssClasses.indexOf(className) < 0) {\n cssClasses.push(className);\n element.setAttribute('class', cssClasses.join(' '));\n }\n }\n else {\n // do not use element.classList = className here, it will cause\n // a read-only assignment error on some browsers (IE/Edge).\n element.setAttribute('class', className);\n }\n }\n };\n Utils.containsClass = function (element, className) {\n if (element.classList) {\n // for modern browsers\n return element.classList.contains(className);\n }\n else if (element.className) {\n // for older browsers, check against the string of class names\n // if only one class, can check for exact match\n var onlyClass = element.className === className;\n // if many classes, check for class name, we have to pad with ' ' to stop other\n // class names that are a substring of this class\n var contains = element.className.indexOf(' ' + className + ' ') >= 0;\n // the padding above then breaks when it's the first or last class names\n var startsWithClass = element.className.indexOf(className + ' ') === 0;\n var endsWithClass = element.className.lastIndexOf(' ' + className) === (element.className.length - className.length - 1);\n return onlyClass || contains || startsWithClass || endsWithClass;\n }\n else {\n // if item is not a node\n return false;\n }\n };\n Utils.getElementAttribute = function (element, attributeName) {\n if (element.attributes) {\n if (element.attributes[attributeName]) {\n var attribute = element.attributes[attributeName];\n return attribute.value;\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n };\n Utils.offsetHeight = function (element) {\n return element && element.clientHeight ? element.clientHeight : 0;\n };\n Utils.offsetWidth = function (element) {\n return element && element.clientWidth ? element.clientWidth : 0;\n };\n Utils.sortNumberArray = function (numberArray) {\n numberArray.sort(function (a, b) { return a - b; });\n };\n Utils.removeCssClass = function (element, className) {\n if (element.classList) {\n if (element.classList.contains(className)) {\n element.classList.remove(className);\n }\n }\n else {\n if (element.className && element.className.length > 0) {\n var cssClasses = element.className.split(' ');\n if (cssClasses.indexOf(className) >= 0) {\n // remove all instances of the item, not just the first, in case it's in more than once\n while (cssClasses.indexOf(className) >= 0) {\n cssClasses.splice(cssClasses.indexOf(className), 1);\n }\n element.setAttribute('class', cssClasses.join(' '));\n }\n }\n }\n };\n Utils.removeRepeatsFromArray = function (array, object) {\n if (!array) {\n return;\n }\n for (var index = array.length - 2; index >= 0; index--) {\n var thisOneMatches = array[index] === object;\n var nextOneMatches = array[index + 1] === object;\n if (thisOneMatches && nextOneMatches) {\n array.splice(index + 1, 1);\n }\n }\n };\n Utils.removeFromArray = function (array, object) {\n if (array.indexOf(object) >= 0) {\n array.splice(array.indexOf(object), 1);\n }\n };\n Utils.removeAllFromArray = function (array, toRemove) {\n toRemove.forEach(function (item) {\n if (array.indexOf(item) >= 0) {\n array.splice(array.indexOf(item), 1);\n }\n });\n };\n Utils.insertIntoArray = function (array, object, toIndex) {\n array.splice(toIndex, 0, object);\n };\n Utils.insertArrayIntoArray = function (dest, src, toIndex) {\n if (this.missing(dest) || this.missing(src)) {\n return;\n }\n // put items in backwards, otherwise inserted items end up in reverse order\n for (var i = src.length - 1; i >= 0; i--) {\n var item = src[i];\n this.insertIntoArray(dest, item, toIndex);\n }\n };\n Utils.moveInArray = function (array, objectsToMove, toIndex) {\n var _this = this;\n // first take out it items from the array\n objectsToMove.forEach(function (obj) {\n _this.removeFromArray(array, obj);\n });\n // now add the objects, in same order as provided to us, that means we start at the end\n // as the objects will be pushed to the right as they are inserted\n objectsToMove.slice().reverse().forEach(function (obj) {\n _this.insertIntoArray(array, obj, toIndex);\n });\n };\n Utils.defaultComparator = function (valueA, valueB, accentedCompare) {\n if (accentedCompare === void 0) { accentedCompare = false; }\n var valueAMissing = valueA === null || valueA === undefined;\n var valueBMissing = valueB === null || valueB === undefined;\n // this is for aggregations sum and avg, where the result can be a number that is wrapped.\n // if we didn't do this, then the toString() value would be used, which would result in\n // the strings getting used instead of the numbers.\n if (valueA && valueA.toNumber) {\n valueA = valueA.toNumber();\n }\n if (valueB && valueB.toNumber) {\n valueB = valueB.toNumber();\n }\n if (valueAMissing && valueBMissing) {\n return 0;\n }\n if (valueAMissing) {\n return -1;\n }\n if (valueBMissing) {\n return 1;\n }\n if (typeof valueA === \"string\") {\n if (!accentedCompare) {\n return doQuickCompare(valueA, valueB);\n }\n else {\n try {\n // using local compare also allows chinese comparisons\n return valueA.localeCompare(valueB);\n }\n catch (e) {\n // if something wrong with localeCompare, eg not supported\n // by browser, then just continue with the quick one\n return doQuickCompare(valueA, valueB);\n }\n }\n }\n if (valueA < valueB) {\n return -1;\n }\n else if (valueA > valueB) {\n return 1;\n }\n else {\n return 0;\n }\n function doQuickCompare(a, b) {\n return (a > b ? 1 : (a < b ? -1 : 0));\n }\n };\n Utils.compareArrays = function (array1, array2) {\n if (this.missing(array1) && this.missing(array2)) {\n return true;\n }\n if ((this.missing(array1) || this.missing(array2)) ||\n (!array1 || !array2)) {\n return false;\n }\n if (array1.length !== array2.length) {\n return false;\n }\n for (var i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n };\n Utils.ensureDomOrder = function (eContainer, eChild, eChildBefore) {\n // if already in right order, do nothing\n if (eChildBefore && eChildBefore.nextSibling === eChild) {\n return;\n }\n if (eChildBefore) {\n if (eChildBefore.nextSibling) {\n // insert between the eRowBefore and the row after it\n eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n }\n else {\n // if nextSibling is missing, means other row is at end, so just append new row at the end\n eContainer.appendChild(eChild);\n }\n }\n else {\n // otherwise put at start\n if (eContainer.firstChild && eContainer.firstChild !== eChild) {\n // insert it at the first location\n eContainer.insertAdjacentElement('afterbegin', eChild);\n }\n }\n };\n Utils.insertWithDomOrder = function (eContainer, eChild, eChildBefore) {\n if (eChildBefore) {\n if (eChildBefore.nextSibling) {\n // insert between the eRowBefore and the row after it\n eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n }\n else {\n // if nextSibling is missing, means other row is at end, so just append new row at the end\n eContainer.appendChild(eChild);\n }\n }\n else {\n if (eContainer.firstChild) {\n // insert it at the first location\n eContainer.insertBefore(eChild, eContainer.firstChild);\n }\n else {\n // otherwise eContainer is empty, so just append it\n eContainer.appendChild(eChild);\n }\n }\n };\n Utils.insertTemplateWithDomOrder = function (eContainer, htmlTemplate, eChildBefore) {\n var res;\n if (eChildBefore) {\n // if previous element exists, just slot in after the previous element\n eChildBefore.insertAdjacentHTML('afterend', htmlTemplate);\n res = eChildBefore.nextSibling;\n }\n else {\n if (eContainer.firstChild) {\n // insert it at the first location\n eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);\n }\n else {\n // otherwise eContainer is empty, so just append it\n eContainer.innerHTML = htmlTemplate;\n }\n res = eContainer.firstChild;\n }\n return res;\n };\n Utils.every = function (items, callback) {\n if (!items || items.length === 0) {\n return true;\n }\n for (var i = 0; i < items.length; i++) {\n if (!callback(items[i])) {\n return false;\n }\n }\n return true;\n };\n Utils.toStringOrNull = function (value) {\n if (this.exists(value) && value.toString) {\n return value.toString();\n }\n else {\n return null;\n }\n };\n Utils.formatSize = function (size) {\n if (typeof size === \"number\") {\n return size + \"px\";\n }\n else {\n return size;\n }\n };\n Utils.formatNumberTwoDecimalPlacesAndCommas = function (value) {\n if (typeof value !== 'number') {\n return '';\n }\n // took this from: http://blog.tompawlak.org/number-currency-formatting-javascript\n return (Math.round(value * 100) / 100).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n };\n // the native method number.toLocaleString(undefined, {minimumFractionDigits: 0}) puts in decimal places in IE,\n // so we use this method instead\n Utils.formatNumberCommas = function (value) {\n if (typeof value !== 'number') {\n return '';\n }\n // took this from: http://blog.tompawlak.org/number-currency-formatting-javascript\n return value.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n };\n Utils.prependDC = function (parent, documentFragment) {\n if (this.exists(parent.firstChild)) {\n parent.insertBefore(documentFragment, parent.firstChild);\n }\n else {\n parent.appendChild(documentFragment);\n }\n };\n /**\n * If icon provided, use this (either a string, or a function callback).\n * if not, then use the default icon from the theme\n */\n Utils.createIcon = function (iconName, gridOptionsWrapper, column) {\n var iconContents = this.createIconNoSpan(iconName, gridOptionsWrapper, column);\n if (iconContents.className.indexOf('ag-icon') > -1) {\n return iconContents;\n }\n else {\n var eResult = document.createElement('span');\n eResult.appendChild(iconContents);\n return eResult;\n }\n };\n Utils.createIconNoSpan = function (iconName, gridOptionsWrapper, column) {\n var userProvidedIcon = null;\n // check col for icon first\n var icons = (column && column.getColDef().icons) ? column.getColDef().icons : null;\n if (icons) {\n userProvidedIcon = icons[iconName];\n }\n // it not in col, try grid options\n if (!userProvidedIcon && gridOptionsWrapper.getIcons()) {\n userProvidedIcon = gridOptionsWrapper.getIcons()[iconName];\n }\n // now if user provided, use it\n if (userProvidedIcon) {\n var rendererResult = void 0;\n if (typeof userProvidedIcon === 'function') {\n rendererResult = userProvidedIcon();\n }\n else if (typeof userProvidedIcon === 'string') {\n rendererResult = userProvidedIcon;\n }\n else {\n throw new Error('icon from grid options needs to be a string or a function');\n }\n if (typeof rendererResult === 'string') {\n return this.loadTemplate(rendererResult);\n }\n else if (this.isNodeOrElement(rendererResult)) {\n return rendererResult;\n }\n else {\n throw new Error('iconRenderer should return back a string or a dom object');\n }\n }\n else {\n var span = document.createElement('span');\n var cssClass = this.iconNameClassMap[iconName];\n if (!cssClass) {\n throw new Error(iconName + \" did not find class\");\n }\n span.setAttribute(\"class\", \"ag-icon ag-icon-\" + cssClass);\n span.setAttribute(\"unselectable\", \"on\");\n return span;\n }\n };\n Utils.addStylesToElement = function (eElement, styles) {\n var _this = this;\n if (!styles) {\n return;\n }\n Object.keys(styles).forEach(function (key) {\n var keyCamelCase = _this.hyphenToCamelCase(key);\n if (keyCamelCase) {\n eElement.style[keyCamelCase] = styles[key];\n }\n });\n };\n Utils.isHorizontalScrollShowing = function (element) {\n return element.clientWidth < element.scrollWidth;\n };\n Utils.isVerticalScrollShowing = function (element) {\n return element.clientHeight < element.scrollHeight;\n };\n Utils.getMaxDivHeight = function () {\n if (!document.body) {\n return -1;\n }\n var res = 1000000;\n // FF reports the height back but still renders blank after ~6M px\n var testUpTo = navigator.userAgent.toLowerCase().match(/firefox/) ? 6000000 : 1000000000;\n var div = this.loadTemplate(\"
\");\n document.body.appendChild(div);\n while (true) {\n var test = res * 2;\n div.style.height = test + 'px';\n if (test > testUpTo || div.clientHeight !== test) {\n break;\n }\n else {\n res = test;\n }\n }\n document.body.removeChild(div);\n return res;\n };\n Utils.getScrollbarWidth = function () {\n var outer = document.createElement(\"div\");\n outer.style.visibility = \"hidden\";\n outer.style.width = \"100px\";\n outer.style.msOverflowStyle = \"scrollbar\"; // needed for WinJS apps\n document.body.appendChild(outer);\n var widthNoScroll = outer.offsetWidth;\n // force scrollbars\n outer.style.overflow = \"scroll\";\n // add inner div\n var inner = document.createElement(\"div\");\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n var widthWithScroll = inner.offsetWidth;\n // remove divs\n if (outer.parentNode) {\n outer.parentNode.removeChild(outer);\n }\n return widthNoScroll - widthWithScroll;\n };\n Utils.hasOverflowScrolling = function () {\n var prefixes = ['webkit', 'moz', 'o', 'ms'];\n var div = document.createElement('div');\n var body = document.getElementsByTagName('body')[0];\n var found = false;\n var p;\n body.appendChild(div);\n div.setAttribute('style', prefixes.map(function (prefix) { return \"-\" + prefix + \"-overflow-scrolling: touch\"; }).concat('overflow-scrolling: touch').join(';'));\n var computedStyle = window.getComputedStyle(div);\n if (computedStyle.overflowScrolling === 'touch') {\n found = true;\n }\n if (!found) {\n for (var _i = 0, prefixes_1 = prefixes; _i < prefixes_1.length; _i++) {\n p = prefixes_1[_i];\n if (computedStyle[p + \"OverflowScrolling\"] === 'touch') {\n found = true;\n break;\n }\n }\n }\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n return found;\n };\n Utils.isKeyPressed = function (event, keyToCheck) {\n var pressedKey = event.which || event.keyCode;\n return pressedKey === keyToCheck;\n };\n Utils.setVisible = function (element, visible) {\n this.addOrRemoveCssClass(element, 'ag-hidden', !visible);\n };\n Utils.setHidden = function (element, hidden) {\n this.addOrRemoveCssClass(element, 'ag-invisible', hidden);\n };\n Utils.setFixedWidth = function (element, width) {\n width = this.formatSize(width);\n element.style.width = width;\n element.style.maxWidth = width;\n element.style.minWidth = width;\n };\n Utils.setFixedHeight = function (element, height) {\n height = this.formatSize(height);\n element.style.height = height;\n element.style.maxHeight = height;\n element.style.minHeight = height;\n };\n Utils.isBrowserIE = function () {\n if (this.isIE === undefined) {\n this.isIE = /*@cc_on!@*/ false || !!document.documentMode; // At least IE6\n }\n return this.isIE;\n };\n Utils.isBrowserEdge = function () {\n if (this.isEdge === undefined) {\n this.isEdge = !this.isBrowserIE() && !!window.StyleMedia;\n }\n return this.isEdge;\n };\n Utils.isBrowserSafari = function () {\n if (this.isSafari === undefined) {\n var anyWindow = window;\n // taken from https://github.com/ag-grid/ag-grid/issues/550\n this.isSafari = Object.prototype.toString.call(anyWindow.HTMLElement).indexOf('Constructor') > 0\n || (function (p) {\n return p ? p.toString() === \"[object SafariRemoteNotification]\" : false;\n })(!anyWindow.safari || anyWindow.safari.pushNotification);\n }\n return this.isSafari;\n };\n Utils.isBrowserChrome = function () {\n if (this.isChrome === undefined) {\n var win = window;\n this.isChrome = (!!win.chrome && (!!win.chrome.webstore || !!win.chrome.runtime)) ||\n (/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor));\n }\n return this.isChrome;\n };\n Utils.isBrowserFirefox = function () {\n if (this.isFirefox === undefined) {\n var win = window;\n this.isFirefox = typeof win.InstallTrigger !== 'undefined';\n }\n return this.isFirefox;\n };\n Utils.isUserAgentIPad = function () {\n if (this.isIPad === undefined) {\n // taken from https://davidwalsh.name/detect-ipad\n this.isIPad = navigator.userAgent.match(/iPad|iPhone/i) != null;\n }\n return this.isIPad;\n };\n // srcElement is only available in IE. In all other browsers it is target\n // http://stackoverflow.com/questions/5301643/how-can-i-make-event-srcelement-work-in-firefox-and-what-does-it-mean\n Utils.getTarget = function (event) {\n var eventNoType = event;\n return eventNoType.target || eventNoType.srcElement;\n };\n Utils.isElementChildOfClass = function (element, cls, maxNest) {\n var counter = 0;\n while (element) {\n if (this.containsClass(element, cls)) {\n return true;\n }\n element = element.parentElement;\n if (maxNest && ++counter > maxNest) {\n break;\n }\n }\n return false;\n };\n Utils.isElementInEventPath = function (element, event) {\n if (!event || !element) {\n return false;\n }\n var path = exports._.getEventPath(event);\n return path.indexOf(element) >= 0;\n };\n Utils.isFunction = function (val) {\n return !!(val && val.constructor && val.call && val.apply);\n };\n Utils.createEventPath = function (event) {\n var res = [];\n var pointer = exports._.getTarget(event);\n while (pointer) {\n res.push(pointer);\n pointer = pointer.parentElement;\n }\n return res;\n };\n // firefox doesn't have event.path set, or any alternative to it, so we hack\n // it in. this is needed as it's to late to work out the path when the item is\n // removed from the dom. used by MouseEventService, where it works out if a click\n // was from the current grid, or a detail grid (master / detail).\n Utils.addAgGridEventPath = function (event) {\n event.__agGridEventPath = this.getEventPath(event);\n };\n Utils.getEventPath = function (event) {\n // https://stackoverflow.com/questions/39245488/event-path-undefined-with-firefox-and-vue-js\n // https://developer.mozilla.org/en-US/docs/Web/API/Event\n var eventNoType = event;\n if (eventNoType.deepPath) {\n // IE supports deep path\n return eventNoType.deepPath();\n }\n else if (eventNoType.path) {\n // Chrome supports path\n return eventNoType.path;\n }\n else if (eventNoType.composedPath) {\n // Firefox supports composePath\n return eventNoType.composedPath();\n }\n else if (eventNoType.__agGridEventPath) {\n // Firefox supports composePath\n return eventNoType.__agGridEventPath;\n }\n else {\n // and finally, if none of the above worked,\n // we create the path ourselves\n return this.createEventPath(event);\n }\n };\n Utils.forEachSnapshotFirst = function (list, callback) {\n if (list) {\n var arrayCopy = list.slice(0);\n arrayCopy.forEach(callback);\n }\n };\n // taken from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code\n Utils.getBodyWidth = function () {\n if (document.body) {\n return document.body.clientWidth;\n }\n if (window.innerHeight) {\n return window.innerWidth;\n }\n if (document.documentElement && document.documentElement.clientWidth) {\n return document.documentElement.clientWidth;\n }\n return -1;\n };\n // taken from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code\n Utils.getBodyHeight = function () {\n if (document.body) {\n return document.body.clientHeight;\n }\n if (window.innerHeight) {\n return window.innerHeight;\n }\n if (document.documentElement && document.documentElement.clientHeight) {\n return document.documentElement.clientHeight;\n }\n return -1;\n };\n Utils.setCheckboxState = function (eCheckbox, state) {\n if (typeof state === 'boolean') {\n eCheckbox.checked = state;\n eCheckbox.indeterminate = false;\n }\n else {\n // isNodeSelected returns back undefined if it's a group and the children\n // are a mix of selected and unselected\n eCheckbox.indeterminate = true;\n }\n };\n Utils.traverseNodesWithKey = function (nodes, callback) {\n var keyParts = [];\n recursiveSearchNodes(nodes);\n function recursiveSearchNodes(currentNodes) {\n currentNodes.forEach(function (node) {\n // also checking for children for tree data\n if (node.group || node.hasChildren()) {\n keyParts.push(node.key);\n var key = keyParts.join('|');\n callback(node, key);\n recursiveSearchNodes(node.childrenAfterGroup);\n keyParts.pop();\n }\n });\n }\n };\n // from https://gist.github.com/youssman/745578062609e8acac9f\n Utils.camelCaseToHyphen = function (str) {\n if (str === null || str === undefined) {\n return null;\n }\n return str.replace(/([A-Z])/g, function (g) { return '-' + g[0].toLowerCase(); });\n };\n // from https://stackoverflow.com/questions/6660977/convert-hyphens-to-camel-case-camelcase\n Utils.hyphenToCamelCase = function (str) {\n if (str === null || str === undefined) {\n return null;\n }\n return str.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });\n };\n // pas in an object eg: {color: 'black', top: '25px'} and it returns \"color: black; top: 25px;\" for html\n Utils.cssStyleObjectToMarkup = function (stylesToUse) {\n var _this = this;\n if (!stylesToUse) {\n return '';\n }\n var resParts = [];\n this.iterateObject(stylesToUse, function (styleKey, styleValue) {\n var styleKeyDashed = _this.camelCaseToHyphen(styleKey);\n resParts.push(styleKeyDashed + \": \" + styleValue + \";\");\n });\n return resParts.join(' ');\n };\n /**\n * From http://stackoverflow.com/questions/9716468/is-there-any-function-like-isnumeric-in-javascript-to-validate-numbers\n */\n Utils.isNumeric = function (value) {\n if (value === '') {\n return false;\n }\n return !isNaN(parseFloat(value)) && isFinite(value);\n };\n Utils.escape = function (toEscape) {\n if (toEscape === null || toEscape === undefined || !toEscape.replace) {\n return toEscape;\n }\n return toEscape.replace(reUnescapedHtml, function (chr) { return HTML_ESCAPES[chr]; });\n };\n // Taken from here: https://github.com/facebook/fixed-data-table/blob/master/src/vendor_upstream/dom/normalizeWheel.js\n /**\n * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * As of today, there are 4 DOM event types you can listen to:\n *\n * 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n * 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n * 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n * 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n *\n * So what to do? The is the best:\n *\n * normalizeWheel.getEventType();\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas. This code will return an object with properties:\n *\n * spinX -- normalized spin speed (use for zoom) - x plane\n * spinY -- \" - y plane\n * pixelX -- normalized distance (to pixels) - x plane\n * pixelY -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages). Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds. Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n * - spin is trying to normalize how far the wheel was spun (or trackpad\n * dragged). This is super useful for zoom support where you want to\n * throw away the chunky scroll steps on the PC and make those equal to\n * the slow and smooth tiny steps on the Mac. Key data: This code tries to\n * resolve a single slow step on a wheel to 1.\n *\n * - pixel is normalizing the desired scroll delta in pixel units. You'll\n * get the crazy differences between browsers, but at least it'll be in\n * pixels!\n *\n * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n * should translate to positive value zooming IN, negative zooming OUT.\n * This matches the newer 'wheel' event.\n *\n * Why are there spinX, spinY (or pixels)?\n *\n * - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n * with a mouse. It results in side-scrolling in the browser by default.\n *\n * - spinY is what you expect -- it's the classic axis of a mouse wheel.\n *\n * - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n * probably is by browsers in conjunction with fancy 3D controllers .. but\n * you know.\n *\n * Implementation info:\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n *\n * On the trackpad:\n *\n * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n *\n * On other/older browsers.. it's more complicated as there can be multiple and\n * also missing delta values.\n *\n * The 'wheel' event is more standard:\n *\n * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n * deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n * backward compatibility with older events. Those other values help us\n * better normalize spin speed. Example of what the browsers provide:\n *\n * | event.wheelDelta | event.detail\n * ------------------+------------------+--------------\n * Safari v5/OS X | -120 | 0\n * Safari v5/Win7 | -120 | 0\n * Chrome v17/OS X | -120 | 0\n * Chrome v17/Win7 | -120 | 0\n * IE9/Win7 | -120 | undefined\n * Firefox v4/OS X | undefined | 1\n * Firefox v4/Win7 | undefined | 3\n *\n */\n Utils.normalizeWheel = function (event) {\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n // spinX, spinY\n var sX = 0;\n var sY = 0;\n // pixelX, pixelY\n var pX = 0;\n var pY = 0;\n // Legacy\n if ('detail' in event) {\n sY = event.detail;\n }\n if ('wheelDelta' in event) {\n sY = -event.wheelDelta / 120;\n }\n if ('wheelDeltaY' in event) {\n sY = -event.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in event) {\n sX = -event.wheelDeltaX / 120;\n }\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in event && event.axis === event.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in event) {\n pY = event.deltaY;\n }\n if ('deltaX' in event) {\n pX = event.deltaX;\n }\n if ((pX || pY) && event.deltaMode) {\n if (event.deltaMode == 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n }\n else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n };\n /**\n * https://stackoverflow.com/questions/24004791/can-someone-explain-the-debounce-function-in-javascript\n */\n Utils.debounce = function (func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n // 'private' variable for instance\n // The returned function will be able to reference this due to closure.\n // Each call to the returned function will share this common timer.\n var timeout;\n // Calling debounce returns a new anonymous function\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // reference the context and args for the setTimeout function\n var context = this;\n // Should the function be called now? If immediate is true\n // and not already in a timeout then the answer is: Yes\n var callNow = immediate && !timeout;\n // This is the basic debounce behaviour where you can call this\n // function several times, but it will only execute once\n // [before or after imposing a delay].\n // Each time the returned function is called, the timer starts over.\n window.clearTimeout(timeout);\n // Set the new timeout\n timeout = window.setTimeout(function () {\n // Inside the timeout function, clear the timeout variable\n // which will let the next execution run when in 'immediate' mode\n timeout = null;\n // Check if the function already ran with the immediate flag\n if (!immediate) {\n // Call the original function with apply\n // apply lets you define the 'this' object as well as the arguments\n // (both captured before setTimeout)\n func.apply(context, args);\n }\n }, wait);\n // Immediate mode and no wait timer? Execute the function..\n if (callNow) {\n func.apply(context, args);\n }\n };\n };\n // a user once raised an issue - they said that when you opened a popup (eg context menu)\n // and then clicked on a selection checkbox, the popup wasn't closed. this is because the\n // popup listens for clicks on the body, however ag-grid WAS stopping propagation on the\n // checkbox clicks (so the rows didn't pick them up as row selection selection clicks).\n // to get around this, we have a pattern to stop propagation for the purposes of ag-Grid,\n // but we still let the event pass back to teh body.\n Utils.stopPropagationForAgGrid = function (event) {\n event[AG_GRID_STOP_PROPAGATION] = true;\n };\n Utils.isStopPropagationForAgGrid = function (event) {\n return event[AG_GRID_STOP_PROPAGATION] === true;\n };\n Utils.executeInAWhile = function (funcs) {\n this.executeAfter(funcs, 400);\n };\n Utils.executeNextVMTurn = function (funcs) {\n this.executeAfter(funcs, 0);\n };\n Utils.executeAfter = function (funcs, millis) {\n if (funcs.length > 0) {\n window.setTimeout(function () {\n funcs.forEach(function (func) { return func(); });\n }, millis);\n }\n };\n Utils.referenceCompare = function (left, right) {\n if (left == null && right == null) {\n return true;\n }\n if (left == null && right) {\n return false;\n }\n if (left && right == null) {\n return false;\n }\n return left === right;\n };\n Utils.get = function (source, expression, defaultValue) {\n if (source == null) {\n return defaultValue;\n }\n if (expression.indexOf('.') > -1) {\n var fields = expression.split('.');\n var thisKey = fields[0];\n var nextValue = source[thisKey];\n if (nextValue != null) {\n return Utils.get(nextValue, fields.slice(1, fields.length).join('.'), defaultValue);\n }\n else {\n return defaultValue;\n }\n }\n else {\n var nextValue = source[expression];\n return nextValue != null ? nextValue : defaultValue;\n }\n };\n Utils.addSafePassiveEventListener = function (eElement, event, listener, options) {\n if (Utils.passiveEvents.indexOf(event) !== -1) {\n if (options === undefined) {\n options = {};\n }\n else if (typeof options === 'boolean') {\n options = { capture: options };\n }\n options.passive = true;\n }\n eElement.addEventListener(event, listener, options);\n };\n Utils.camelCaseToHumanText = function (camelCase) {\n if (!camelCase || camelCase == null) {\n return null;\n }\n // Who needs to learn how to code when you have stack overflow!\n // from: https://stackoverflow.com/questions/15369566/putting-space-in-camel-case-string-using-regular-expression\n var rex = /([A-Z])([A-Z])([a-z])|([a-z])([A-Z])/g;\n var words = camelCase.replace(rex, '$1$4 $2$3$5').replace('.', ' ').split(' ');\n return words.map(function (word) { return word.substring(0, 1).toUpperCase() + ((word.length > 1) ? word.substring(1, word.length) : ''); }).join(' ');\n };\n // displays a message to the browser. this is useful in iPad, where you can't easily see the console.\n // so the javascript code can use this to give feedback. this is NOT intended to be called in production.\n // it is intended the ag-Grid developer calls this to troubleshoot, but then takes out the calls before\n // checking in.\n Utils.message = function (msg) {\n var eMessage = document.createElement('div');\n eMessage.innerHTML = msg;\n var eBox = document.querySelector('#__ag__message');\n if (!eBox) {\n var template = \"
\";\n eBox = this.loadTemplate(template);\n if (document.body) {\n document.body.appendChild(eBox);\n }\n }\n eBox.insertBefore(eMessage, eBox.children[0]);\n // eBox.appendChild(eMessage);\n };\n // gets called by: a) ClientSideNodeManager and b) GroupStage to do sorting.\n // when in ClientSideNodeManager we always have indexes (as this sorts the items the\n // user provided) but when in GroupStage, the nodes can contain filler nodes that\n // don't have order id's\n Utils.sortRowNodesByOrder = function (rowNodes, rowNodeOrder) {\n if (!rowNodes) {\n return;\n }\n var comparator = function (nodeA, nodeB) {\n var positionA = rowNodeOrder[nodeA.id];\n var positionB = rowNodeOrder[nodeB.id];\n var aHasIndex = positionA !== undefined;\n var bHasIndex = positionB !== undefined;\n var bothNodesAreUserNodes = aHasIndex && bHasIndex;\n var bothNodesAreFillerNodes = !aHasIndex && !bHasIndex;\n if (bothNodesAreUserNodes) {\n // when comparing two nodes the user has provided, they always\n // have indexes\n return positionA - positionB;\n }\n else if (bothNodesAreFillerNodes) {\n // when comparing two filler nodes, we have no index to compare them\n // against, however we want this sorting to be deterministic, so that\n // the rows don't jump around as the user does delta updates. so we\n // want the same sort result. so we use the __objectId - which doesn't make sense\n // from a sorting point of view, but does give consistent behaviour between\n // calls. otherwise groups jump around as delta updates are done.\n // note: previously here we used nodeId, however this gave a strange order\n // as string ordering of numbers is wrong, so using id based on creation order\n // as least gives better looking order.\n return nodeA.__objectId - nodeB.__objectId;\n }\n else if (aHasIndex) {\n return 1;\n }\n return -1;\n };\n // const a = new Date().getTime();\n // check if the list first needs sorting\n var rowNodeA;\n var rowNodeB;\n var atLeastOneOutOfOrder = false;\n for (var i = 0; i < rowNodes.length - 1; i++) {\n rowNodeA = rowNodes[i];\n rowNodeB = rowNodes[i + 1];\n if (comparator(rowNodeA, rowNodeB) > 0) {\n atLeastOneOutOfOrder = true;\n break;\n }\n }\n // const b = new Date().getTime();\n if (atLeastOneOutOfOrder) {\n rowNodes.sort(comparator);\n }\n // const c = new Date().getTime();\n // console.log(`${this.count}: ${rowNodes.length} items, ${b-a}ms ${atLeastOneOutOfOrder} ${c-b}ms`);\n };\n Utils.fuzzyCheckStrings = function (inputValues, validValues, allSuggestions) {\n var _this = this;\n var fuzzyMatches = {};\n var invalidInputs = inputValues.filter(function (inputValue) {\n return !validValues.some(function (validValue) { return validValue === inputValue; });\n });\n if (invalidInputs.length > 0) {\n invalidInputs.forEach(function (invalidInput) {\n return fuzzyMatches[invalidInput] = _this.fuzzySuggestions(invalidInput, validValues, allSuggestions);\n });\n }\n return fuzzyMatches;\n };\n Utils.fuzzySuggestions = function (inputValue, validValues, allSuggestions) {\n var thisSuggestions = allSuggestions.slice(0);\n thisSuggestions.sort(function (suggestedValueLeft, suggestedValueRight) {\n var leftDifference = exports._.string_similarity(suggestedValueLeft.toLowerCase(), inputValue.toLowerCase());\n var rightDifference = exports._.string_similarity(suggestedValueRight.toLowerCase(), inputValue.toLowerCase());\n return leftDifference > rightDifference ? -1 :\n leftDifference === rightDifference ? 0 :\n 1;\n });\n return thisSuggestions;\n };\n //Algorithm to do fuzzy search\n //https://stackoverflow.com/questions/23305000/javascript-fuzzy-search-that-makes-sense\n Utils.get_bigrams = function (from) {\n var s = from.toLowerCase();\n var v = new Array(s.length - 1);\n var i;\n var j;\n var ref;\n for (i = j = 0, ref = v.length; j <= ref; i = j += 1) {\n v[i] = s.slice(i, i + 2);\n }\n return v;\n };\n Utils.isNumpadDelWithNumlockOnForEdgeOrIe = function (event) {\n if (Utils.isBrowserEdge() || Utils.isBrowserIE()) {\n return event.key === Utils.NUMPAD_DEL_NUMLOCK_ON_KEY &&\n event.charCode === Utils.NUMPAD_DEL_NUMLOCK_ON_CHARCODE;\n }\n return false;\n };\n // cell renderers are used in a few places. they bind to dom slightly differently to other cell renderes as they\n // can return back strings (instead of html elemnt) in the getGui() method. common code placed here to handle that.\n Utils.bindCellRendererToHtmlElement = function (cellRendererPromise, eTarget) {\n cellRendererPromise.then(function (cellRenderer) {\n var gui = cellRenderer.getGui();\n if (gui != null) {\n if (typeof gui == 'object') {\n eTarget.appendChild(gui);\n }\n else {\n eTarget.innerHTML = gui;\n }\n }\n });\n };\n Utils.PRINTABLE_CHARACTERS = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890!\"£$%^&*()_+-=[];\\'#,./\\\\|<>?:@~{}';\n Utils.NUMPAD_DEL_NUMLOCK_ON_KEY = 'Del';\n Utils.NUMPAD_DEL_NUMLOCK_ON_CHARCODE = 46;\n Utils.doOnceFlags = {};\n Utils.compose = function () {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return function (arg) { return fns.reduce(function (composed, f) { return f(composed); }, arg); };\n };\n Utils.decToHex = function (number, bytes) {\n var hex = '';\n for (var i = 0; i < bytes; i++) {\n hex += String.fromCharCode(number & 0xff);\n number >>>= 8;\n }\n return hex;\n };\n Utils.utf8_encode = function (s) {\n var utftext = '';\n s = s.replace(/\\r\\n/g, \"\\n\");\n for (var n = 0, len = s.length; n < len; n++) {\n var c = s.charCodeAt(n);\n if (c < 128) {\n utftext += String.fromCharCode(c);\n }\n else if ((c > 127) && (c < 2048)) {\n utftext += String.fromCharCode((c >> 6) | 192);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n else {\n utftext += String.fromCharCode((c >> 12) | 224);\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n }\n return utftext;\n };\n // static prepend(parent: HTMLElement, child: HTMLElement): void {\n // if (this.exists(parent.firstChild)) {\n // parent.insertBefore(child, parent.firstChild);\n // } else {\n // parent.appendChild(child);\n // }\n // }\n Utils.iconNameClassMap = {\n columnGroupOpened: 'expanded',\n columnGroupClosed: 'contracted',\n columnSelectClosed: 'tree-closed',\n columnSelectOpen: 'tree-open',\n columnMovePin: 'pin',\n columnMoveAdd: 'plus',\n columnMoveHide: 'eye-slash',\n columnMoveMove: 'arrows',\n columnMoveLeft: 'left',\n columnMoveRight: 'right',\n columnMoveGroup: 'group',\n columnMoveValue: 'aggregation',\n columnMovePivot: 'pivot',\n dropNotAllowed: 'not-allowed',\n groupContracted: 'expanded',\n groupExpanded: 'contracted',\n checkboxChecked: 'checkbox-checked',\n checkboxUnchecked: 'checkbox-unchecked',\n checkboxIndeterminate: 'checkbox-indeterminate',\n checkboxCheckedReadOnly: 'checkbox-checked-readonly',\n checkboxUncheckedReadOnly: 'checkbox-unchecked-readonly',\n checkboxIndeterminateReadOnly: 'checkbox-indeterminate-readonly',\n groupLoading: 'loading',\n menu: 'menu',\n filter: 'filter',\n columns: 'columns',\n menuPin: 'pin',\n menuValue: 'aggregation',\n menuAddRowGroup: 'group',\n menuRemoveRowGroup: 'group',\n clipboardCopy: 'copy',\n clipboardCut: 'cut',\n clipboardPaste: 'paste',\n pivotPanel: 'pivot',\n rowGroupPanel: 'group',\n valuePanel: 'aggregation',\n columnDrag: 'column-drag',\n rowDrag: 'row-drag',\n /** from @deprecated header, remove at some point */\n sortAscending: 'asc',\n sortDescending: 'desc',\n sortUnSort: 'none'\n };\n Utils.passiveEvents = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];\n Utils.string_similarity = function (str1, str2) {\n if (str1.length > 0 && str2.length > 0) {\n var pairs1 = Utils.get_bigrams(str1);\n var pairs2 = Utils.get_bigrams(str2);\n var union = pairs1.length + pairs2.length;\n var hit_count = 0;\n var j = void 0;\n var len = void 0;\n for (j = 0, len = pairs1.length; j < len; j++) {\n var x = pairs1[j];\n var k = void 0;\n var len1 = void 0;\n for (k = 0, len1 = pairs2.length; k < len1; k++) {\n var y = pairs2[k];\n if (x === y) {\n hit_count++;\n }\n }\n }\n if (hit_count > 0) {\n return (2.0 * hit_count) / union;\n }\n }\n return 0.0;\n };\n return Utils;\n}());\nexports.Utils = Utils;\nvar NumberSequence = /** @class */ (function () {\n function NumberSequence(initValue, step) {\n if (initValue === void 0) { initValue = 0; }\n if (step === void 0) { step = 1; }\n this.nextValue = initValue;\n this.step = step;\n }\n NumberSequence.prototype.next = function () {\n var valToReturn = this.nextValue;\n this.nextValue += this.step;\n return valToReturn;\n };\n NumberSequence.prototype.peek = function () {\n return this.nextValue;\n };\n NumberSequence.prototype.skip = function (count) {\n this.nextValue += count;\n };\n return NumberSequence;\n}());\nexports.NumberSequence = NumberSequence;\nexports._ = Utils;\nvar PromiseStatus;\n(function (PromiseStatus) {\n PromiseStatus[PromiseStatus[\"IN_PROGRESS\"] = 0] = \"IN_PROGRESS\";\n PromiseStatus[PromiseStatus[\"RESOLVED\"] = 1] = \"RESOLVED\";\n})(PromiseStatus = exports.PromiseStatus || (exports.PromiseStatus = {}));\nvar Promise = /** @class */ (function () {\n function Promise(callback) {\n this.status = PromiseStatus.IN_PROGRESS;\n this.resolution = null;\n this.listOfWaiters = [];\n callback(this.onDone.bind(this), this.onReject.bind(this));\n }\n Promise.all = function (toCombine) {\n return new Promise(function (resolve) {\n var combinedValues = [];\n var remainingToResolve = toCombine.length;\n toCombine.forEach(function (source, index) {\n source.then(function (sourceResolved) {\n remainingToResolve--;\n combinedValues[index] = sourceResolved;\n if (remainingToResolve == 0) {\n resolve(combinedValues);\n }\n });\n combinedValues.push(null); // spl todo: review with Alberto - why?\n });\n });\n };\n Promise.resolve = function (value) {\n return new Promise(function (resolve) { return resolve(value); });\n };\n Promise.external = function () {\n var capture;\n var promise = new Promise(function (resolve) {\n capture = resolve;\n });\n return {\n promise: promise,\n resolve: function (value) {\n capture(value);\n }\n };\n };\n Promise.prototype.then = function (func) {\n if (this.status === PromiseStatus.IN_PROGRESS) {\n this.listOfWaiters.push(func);\n }\n else {\n func(this.resolution);\n }\n };\n Promise.prototype.firstOneOnly = function (func) {\n if (this.status === PromiseStatus.IN_PROGRESS) {\n if (this.listOfWaiters.length === 0) {\n this.listOfWaiters.push(func);\n }\n }\n else {\n func(this.resolution);\n }\n };\n Promise.prototype.map = function (adapter) {\n var _this = this;\n return new Promise(function (resolve) {\n _this.then(function (unmapped) {\n resolve(adapter(unmapped));\n });\n });\n };\n Promise.prototype.resolveNow = function (ifNotResolvedValue, ifResolved) {\n if (this.status == PromiseStatus.IN_PROGRESS) {\n return ifNotResolvedValue;\n }\n return ifResolved(this.resolution);\n };\n Promise.prototype.onDone = function (value) {\n this.status = PromiseStatus.RESOLVED;\n this.resolution = value;\n this.listOfWaiters.forEach(function (waiter) { return waiter(value); });\n };\n Promise.prototype.onReject = function (params) {\n console.warn('TBI');\n };\n return Promise;\n}());\nexports.Promise = Promise;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar ScrollVisibleService = /** @class */ (function () {\n function ScrollVisibleService() {\n }\n ScrollVisibleService.prototype.setScrollsVisible = function (params) {\n var atLeastOneDifferent = this.horizontalScrollShowing !== params.horizontalScrollShowing ||\n this.verticalScrollShowing !== params.verticalScrollShowing;\n if (atLeastOneDifferent) {\n this.horizontalScrollShowing = params.horizontalScrollShowing;\n this.verticalScrollShowing = params.verticalScrollShowing;\n var event_1 = {\n type: events_1.Events.EVENT_SCROLL_VISIBILITY_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n // used by pagination service - to know page height\n ScrollVisibleService.prototype.isHorizontalScrollShowing = function () {\n return this.horizontalScrollShowing;\n };\n // used by header container\n ScrollVisibleService.prototype.isVerticalScrollShowing = function () {\n return this.verticalScrollShowing;\n };\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], ScrollVisibleService.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], ScrollVisibleService.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], ScrollVisibleService.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], ScrollVisibleService.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ScrollVisibleService.prototype, \"gridOptionsWrapper\", void 0);\n ScrollVisibleService = __decorate([\n context_1.Bean('scrollVisibleService')\n ], ScrollVisibleService);\n return ScrollVisibleService;\n}());\nexports.ScrollVisibleService = ScrollVisibleService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar changedPath_1 = require(\"../rowModels/clientSide/changedPath\");\nvar rowRenderer_1 = require(\"../rendering/rowRenderer\");\nvar eventService_1 = require(\"../eventService\");\nvar constants_1 = require(\"../constants\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar events_1 = require(\"../events\");\nvar ChangeDetectionService = /** @class */ (function (_super) {\n __extends(ChangeDetectionService, _super);\n function ChangeDetectionService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChangeDetectionService.prototype.init = function () {\n if (this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged.bind(this));\n };\n ChangeDetectionService.prototype.onCellValueChanged = function (event) {\n this.doChangeDetection(event.node, event.column);\n };\n ChangeDetectionService.prototype.doChangeDetection = function (rowNode, column) {\n if (this.gridOptionsWrapper.isSuppressChangeDetection()) {\n return;\n }\n // step 1 of change detection is to update the aggregated values\n if (this.clientSideRowModel && !rowNode.isRowPinned()) {\n var onlyChangedColumns = this.gridOptionsWrapper.isAggregateOnlyChangedColumns();\n var changedPath = new changedPath_1.ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n changedPath.addParentNode(rowNode.parent, [column]);\n this.clientSideRowModel.doAggregate(changedPath);\n }\n // step 2 of change detection is to refresh the cells\n this.rowRenderer.refreshCells();\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ChangeDetectionService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], ChangeDetectionService.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('rowRenderer'),\n __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n ], ChangeDetectionService.prototype, \"rowRenderer\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], ChangeDetectionService.prototype, \"eventService\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ChangeDetectionService.prototype, \"init\", null);\n ChangeDetectionService = __decorate([\n context_1.Bean('changeDetectionService')\n ], ChangeDetectionService);\n return ChangeDetectionService;\n}(beanStub_1.BeanStub));\nexports.ChangeDetectionService = ChangeDetectionService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar selectionController_1 = require(\"../selectionController\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar context_1 = require(\"../context/context\");\nvar constants_1 = require(\"../constants\");\nvar valueCache_1 = require(\"../valueService/valueCache\");\nvar gridApi_1 = require(\"../gridApi\");\nvar utils_1 = require(\"../utils\");\nvar RowNode = /** @class */ (function () {\n function RowNode() {\n /** Children mapped by the pivot columns */\n this.childrenMapped = {};\n /** True by default - can be overridden via gridOptions.isRowSelectable(rowNode) */\n this.selectable = true;\n /** Used by sorting service - to give deterministic sort to groups. Previously we\n * just id for this, however id is a string and had slower sorting compared to numbers. */\n this.__objectId = RowNode.OBJECT_ID_SEQUENCE++;\n /** True when nodes with the same id are being removed and added as part of the same batch transaction */\n this.alreadyRendered = false;\n this.selected = false;\n }\n RowNode.prototype.setData = function (data) {\n var oldData = this.data;\n this.data = data;\n this.valueCache.onDataChanged();\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n // when we are doing master / detail, the detail node is lazy created, but then kept around.\n // so if we show / hide the detail, the same detail rowNode is used. so we need to keep the data\n // in sync, otherwise expand/collapse of the detail would still show the old values.\n RowNode.prototype.updateDataOnDetailNode = function () {\n if (this.detailNode) {\n this.detailNode.data = this.data;\n }\n };\n RowNode.prototype.createDataChangedEvent = function (newData, oldData, update) {\n return {\n type: RowNode.EVENT_DATA_CHANGED,\n node: this,\n oldData: oldData,\n newData: newData,\n update: update\n };\n };\n RowNode.prototype.createLocalRowEvent = function (type) {\n return {\n type: type,\n node: this\n };\n };\n // similar to setRowData, however it is expected that the data is the same data item. this\n // is intended to be used with Redux type stores, where the whole data can be changed. we are\n // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the\n // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving\n // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).\n RowNode.prototype.updateData = function (data) {\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n this.updateDataOnDetailNode();\n var event = this.createDataChangedEvent(data, oldData, true);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.getRowIndexString = function () {\n if (this.rowPinned === constants_1.Constants.PINNED_TOP) {\n return 't-' + this.rowIndex;\n }\n else if (this.rowPinned === constants_1.Constants.PINNED_BOTTOM) {\n return 'b-' + this.rowIndex;\n }\n else {\n return this.rowIndex.toString();\n }\n };\n RowNode.prototype.createDaemonNode = function () {\n var oldNode = new RowNode();\n this.context.wireBean(oldNode);\n // just copy the id and data, this is enough for the node to be used\n // in the selection controller (the selection controller is the only\n // place where daemon nodes can live).\n oldNode.id = this.id;\n oldNode.data = this.data;\n oldNode.daemon = true;\n oldNode.selected = this.selected;\n oldNode.level = this.level;\n return oldNode;\n };\n RowNode.prototype.setDataAndId = function (data, id) {\n var oldNode = utils_1._.exists(this.id) ? this.createDaemonNode() : null;\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.setId(id);\n this.selectionController.syncInRowNode(this, oldNode);\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.checkRowSelectable = function () {\n var isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n var shouldInvokeIsRowSelectable = isRowSelectableFunc && utils_1._.exists(this);\n this.setRowSelectable(shouldInvokeIsRowSelectable ? isRowSelectableFunc(this) : true);\n };\n RowNode.prototype.setRowSelectable = function (newVal) {\n if (this.selectable !== newVal) {\n this.selectable = newVal;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_SELECTABLE_CHANGED));\n }\n }\n };\n RowNode.prototype.setId = function (id) {\n // see if user is providing the id's\n var getRowNodeId = this.gridOptionsWrapper.getRowNodeIdFunc();\n if (getRowNodeId) {\n // if user is providing the id's, then we set the id only after the data has been set.\n // this is important for virtual pagination and viewport, where empty rows exist.\n if (this.data) {\n this.id = getRowNodeId(this.data);\n }\n else {\n // this can happen if user has set blank into the rowNode after the row previously\n // having data. this happens in virtual page row model, when data is delete and\n // the page is refreshed.\n this.id = undefined;\n }\n }\n else {\n this.id = id;\n }\n };\n RowNode.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.rowTop && pixel < (this.rowTop + this.rowHeight);\n };\n RowNode.prototype.clearRowTop = function () {\n this.oldRowTop = this.rowTop;\n this.setRowTop(null);\n };\n RowNode.prototype.setFirstChild = function (firstChild) {\n if (this.firstChild === firstChild) {\n return;\n }\n this.firstChild = firstChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_FIRST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setLastChild = function (lastChild) {\n if (this.lastChild === lastChild) {\n return;\n }\n this.lastChild = lastChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_LAST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setChildIndex = function (childIndex) {\n if (this.childIndex === childIndex) {\n return;\n }\n this.childIndex = childIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_CHILD_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setRowTop = function (rowTop) {\n if (this.rowTop === rowTop) {\n return;\n }\n this.rowTop = rowTop;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_TOP_CHANGED));\n }\n };\n RowNode.prototype.setDragging = function (dragging) {\n if (this.dragging === dragging) {\n return;\n }\n this.dragging = dragging;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DRAGGING_CHANGED));\n }\n };\n RowNode.prototype.setAllChildrenCount = function (allChildrenCount) {\n if (this.allChildrenCount === allChildrenCount) {\n return;\n }\n this.allChildrenCount = allChildrenCount;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED));\n }\n };\n RowNode.prototype.setRowHeight = function (rowHeight, estimated) {\n if (estimated === void 0) { estimated = false; }\n this.rowHeight = rowHeight;\n this.rowHeightEstimated = estimated;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HEIGHT_CHANGED));\n }\n };\n RowNode.prototype.setRowIndex = function (rowIndex) {\n this.rowIndex = rowIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setUiLevel = function (uiLevel) {\n if (this.uiLevel === uiLevel) {\n return;\n }\n this.uiLevel = uiLevel;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_UI_LEVEL_CHANGED));\n }\n };\n RowNode.prototype.setExpanded = function (expanded) {\n if (this.expanded === expanded) {\n return;\n }\n this.expanded = expanded;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_EXPANDED_CHANGED));\n }\n var event = this.createGlobalRowEvent(events_1.Events.EVENT_ROW_GROUP_OPENED);\n this.mainEventService.dispatchEvent(event);\n if (this.gridOptionsWrapper.isGroupIncludeFooter()) {\n this.gridApi.redrawRows({ rowNodes: [this] });\n }\n };\n RowNode.prototype.createGlobalRowEvent = function (type) {\n var event = {\n type: type,\n node: this,\n data: this.data,\n rowIndex: this.rowIndex,\n rowPinned: this.rowPinned,\n context: this.gridOptionsWrapper.getContext(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n return event;\n };\n RowNode.prototype.dispatchLocalEvent = function (event) {\n if (this.eventService) {\n this.eventService.dispatchEvent(event);\n }\n };\n // we also allow editing the value via the editors. when it is done via\n // the editors, no 'cell changed' event gets fired, as it's assumed that\n // the cell knows about the change given it's in charge of the editing.\n // this method is for the client to call, so the cell listens for the change\n // event, and also flashes the cell when the change occurs.\n RowNode.prototype.setDataValue = function (colKey, newValue) {\n var column = this.columnController.getPrimaryColumn(colKey);\n this.valueService.setValue(this, column, newValue);\n this.dispatchCellChangedEvent(column, newValue);\n };\n RowNode.prototype.setGroupValue = function (colKey, newValue) {\n var column = this.columnController.getGridColumn(colKey);\n if (utils_1._.missing(this.groupData)) {\n this.groupData = {};\n }\n this.groupData[column.getColId()] = newValue;\n this.dispatchCellChangedEvent(column, newValue);\n };\n // sets the data for an aggregation\n RowNode.prototype.setAggData = function (newAggData) {\n var _this = this;\n // find out all keys that could potentially change\n var colIds = utils_1._.getAllKeysInObjects([this.aggData, newAggData]);\n this.aggData = newAggData;\n // if no event service, nobody has registered for events, so no need fire event\n if (this.eventService) {\n colIds.forEach(function (colId) {\n var column = _this.columnController.getGridColumn(colId);\n var value = _this.aggData ? _this.aggData[colId] : undefined;\n _this.dispatchCellChangedEvent(column, value);\n });\n }\n };\n RowNode.prototype.hasChildren = function () {\n // we need to return true when this.group=true, as this is used by server side row model\n // (as children are lazy loaded and stored in a cache anyway). otherwise we return true\n // if children exist.\n return this.group || (this.childrenAfterGroup && this.childrenAfterGroup.length > 0);\n };\n RowNode.prototype.isEmptyFillerNode = function () {\n return this.group && utils_1._.missingOrEmpty(this.childrenAfterGroup);\n };\n RowNode.prototype.dispatchCellChangedEvent = function (column, newValue) {\n var cellChangedEvent = {\n type: RowNode.EVENT_CELL_CHANGED,\n node: this,\n column: column,\n newValue: newValue\n };\n this.dispatchLocalEvent(cellChangedEvent);\n };\n RowNode.prototype.resetQuickFilterAggregateText = function () {\n this.quickFilterAggregateText = null;\n };\n RowNode.prototype.isExpandable = function () {\n return this.hasChildren() || this.master;\n };\n RowNode.prototype.isSelected = function () {\n // for footers, we just return what our sibling selected state is, as cannot select a footer\n if (this.footer) {\n return this.sibling.isSelected();\n }\n return this.selected;\n };\n RowNode.prototype.depthFirstSearch = function (callback) {\n if (this.childrenAfterGroup) {\n this.childrenAfterGroup.forEach(function (child) { return child.depthFirstSearch(callback); });\n }\n callback(this);\n };\n // + rowController.updateGroupsInSelection()\n // + selectionController.calculatedSelectedForAllGroupNodes()\n RowNode.prototype.calculateSelectedFromChildren = function () {\n var atLeastOneSelected = false;\n var atLeastOneDeSelected = false;\n var atLeastOneMixed = false;\n var newSelectedValue;\n if (this.childrenAfterGroup) {\n for (var i = 0; i < this.childrenAfterGroup.length; i++) {\n var child = this.childrenAfterGroup[i];\n // skip non-selectable nodes to prevent inconsistent selection values\n if (!child.selectable) {\n continue;\n }\n var childState = child.isSelected();\n switch (childState) {\n case true:\n atLeastOneSelected = true;\n break;\n case false:\n atLeastOneDeSelected = true;\n break;\n default:\n atLeastOneMixed = true;\n break;\n }\n }\n }\n if (atLeastOneMixed) {\n newSelectedValue = undefined;\n }\n else if (atLeastOneSelected && !atLeastOneDeSelected) {\n newSelectedValue = true;\n }\n else if (!atLeastOneSelected && atLeastOneDeSelected) {\n newSelectedValue = false;\n }\n else {\n newSelectedValue = undefined;\n }\n this.selectThisNode(newSelectedValue);\n };\n RowNode.prototype.setSelectedInitialValue = function (selected) {\n this.selected = selected;\n };\n RowNode.prototype.setSelected = function (newValue, clearSelection, suppressFinishActions) {\n if (clearSelection === void 0) { clearSelection = false; }\n if (suppressFinishActions === void 0) { suppressFinishActions = false; }\n this.setSelectedParams({\n newValue: newValue,\n clearSelection: clearSelection,\n suppressFinishActions: suppressFinishActions,\n rangeSelect: false\n });\n };\n RowNode.prototype.isRowPinned = function () {\n return this.rowPinned === constants_1.Constants.PINNED_TOP || this.rowPinned === constants_1.Constants.PINNED_BOTTOM;\n };\n // to make calling code more readable, this is the same method as setSelected except it takes names parameters\n RowNode.prototype.setSelectedParams = function (params) {\n var groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n var newValue = params.newValue === true;\n var clearSelection = params.clearSelection === true;\n var suppressFinishActions = params.suppressFinishActions === true;\n var rangeSelect = params.rangeSelect === true;\n // groupSelectsFiltered only makes sense when group selects children\n var groupSelectsFiltered = groupSelectsChildren && (params.groupSelectsFiltered === true);\n if (this.id === undefined) {\n console.warn('ag-Grid: cannot select node until id for node is known');\n return 0;\n }\n if (this.rowPinned) {\n console.warn('ag-Grid: cannot select pinned rows');\n return 0;\n }\n // if we are a footer, we don't do selection, just pass the info\n // to the sibling (the parent of the group)\n if (this.footer) {\n var count = this.sibling.setSelectedParams(params);\n return count;\n }\n if (rangeSelect) {\n var newRowClicked = this.selectionController.getLastSelectedNode() !== this;\n var allowMultiSelect = this.gridOptionsWrapper.isRowSelectionMulti();\n if (newRowClicked && allowMultiSelect) {\n return this.doRowRangeSelection();\n }\n }\n var updatedCount = 0;\n // when groupSelectsFiltered, then this node may end up intermediate despite\n // trying to set it to true / false. this group will be calculated further on\n // down when we call calculatedSelectedForAllGroupNodes(). we need to skip it\n // here, otherwise the updatedCount would include it.\n var skipThisNode = groupSelectsFiltered && this.group;\n if (!skipThisNode) {\n var thisNodeWasSelected = this.selectThisNode(newValue);\n if (thisNodeWasSelected) {\n updatedCount++;\n }\n }\n if (groupSelectsChildren && this.group) {\n updatedCount += this.selectChildNodes(newValue, groupSelectsFiltered);\n }\n // clear other nodes if not doing multi select\n if (!suppressFinishActions) {\n var clearOtherNodes = newValue && (clearSelection || !this.gridOptionsWrapper.isRowSelectionMulti());\n if (clearOtherNodes) {\n updatedCount += this.selectionController.clearOtherNodes(this);\n }\n // only if we selected something, then update groups and fire events\n if (updatedCount > 0) {\n this.selectionController.updateGroupsFromChildrenSelections();\n // this is the very end of the 'action node', so we are finished all the updates,\n // include any parent / child changes that this method caused\n var event_1 = {\n type: events_1.Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.mainEventService.dispatchEvent(event_1);\n }\n // so if user next does shift-select, we know where to start the selection from\n if (newValue) {\n this.selectionController.setLastSelectedNode(this);\n }\n }\n return updatedCount;\n };\n // selects all rows between this node and the last selected node (or the top if this is the first selection).\n // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by\n // holding down 'shift'.\n RowNode.prototype.doRowRangeSelection = function () {\n var updatedCount = 0;\n var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n var lastSelectedNode = this.selectionController.getLastSelectedNode();\n var nodesToSelect = this.rowModel.getNodesInRangeForSelection(this, lastSelectedNode);\n nodesToSelect.forEach(function (rowNode) {\n if (rowNode.group && groupsSelectChildren) {\n return;\n }\n var nodeWasSelected = rowNode.selectThisNode(true);\n if (nodeWasSelected) {\n updatedCount++;\n }\n });\n this.selectionController.updateGroupsFromChildrenSelections();\n var event = {\n type: events_1.Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.mainEventService.dispatchEvent(event);\n return updatedCount;\n };\n RowNode.prototype.isParentOfNode = function (potentialParent) {\n var parentNode = this.parent;\n while (parentNode) {\n if (parentNode === potentialParent) {\n return true;\n }\n parentNode = parentNode.parent;\n }\n return false;\n };\n RowNode.prototype.selectThisNode = function (newValue) {\n if (!this.selectable || this.selected === newValue) {\n return false;\n }\n this.selected = newValue;\n if (this.eventService) {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_SELECTED));\n }\n var event = this.createGlobalRowEvent(events_1.Events.EVENT_ROW_SELECTED);\n this.mainEventService.dispatchEvent(event);\n return true;\n };\n RowNode.prototype.selectChildNodes = function (newValue, groupSelectsFiltered) {\n var children = groupSelectsFiltered ? this.childrenAfterFilter : this.childrenAfterGroup;\n var updatedCount = 0;\n if (utils_1._.missing(children)) {\n return;\n }\n for (var i = 0; i < children.length; i++) {\n updatedCount += children[i].setSelectedParams({\n newValue: newValue,\n clearSelection: false,\n suppressFinishActions: true,\n groupSelectsFiltered: groupSelectsFiltered\n });\n }\n return updatedCount;\n };\n RowNode.prototype.addEventListener = function (eventType, listener) {\n if (!this.eventService) {\n this.eventService = new eventService_1.EventService();\n }\n this.eventService.addEventListener(eventType, listener);\n };\n RowNode.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n RowNode.prototype.onMouseEnter = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_ENTER));\n };\n RowNode.prototype.onMouseLeave = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_LEAVE));\n };\n RowNode.prototype.getFirstChildOfFirstChild = function (rowGroupColumn) {\n var currentRowNode = this;\n // if we are hiding groups, then if we are the first child, of the first child,\n // all the way up to the column we are interested in, then we show the group cell.\n var isCandidate = true;\n var foundFirstChildPath = false;\n var nodeToSwapIn;\n while (isCandidate && !foundFirstChildPath) {\n var parentRowNode = currentRowNode.parent;\n var firstChild = utils_1._.exists(parentRowNode) && currentRowNode.firstChild;\n if (firstChild) {\n if (parentRowNode.rowGroupColumn === rowGroupColumn) {\n foundFirstChildPath = true;\n nodeToSwapIn = parentRowNode;\n }\n }\n else {\n isCandidate = false;\n }\n currentRowNode = parentRowNode;\n }\n return foundFirstChildPath ? nodeToSwapIn : null;\n };\n RowNode.OBJECT_ID_SEQUENCE = 0;\n RowNode.EVENT_ROW_SELECTED = 'rowSelected';\n RowNode.EVENT_DATA_CHANGED = 'dataChanged';\n RowNode.EVENT_CELL_CHANGED = 'cellChanged';\n RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED = 'allChildrenCountChanged';\n RowNode.EVENT_MOUSE_ENTER = 'mouseEnter';\n RowNode.EVENT_MOUSE_LEAVE = 'mouseLeave';\n RowNode.EVENT_HEIGHT_CHANGED = 'heightChanged';\n RowNode.EVENT_TOP_CHANGED = 'topChanged';\n RowNode.EVENT_FIRST_CHILD_CHANGED = 'firstChildChanged';\n RowNode.EVENT_LAST_CHILD_CHANGED = 'lastChildChanged';\n RowNode.EVENT_CHILD_INDEX_CHANGED = 'childIndexChanged';\n RowNode.EVENT_ROW_INDEX_CHANGED = 'rowIndexChanged';\n RowNode.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n RowNode.EVENT_SELECTABLE_CHANGED = 'selectableChanged';\n RowNode.EVENT_UI_LEVEL_CHANGED = 'uiLevelChanged';\n RowNode.EVENT_DRAGGING_CHANGED = 'draggingChanged';\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], RowNode.prototype, \"mainEventService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], RowNode.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('selectionController'),\n __metadata(\"design:type\", selectionController_1.SelectionController)\n ], RowNode.prototype, \"selectionController\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], RowNode.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('valueService'),\n __metadata(\"design:type\", valueService_1.ValueService)\n ], RowNode.prototype, \"valueService\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], RowNode.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], RowNode.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired('valueCache'),\n __metadata(\"design:type\", valueCache_1.ValueCache)\n ], RowNode.prototype, \"valueCache\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], RowNode.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], RowNode.prototype, \"gridApi\", void 0);\n return RowNode;\n}());\nexports.RowNode = RowNode;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar context_1 = require(\"../context/context\");\nvar focusedCellController_1 = require(\"../focusedCellController\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar eventService_1 = require(\"../eventService\");\nvar eventKeys_1 = require(\"../eventKeys\");\nvar constants_1 = require(\"../constants\");\nvar RowDragFeature = /** @class */ (function () {\n function RowDragFeature(eContainer, gridPanel) {\n this.eContainer = eContainer;\n this.gridPanel = gridPanel;\n }\n RowDragFeature.prototype.postConstruct = function () {\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.clientSideRowModel = this.rowModel;\n }\n };\n RowDragFeature.prototype.getContainer = function () {\n return this.eContainer;\n };\n RowDragFeature.prototype.isInterestedIn = function (type) {\n return type === dragAndDropService_1.DragSourceType.RowDrag;\n };\n RowDragFeature.prototype.getIconName = function () {\n return dragAndDropService_1.DragAndDropService.ICON_MOVE;\n };\n RowDragFeature.prototype.onDragEnter = function (draggingEvent) {\n // when entering, we fire the enter event, then in onEnterOrDragging,\n // we also fire the move event. so we get both events when entering.\n this.dispatchEvent(eventKeys_1.Events.EVENT_ROW_DRAG_ENTER, draggingEvent);\n this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_MOVE);\n draggingEvent.dragItem.rowNode.setDragging(true);\n this.onEnterOrDragging(draggingEvent);\n };\n RowDragFeature.prototype.onDragging = function (draggingEvent) {\n this.onEnterOrDragging(draggingEvent);\n };\n RowDragFeature.prototype.onEnterOrDragging = function (draggingEvent) {\n // this event is fired for enter and move\n this.dispatchEvent(eventKeys_1.Events.EVENT_ROW_DRAG_MOVE, draggingEvent);\n this.lastDraggingEvent = draggingEvent;\n var pixel = this.normaliseForScroll(draggingEvent.y);\n var managedDrag = this.gridOptionsWrapper.isRowDragManaged();\n if (managedDrag) {\n this.doManagedDrag(draggingEvent, pixel);\n }\n this.checkCenterForScrolling(pixel);\n };\n RowDragFeature.prototype.doManagedDrag = function (draggingEvent, pixel) {\n var rowNode = draggingEvent.dragItem.rowNode;\n var rowWasMoved = this.clientSideRowModel.ensureRowAtPixel(rowNode, pixel);\n if (rowWasMoved) {\n this.focusedCellController.clearFocusedCell();\n if (this.rangeController) {\n this.rangeController.clearSelection();\n }\n }\n };\n RowDragFeature.prototype.normaliseForScroll = function (pixel) {\n var gridPanelHasScrolls = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_NORMAL;\n if (gridPanelHasScrolls) {\n var pixelRange = this.gridPanel.getVScrollPosition();\n return pixel + pixelRange.top;\n }\n else {\n return pixel;\n }\n };\n RowDragFeature.prototype.checkCenterForScrolling = function (pixel) {\n // scroll if the mouse is within 50px of the grid edge\n var pixelRange = this.gridPanel.getVScrollPosition();\n // console.log(`pixelRange = (${pixelRange.top}, ${pixelRange.bottom})`);\n this.needToMoveUp = pixel < (pixelRange.top + 50);\n this.needToMoveDown = pixel > (pixelRange.bottom - 50);\n // console.log(`needToMoveUp = ${this.needToMoveUp} = pixel < (pixelRange.top + 50) = ${pixel} < (${pixelRange.top} + 50)`);\n // console.log(`needToMoveDown = ${this.needToMoveDown} = pixel < (pixelRange.top + 50) = ${pixel} < (${pixelRange.top} + 50)`);\n if (this.needToMoveUp || this.needToMoveDown) {\n this.ensureIntervalStarted();\n }\n else {\n this.ensureIntervalCleared();\n }\n };\n RowDragFeature.prototype.ensureIntervalStarted = function () {\n if (!this.movingIntervalId) {\n this.intervalCount = 0;\n this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);\n }\n };\n RowDragFeature.prototype.ensureIntervalCleared = function () {\n if (this.moveInterval) {\n window.clearInterval(this.movingIntervalId);\n this.movingIntervalId = null;\n }\n };\n RowDragFeature.prototype.moveInterval = function () {\n // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow\n // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.\n var pixelsToMove;\n this.intervalCount++;\n pixelsToMove = 10 + (this.intervalCount * 5);\n if (pixelsToMove > 100) {\n pixelsToMove = 100;\n }\n var pixelsMoved;\n if (this.needToMoveDown) {\n pixelsMoved = this.gridPanel.scrollVertically(pixelsToMove);\n }\n else if (this.needToMoveUp) {\n pixelsMoved = this.gridPanel.scrollVertically(-pixelsToMove);\n }\n if (pixelsMoved !== 0) {\n this.onDragging(this.lastDraggingEvent);\n }\n };\n // i tried using generics here with this:\n // public createEvent(type: string, clazz: {new(): T; }, draggingEvent: DraggingEvent) {\n // but it didn't work - i think it's because it only works with classes, and not interfaces, (the events are interfaces)\n RowDragFeature.prototype.dispatchEvent = function (type, draggingEvent) {\n var yNormalised = this.normaliseForScroll(draggingEvent.y);\n var overIndex = -1;\n var overNode = null;\n var mouseIsPastLastRow = yNormalised > this.rowModel.getCurrentPageHeight();\n if (!mouseIsPastLastRow) {\n overIndex = this.rowModel.getRowIndexAtPixel(yNormalised);\n overNode = this.rowModel.getRow(overIndex);\n }\n var vDirectionString;\n switch (draggingEvent.vDirection) {\n case dragAndDropService_1.VDirection.Down:\n vDirectionString = 'down';\n break;\n case dragAndDropService_1.VDirection.Up:\n vDirectionString = 'up';\n break;\n default:\n vDirectionString = null;\n break;\n }\n var event = {\n type: type,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n event: draggingEvent.event,\n node: draggingEvent.dragItem.rowNode,\n overIndex: overIndex,\n overNode: overNode,\n y: yNormalised,\n vDirection: vDirectionString\n };\n this.eventService.dispatchEvent(event);\n };\n RowDragFeature.prototype.onDragLeave = function (draggingEvent) {\n this.dispatchEvent(eventKeys_1.Events.EVENT_ROW_DRAG_LEAVE, draggingEvent);\n this.stopDragging(draggingEvent);\n };\n RowDragFeature.prototype.onDragStop = function (draggingEvent) {\n this.dispatchEvent(eventKeys_1.Events.EVENT_ROW_DRAG_END, draggingEvent);\n this.stopDragging(draggingEvent);\n };\n RowDragFeature.prototype.stopDragging = function (draggingEvent) {\n this.ensureIntervalCleared();\n draggingEvent.dragItem.rowNode.setDragging(false);\n };\n __decorate([\n context_1.Autowired('dragAndDropService'),\n __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n ], RowDragFeature.prototype, \"dragAndDropService\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], RowDragFeature.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('focusedCellController'),\n __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n ], RowDragFeature.prototype, \"focusedCellController\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], RowDragFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Optional('rangeController'),\n __metadata(\"design:type\", Object)\n ], RowDragFeature.prototype, \"rangeController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], RowDragFeature.prototype, \"eventService\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], RowDragFeature.prototype, \"postConstruct\", null);\n return RowDragFeature;\n}());\nexports.RowDragFeature = RowDragFeature;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BaseComponentWrapper = /** @class */ (function () {\n function BaseComponentWrapper() {\n }\n BaseComponentWrapper.prototype.wrap = function (OriginalConstructor, mandatoryMethodList, optionalMethodList, componentName) {\n var _this = this;\n if (optionalMethodList === void 0) { optionalMethodList = []; }\n var wrapper = this.createWrapper(OriginalConstructor, componentName);\n mandatoryMethodList.forEach((function (methodName) {\n _this.createMethod(wrapper, methodName, true);\n }));\n optionalMethodList.forEach((function (methodName) {\n _this.createMethod(wrapper, methodName, false);\n }));\n return wrapper;\n };\n BaseComponentWrapper.prototype.createMethod = function (wrapper, methodName, mandatory) {\n wrapper.addMethod(methodName, this.createMethodProxy(wrapper, methodName, mandatory));\n };\n BaseComponentWrapper.prototype.createMethodProxy = function (wrapper, methodName, mandatory) {\n return function () {\n if (wrapper.hasMethod(methodName)) {\n return wrapper.callMethod(methodName, arguments);\n }\n if (mandatory) {\n console.warn('ag-Grid: Framework component is missing the method ' + methodName + '()');\n }\n return null;\n };\n };\n return BaseComponentWrapper;\n}());\nexports.BaseComponentWrapper = BaseComponentWrapper;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridRow_1 = require(\"./gridRow\");\nvar utils_1 = require(\"../utils\");\nvar GridCell = /** @class */ (function () {\n function GridCell(gridCellDef) {\n this.rowIndex = gridCellDef.rowIndex;\n this.column = gridCellDef.column;\n this.floating = utils_1._.makeNull(gridCellDef.floating);\n }\n GridCell.prototype.getGridCellDef = function () {\n return {\n rowIndex: this.rowIndex,\n column: this.column,\n floating: this.floating\n };\n };\n GridCell.prototype.getGridRow = function () {\n return new gridRow_1.GridRow(this.rowIndex, this.floating);\n };\n GridCell.prototype.toString = function () {\n return \"rowIndex = \" + this.rowIndex + \", floating = \" + this.floating + \", column = \" + (this.column ? this.column.getId() : null);\n };\n GridCell.prototype.createId = function () {\n return this.rowIndex + \".\" + this.floating + \".\" + this.column.getId();\n };\n GridCell.prototype.equals = function (other) {\n var colsMatch = this.column === other.column;\n var floatingMatch = this.floating === other.floating;\n var indexMatch = this.rowIndex === other.rowIndex;\n return colsMatch && floatingMatch && indexMatch;\n };\n return GridCell;\n}());\nexports.GridCell = GridCell;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar textCellEditor_1 = require(\"./textCellEditor\");\nvar PopupTextCellEditor = /** @class */ (function (_super) {\n __extends(PopupTextCellEditor, _super);\n function PopupTextCellEditor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupTextCellEditor.prototype.isPopup = function () {\n return true;\n };\n return PopupTextCellEditor;\n}(textCellEditor_1.TextCellEditor));\nexports.PopupTextCellEditor = PopupTextCellEditor;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar utils_1 = require(\"../../utils\");\nvar ARROW_UP = '\\u2191';\nvar ARROW_DOWN = '\\u2193';\nvar AnimateShowChangeCellRenderer = /** @class */ (function (_super) {\n __extends(AnimateShowChangeCellRenderer, _super);\n function AnimateShowChangeCellRenderer() {\n var _this = _super.call(this, AnimateShowChangeCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n return _this;\n }\n AnimateShowChangeCellRenderer.prototype.init = function (params) {\n // this.params = params;\n this.eValue = this.queryForHtmlElement('.ag-value-change-value');\n this.eDelta = this.queryForHtmlElement('.ag-value-change-delta');\n this.refresh(params);\n };\n AnimateShowChangeCellRenderer.prototype.showDelta = function (params, delta) {\n var absDelta = Math.abs(delta);\n var valueFormatted = params.formatValue(absDelta);\n var valueToUse = utils_1._.exists(valueFormatted) ? valueFormatted : absDelta;\n var deltaUp = (delta >= 0);\n if (deltaUp) {\n this.eDelta.innerHTML = ARROW_UP + valueToUse;\n }\n else {\n // because negative, use ABS to remove sign\n this.eDelta.innerHTML = ARROW_DOWN + valueToUse;\n }\n // class makes it green (in ag-fresh)\n utils_1._.addOrRemoveCssClass(this.eDelta, 'ag-value-change-delta-up', deltaUp);\n // class makes it red (in ag-fresh)\n utils_1._.addOrRemoveCssClass(this.eDelta, 'ag-value-change-delta-down', !deltaUp);\n };\n AnimateShowChangeCellRenderer.prototype.setTimerToRemoveDelta = function () {\n var _this = this;\n // the refreshCount makes sure that if the value updates again while\n // the below timer is waiting, then the below timer will realise it\n // is not the most recent and will not try to remove the delta value.\n this.refreshCount++;\n var refreshCountCopy = this.refreshCount;\n window.setTimeout(function () {\n if (refreshCountCopy === _this.refreshCount) {\n _this.hideDeltaValue();\n }\n }, 2000);\n };\n AnimateShowChangeCellRenderer.prototype.hideDeltaValue = function () {\n utils_1._.removeCssClass(this.eValue, 'ag-value-change-value-highlight');\n utils_1._.clearElement(this.eDelta);\n };\n AnimateShowChangeCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (value === this.lastValue) {\n return;\n }\n if (utils_1._.exists(params.valueFormatted)) {\n this.eValue.innerHTML = params.valueFormatted;\n }\n else if (utils_1._.exists(params.value)) {\n this.eValue.innerHTML = value;\n }\n else {\n utils_1._.clearElement(this.eValue);\n }\n if (typeof value === 'number' && typeof this.lastValue === 'number') {\n var delta = value - this.lastValue;\n this.showDelta(params, delta);\n }\n // highlight the current value, but only if it's not new, otherwise it\n // would get highlighted first time the value is shown\n if (this.lastValue) {\n utils_1._.addCssClass(this.eValue, 'ag-value-change-value-highlight');\n }\n this.setTimerToRemoveDelta();\n this.lastValue = value;\n return true;\n };\n AnimateShowChangeCellRenderer.TEMPLATE = '' +\n '' +\n '' +\n '';\n return AnimateShowChangeCellRenderer;\n}(component_1.Component));\nexports.AnimateShowChangeCellRenderer = AnimateShowChangeCellRenderer;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar BodyDropPivotTarget = /** @class */ (function () {\n function BodyDropPivotTarget(pinned) {\n this.columnsToAggregate = [];\n this.columnsToGroup = [];\n this.columnsToPivot = [];\n this.pinned = pinned;\n }\n /** Callback for when drag enters */\n BodyDropPivotTarget.prototype.onDragEnter = function (draggingEvent) {\n var _this = this;\n this.clearColumnsList();\n // in pivot mode, we don't accept any drops if functions are read only\n if (this.gridOptionsWrapper.isFunctionsReadOnly()) {\n return;\n }\n var dragColumns = draggingEvent.dragItem.columns;\n dragColumns.forEach(function (column) {\n // we don't allow adding secondary columns\n if (!column.isPrimary()) {\n return;\n }\n if (column.isAnyFunctionActive()) {\n return;\n }\n if (column.isAllowValue()) {\n _this.columnsToAggregate.push(column);\n }\n else if (column.isAllowRowGroup()) {\n _this.columnsToGroup.push(column);\n }\n else if (column.isAllowRowGroup()) {\n _this.columnsToPivot.push(column);\n }\n });\n };\n BodyDropPivotTarget.prototype.getIconName = function () {\n var totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;\n if (totalColumns > 0) {\n return this.pinned ? dragAndDropService_1.DragAndDropService.ICON_PINNED : dragAndDropService_1.DragAndDropService.ICON_MOVE;\n }\n else {\n return null;\n }\n };\n /** Callback for when drag leaves */\n BodyDropPivotTarget.prototype.onDragLeave = function (draggingEvent) {\n // if we are taking columns out of the center, then we remove them from the report\n this.clearColumnsList();\n };\n BodyDropPivotTarget.prototype.clearColumnsList = function () {\n this.columnsToAggregate.length = 0;\n this.columnsToGroup.length = 0;\n this.columnsToPivot.length = 0;\n };\n /** Callback for when dragging */\n BodyDropPivotTarget.prototype.onDragging = function (draggingEvent) {\n };\n /** Callback for when drag stops */\n BodyDropPivotTarget.prototype.onDragStop = function (draggingEvent) {\n if (this.columnsToAggregate.length > 0) {\n this.columnController.addValueColumns(this.columnsToAggregate, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToGroup.length > 0) {\n this.columnController.addRowGroupColumns(this.columnsToGroup, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToPivot.length > 0) {\n this.columnController.addPivotColumns(this.columnsToPivot, \"toolPanelDragAndDrop\");\n }\n };\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], BodyDropPivotTarget.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], BodyDropPivotTarget.prototype, \"gridOptionsWrapper\", void 0);\n return BodyDropPivotTarget;\n}());\nexports.BodyDropPivotTarget = BodyDropPivotTarget;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar selectionController_1 = require(\"./selectionController\");\nvar columnApi_1 = require(\"./columnController/columnApi\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar rowRenderer_1 = require(\"./rendering/rowRenderer\");\nvar headerRootComp_1 = require(\"./headerRendering/headerRootComp\");\nvar filterManager_1 = require(\"./filter/filterManager\");\nvar valueService_1 = require(\"./valueService/valueService\");\nvar eventService_1 = require(\"./eventService\");\nvar gridPanel_1 = require(\"./gridPanel/gridPanel\");\nvar gridApi_1 = require(\"./gridApi\");\nvar columnFactory_1 = require(\"./columnController/columnFactory\");\nvar displayedGroupCreator_1 = require(\"./columnController/displayedGroupCreator\");\nvar expressionService_1 = require(\"./valueService/expressionService\");\nvar templateService_1 = require(\"./templateService\");\nvar popupService_1 = require(\"./widgets/popupService\");\nvar logger_1 = require(\"./logger\");\nvar columnUtils_1 = require(\"./columnController/columnUtils\");\nvar autoWidthCalculator_1 = require(\"./rendering/autoWidthCalculator\");\nvar horizontalResizeService_1 = require(\"./headerRendering/horizontalResizeService\");\nvar context_1 = require(\"./context/context\");\nvar csvCreator_1 = require(\"./exporter/csvCreator\");\nvar gridCore_1 = require(\"./gridCore\");\nvar standardMenu_1 = require(\"./headerRendering/standardMenu\");\nvar dragAndDropService_1 = require(\"./dragAndDrop/dragAndDropService\");\nvar dragService_1 = require(\"./dragAndDrop/dragService\");\nvar sortController_1 = require(\"./sortController\");\nvar focusedCellController_1 = require(\"./focusedCellController\");\nvar mouseEventService_1 = require(\"./gridPanel/mouseEventService\");\nvar cellNavigationService_1 = require(\"./cellNavigationService\");\nvar filterStage_1 = require(\"./rowModels/clientSide/filterStage\");\nvar sortStage_1 = require(\"./rowModels/clientSide/sortStage\");\nvar flattenStage_1 = require(\"./rowModels/clientSide/flattenStage\");\nvar events_1 = require(\"./events\");\nvar infiniteRowModel_1 = require(\"./rowModels/infinite/infiniteRowModel\");\nvar clientSideRowModel_1 = require(\"./rowModels/clientSide/clientSideRowModel\");\nvar cellRendererFactory_1 = require(\"./rendering/cellRendererFactory\");\nvar valueFormatterService_1 = require(\"./rendering/valueFormatterService\");\nvar agCheckbox_1 = require(\"./widgets/agCheckbox\");\nvar baseFrameworkFactory_1 = require(\"./baseFrameworkFactory\");\nvar scrollVisibleService_1 = require(\"./gridPanel/scrollVisibleService\");\nvar downloader_1 = require(\"./exporter/downloader\");\nvar xmlFactory_1 = require(\"./exporter/xmlFactory\");\nvar gridSerializer_1 = require(\"./exporter/gridSerializer\");\nvar stylingService_1 = require(\"./styling/stylingService\");\nvar columnHoverService_1 = require(\"./rendering/columnHoverService\");\nvar columnAnimationService_1 = require(\"./rendering/columnAnimationService\");\nvar sortService_1 = require(\"./rowNodes/sortService\");\nvar filterService_1 = require(\"./rowNodes/filterService\");\nvar autoGroupColService_1 = require(\"./columnController/autoGroupColService\");\nvar paginationProxy_1 = require(\"./rowModels/paginationProxy\");\nvar immutableService_1 = require(\"./rowModels/clientSide/immutableService\");\nvar constants_1 = require(\"./constants\");\nvar valueCache_1 = require(\"./valueService/valueCache\");\nvar changeDetectionService_1 = require(\"./valueService/changeDetectionService\");\nvar alignedGridsService_1 = require(\"./alignedGridsService\");\nvar pinnedRowModel_1 = require(\"./rowModels/pinnedRowModel\");\nvar userComponentFactory_1 = require(\"./components/framework/userComponentFactory\");\nvar userComponentRegistry_1 = require(\"./components/framework/userComponentRegistry\");\nvar agComponentUtils_1 = require(\"./components/framework/agComponentUtils\");\nvar componentMetadataProvider_1 = require(\"./components/framework/componentMetadataProvider\");\nvar beans_1 = require(\"./rendering/beans\");\nvar environment_1 = require(\"./environment\");\nvar animationFrameService_1 = require(\"./misc/animationFrameService\");\nvar navigationService_1 = require(\"./gridPanel/navigationService\");\nvar maxDivHeightScaler_1 = require(\"./rendering/maxDivHeightScaler\");\nvar selectableService_1 = require(\"./rowNodes/selectableService\");\nvar autoHeightCalculator_1 = require(\"./rendering/autoHeightCalculator\");\nvar paginationComp_1 = require(\"./rowModels/pagination/paginationComp\");\nvar resizeObserverService_1 = require(\"./misc/resizeObserverService\");\nvar zipContainer_1 = require(\"./exporter/files/zip/zipContainer\");\nvar utils_1 = require(\"./utils\");\nvar tooltipManager_1 = require(\"./widgets/tooltipManager\");\nvar overlayWrapperComponent_1 = require(\"./rendering/overlays/overlayWrapperComponent\");\nvar Grid = /** @class */ (function () {\n function Grid(eGridDiv, gridOptions, params) {\n if (!eGridDiv) {\n console.error('ag-Grid: no div element provided to the grid');\n }\n if (!gridOptions) {\n console.error('ag-Grid: no gridOptions provided to the grid');\n }\n this.gridOptions = gridOptions;\n var rowModelClass = this.getRowModelClass(gridOptions);\n var enterprise = utils_1._.exists(Grid.enterpriseBeans);\n var frameworkFactory = params ? params.frameworkFactory : null;\n if (utils_1._.missing(frameworkFactory)) {\n frameworkFactory = new baseFrameworkFactory_1.BaseFrameworkFactory();\n }\n var overrideBeans = [];\n if (Grid.enterpriseBeans) {\n overrideBeans = overrideBeans.concat(Grid.enterpriseBeans);\n }\n if (Grid.frameworkBeans) {\n overrideBeans = overrideBeans.concat(Grid.frameworkBeans);\n }\n var seed = {\n enterprise: enterprise,\n gridOptions: gridOptions,\n eGridDiv: eGridDiv,\n $scope: params ? params.$scope : null,\n $compile: params ? params.$compile : null,\n quickFilterOnScope: params ? params.quickFilterOnScope : null,\n globalEventListener: params ? params.globalEventListener : null,\n frameworkFactory: frameworkFactory\n };\n if (params && params.seedBeanInstances) {\n utils_1._.assign(seed, params.seedBeanInstances);\n }\n var components = [\n { componentName: 'AgCheckbox', theClass: agCheckbox_1.AgCheckbox },\n { componentName: 'AgGridComp', theClass: gridPanel_1.GridPanel },\n { componentName: 'AgHeaderRoot', theClass: headerRootComp_1.HeaderRootComp },\n { componentName: 'AgPagination', theClass: paginationComp_1.PaginationComp },\n { componentName: 'AgOverlayWrapper', theClass: overlayWrapperComponent_1.OverlayWrapperComponent }\n ];\n if (Grid.enterpriseComponents) {\n components = components.concat(Grid.enterpriseComponents);\n }\n var contextParams = {\n overrideBeans: overrideBeans,\n seed: seed,\n //Careful with the order of the beans here, there are dependencies between them that need to be kept\n beans: [\n // this should only contain SERVICES, it should NEVER contain COMPONENTS\n rowModelClass, beans_1.Beans, paginationProxy_1.PaginationAutoPageSizeService, gridApi_1.GridApi, userComponentRegistry_1.UserComponentRegistry, agComponentUtils_1.AgComponentUtils,\n componentMetadataProvider_1.ComponentMetadataProvider, resizeObserverService_1.ResizeObserverService, userComponentRegistry_1.UserComponentRegistry, userComponentFactory_1.UserComponentFactory,\n maxDivHeightScaler_1.MaxDivHeightScaler, autoHeightCalculator_1.AutoHeightCalculator, cellRendererFactory_1.CellRendererFactory, horizontalResizeService_1.HorizontalResizeService,\n pinnedRowModel_1.PinnedRowModel, dragService_1.DragService, displayedGroupCreator_1.DisplayedGroupCreator, eventService_1.EventService, gridOptionsWrapper_1.GridOptionsWrapper, popupService_1.PopupService,\n selectionController_1.SelectionController, filterManager_1.FilterManager, columnController_1.ColumnController, paginationProxy_1.PaginationProxy, rowRenderer_1.RowRenderer, expressionService_1.ExpressionService,\n columnFactory_1.ColumnFactory, csvCreator_1.CsvCreator, downloader_1.Downloader, xmlFactory_1.XmlFactory, gridSerializer_1.GridSerializer, templateService_1.TemplateService, alignedGridsService_1.AlignedGridsService,\n navigationService_1.NavigationService, popupService_1.PopupService, valueCache_1.ValueCache, valueService_1.ValueService, logger_1.LoggerFactory, columnUtils_1.ColumnUtils, autoWidthCalculator_1.AutoWidthCalculator,\n standardMenu_1.StandardMenuFactory, dragAndDropService_1.DragAndDropService, columnApi_1.ColumnApi, focusedCellController_1.FocusedCellController, mouseEventService_1.MouseEventService, environment_1.Environment,\n cellNavigationService_1.CellNavigationService, filterStage_1.FilterStage, sortStage_1.SortStage, flattenStage_1.FlattenStage, filterService_1.FilterService,\n valueFormatterService_1.ValueFormatterService, stylingService_1.StylingService, scrollVisibleService_1.ScrollVisibleService, sortController_1.SortController,\n columnHoverService_1.ColumnHoverService, columnAnimationService_1.ColumnAnimationService, sortService_1.SortService, selectableService_1.SelectableService, autoGroupColService_1.AutoGroupColService,\n immutableService_1.ImmutableService, changeDetectionService_1.ChangeDetectionService, animationFrameService_1.AnimationFrameService, tooltipManager_1.TooltipManager, zipContainer_1.ZipContainer\n ],\n components: components,\n enterpriseDefaultComponents: Grid.enterpriseDefaultComponents,\n debug: !!gridOptions.debug\n };\n this.logger = new logger_1.Logger('ag-Grid', function () { return gridOptions.debug; });\n var contextLogger = new logger_1.Logger('Context', function () { return contextParams.debug; });\n this.context = new context_1.Context(contextParams, contextLogger);\n var gridCore = new gridCore_1.GridCore();\n this.context.wireBean(gridCore);\n this.setColumnsAndData();\n this.dispatchGridReadyEvent(gridOptions);\n this.logger.log(\"initialised successfully, enterprise = \" + enterprise);\n }\n Grid.setEnterpriseBeans = function (enterpriseBeans, rowModelClasses) {\n this.enterpriseBeans = enterpriseBeans;\n // the enterprise can inject additional row models. this is how it injects the viewportRowModel\n utils_1._.iterateObject(rowModelClasses, function (key, value) { return Grid.RowModelClasses[key] = value; });\n };\n Grid.setEnterpriseComponents = function (components) {\n this.enterpriseComponents = components;\n };\n Grid.setFrameworkBeans = function (frameworkBeans) {\n this.frameworkBeans = frameworkBeans;\n };\n Grid.setEnterpriseDefaultComponents = function (enterpriseDefaultComponents) {\n this.enterpriseDefaultComponents = enterpriseDefaultComponents;\n };\n Grid.prototype.setColumnsAndData = function () {\n var gridOptionsWrapper = this.context.getBean('gridOptionsWrapper');\n var columnController = this.context.getBean('columnController');\n var rowModel = this.context.getBean('rowModel');\n var columnDefs = gridOptionsWrapper.getColumnDefs();\n var rowData = gridOptionsWrapper.getRowData();\n var nothingToSet = utils_1._.missing(columnDefs) && utils_1._.missing(rowData);\n if (nothingToSet) {\n return;\n }\n if (utils_1._.exists(columnDefs)) {\n columnController.setColumnDefs(columnDefs, \"gridInitializing\");\n }\n if (utils_1._.exists(rowData) && rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n var clientSideRowModel = rowModel;\n clientSideRowModel.setRowData(rowData);\n }\n };\n Grid.prototype.dispatchGridReadyEvent = function (gridOptions) {\n var eventService = this.context.getBean('eventService');\n var readyEvent = {\n type: events_1.Events.EVENT_GRID_READY,\n api: gridOptions.api,\n columnApi: gridOptions.columnApi\n };\n eventService.dispatchEvent(readyEvent);\n };\n Grid.prototype.getRowModelClass = function (gridOptions) {\n var rowModelType = gridOptions.rowModelType;\n //TODO: temporary measure before 'enterprise' is completely removed (similar handling in gridOptionsWrapper is also required)\n rowModelType = rowModelType === 'enterprise' ? constants_1.Constants.ROW_MODEL_TYPE_SERVER_SIDE : rowModelType;\n if (utils_1._.exists(rowModelType)) {\n var rowModelClass = Grid.RowModelClasses[rowModelType];\n if (utils_1._.exists(rowModelClass)) {\n return rowModelClass;\n }\n else {\n if (rowModelType === 'normal') {\n console.warn(\"ag-Grid: normal rowModel deprecated. Should now be called client side row model instead.\");\n return clientSideRowModel_1.ClientSideRowModel;\n }\n console.error('ag-Grid: could not find matching row model for rowModelType ' + rowModelType);\n if (rowModelType === constants_1.Constants.ROW_MODEL_TYPE_VIEWPORT) {\n console.error('ag-Grid: rowModelType viewport is only available in ag-Grid Enterprise');\n }\n if (rowModelType === constants_1.Constants.ROW_MODEL_TYPE_SERVER_SIDE) {\n console.error('ag-Grid: rowModelType server side is only available in ag-Grid Enterprise');\n }\n }\n }\n return clientSideRowModel_1.ClientSideRowModel;\n };\n Grid.prototype.destroy = function () {\n this.gridOptions.api.destroy();\n };\n // the default is ClientSideRowModel, which is also used for pagination.\n // the enterprise adds viewport to this list.\n Grid.RowModelClasses = {\n infinite: infiniteRowModel_1.InfiniteRowModel,\n clientSide: clientSideRowModel_1.ClientSideRowModel\n };\n return Grid;\n}());\nexports.Grid = Grid;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar logger_1 = require(\"./logger\");\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar utils_1 = require(\"./utils\");\nvar EventService = /** @class */ (function () {\n function EventService() {\n this.allSyncListeners = {};\n this.allAsyncListeners = {};\n this.globalSyncListeners = [];\n this.globalAsyncListeners = [];\n this.asyncFunctionsQueue = [];\n this.scheduled = false;\n this.firedEvents = {};\n }\n EventService_1 = EventService;\n // because this class is used both inside the context and outside the context, we do not\n // use autowired attributes, as that would be confusing, as sometimes the attributes\n // would be wired, and sometimes not.\n //\n // the global event servers used by ag-Grid is autowired by the context once, and this\n // setBeans method gets called once.\n //\n // the times when this class is used outside of the context (eg RowNode has an instance of this\n // class) then it is not a bean, and this setBeans method is not called.\n EventService.prototype.setBeans = function (loggerFactory, gridOptionsWrapper, globalEventListener) {\n if (globalEventListener === void 0) { globalEventListener = null; }\n this.logger = loggerFactory.create('EventService');\n if (globalEventListener) {\n var async = gridOptionsWrapper.useAsyncEvents();\n this.addGlobalListener(globalEventListener, async);\n }\n };\n EventService.prototype.getListenerList = function (eventType, async) {\n var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n var listenerList = listenerMap[eventType];\n if (!listenerList) {\n listenerList = [];\n listenerMap[eventType] = listenerList;\n }\n return listenerList;\n };\n EventService.prototype.addEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n var listenerList = this.getListenerList(eventType, async);\n if (listenerList.indexOf(listener) < 0) {\n listenerList.push(listener);\n }\n };\n // for some events, it's important that the model gets to hear about them before the view,\n // as the model may need to update before the view works on the info. if you register\n // via this method, you get notified before the view parts\n EventService.prototype.addModalPriorityEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n this.addEventListener(eventType + EventService_1.PRIORITY, listener, async);\n };\n EventService.prototype.addGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n if (async) {\n this.globalAsyncListeners.push(listener);\n }\n else {\n this.globalSyncListeners.push(listener);\n }\n };\n EventService.prototype.removeEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n var listenerList = this.getListenerList(eventType, async);\n utils_1._.removeFromArray(listenerList, listener);\n };\n EventService.prototype.removeGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n if (async) {\n utils_1._.removeFromArray(this.globalAsyncListeners, listener);\n }\n else {\n utils_1._.removeFromArray(this.globalSyncListeners, listener);\n }\n };\n // why do we pass the type here? the type is in ColumnChangeEvent, so unless the\n // type is not in other types of events???\n EventService.prototype.dispatchEvent = function (event) {\n // console.log(`dispatching ${eventType}: ${event}`);\n this.dispatchToListeners(event, true);\n this.dispatchToListeners(event, false);\n this.firedEvents[event.type] = true;\n };\n EventService.prototype.dispatchEventOnce = function (event) {\n if (!this.firedEvents[event.type]) {\n this.dispatchEvent(event);\n }\n };\n EventService.prototype.dispatchToListeners = function (event, async) {\n var _this = this;\n var globalListeners = async ? this.globalAsyncListeners : this.globalSyncListeners;\n var eventType = event.type;\n // this allows the columnController to get events before anyone else\n var p1ListenerList = this.getListenerList(eventType + EventService_1.PRIORITY, async);\n utils_1._.forEachSnapshotFirst(p1ListenerList, function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(event); });\n }\n else {\n listener(event);\n }\n });\n var listenerList = this.getListenerList(eventType, async);\n utils_1._.forEachSnapshotFirst(listenerList, function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(event); });\n }\n else {\n listener(event);\n }\n });\n utils_1._.forEachSnapshotFirst(globalListeners, function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(eventType, event); });\n }\n else {\n listener(eventType, event);\n }\n });\n };\n // this gets called inside the grid's thread, for each event that it\n // wants to set async. the grid then batches the events into one setTimeout()\n // because setTimeout() is an expensive operation. ideally we would have\n // each event in it's own setTimeout(), but we batch for performance.\n EventService.prototype.dispatchAsync = function (func) {\n // add to the queue for executing later in the next VM turn\n this.asyncFunctionsQueue.push(func);\n // check if timeout is already scheduled. the first time the grid calls\n // this within it's thread turn, this should be false, so it will schedule\n // the 'flush queue' method the first time it comes here. then the flag is\n // set to 'true' so it will know it's already scheduled for subsequent calls.\n if (!this.scheduled) {\n // if not scheduled, schedule one\n window.setTimeout(this.flushAsyncQueue.bind(this), 0);\n // mark that it is scheduled\n this.scheduled = true;\n }\n };\n // this happens in the next VM turn only, and empties the queue of events\n EventService.prototype.flushAsyncQueue = function () {\n this.scheduled = false;\n // we take a copy, because the event listener could be using\n // the grid, which would cause more events, which would be potentially\n // added to the queue, so safe to take a copy, the new events will\n // get executed in a later VM turn rather than risk updating the\n // queue as we are flushing it.\n var queueCopy = this.asyncFunctionsQueue.slice();\n this.asyncFunctionsQueue = [];\n // execute the queue\n queueCopy.forEach(function (func) { return func(); });\n };\n var EventService_1;\n // this is an old idea niall had, should really take it out, was to do with ordering who gets to process\n // events first, to give model and service objects preference over the view\n EventService.PRIORITY = '-P1';\n __decorate([\n __param(0, context_2.Qualifier('loggerFactory')),\n __param(1, context_2.Qualifier('gridOptionsWrapper')),\n __param(2, context_2.Qualifier('globalEventListener')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory,\n gridOptionsWrapper_1.GridOptionsWrapper,\n Function]),\n __metadata(\"design:returntype\", void 0)\n ], EventService.prototype, \"setBeans\", null);\n EventService = EventService_1 = __decorate([\n context_1.Bean('eventService')\n ], EventService);\n return EventService;\n}());\nexports.EventService = EventService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar sortController_1 = require(\"../sortController\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar utils_1 = require(\"../utils\");\nvar SortService = /** @class */ (function () {\n function SortService() {\n }\n SortService.prototype.init = function () {\n this.postSortFunc = this.gridOptionsWrapper.getPostSortFunc();\n };\n SortService.prototype.sort = function (sortOptions, sortActive, deltaSort, dirtyLeafNodes, changedPath, noAggregations) {\n var _this = this;\n var callback = function (rowNode) {\n // we clear out the 'pull down open parents' first, as the values mix up the sorting\n _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterFilter, true);\n // Javascript sort is non deterministic when all the array items are equals, ie Comparator always returns 0,\n // so to ensure the array keeps its order, add an additional sorting condition manually, in this case we\n // are going to inspect the original array position. This is what sortedRowNodes is for.\n if (sortActive) {\n var sortedRowNodes = deltaSort ?\n _this.doDeltaSort(rowNode, sortOptions, dirtyLeafNodes, changedPath, noAggregations)\n : _this.doFullSort(rowNode, sortOptions);\n rowNode.childrenAfterSort = sortedRowNodes.map(function (sorted) { return sorted.rowNode; });\n }\n else {\n rowNode.childrenAfterSort = rowNode.childrenAfterFilter.slice(0);\n }\n _this.updateChildIndexes(rowNode);\n if (_this.postSortFunc) {\n _this.postSortFunc(rowNode.childrenAfterSort);\n }\n };\n changedPath.forEachChangedNodeDepthFirst(callback);\n this.updateGroupDataForHiddenOpenParents(changedPath);\n };\n SortService.prototype.doFullSort = function (rowNode, sortOptions) {\n var sortedRowNodes = rowNode.childrenAfterFilter\n .map(this.mapNodeToSortedNode.bind(this));\n sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n return sortedRowNodes;\n };\n SortService.prototype.mapNodeToSortedNode = function (rowNode, pos) {\n return { currentPos: pos, rowNode: rowNode };\n };\n SortService.prototype.doDeltaSort = function (rowNode, sortOptions, dirtyLeafNodes, changedPath, noAggregations) {\n // clean nodes will be a list of all row nodes that remain in the set\n // and ordered. we start with the old sorted set and take out any nodes\n // that were removed or changed (but not added, added doesn't make sense,\n // if a node was added, there is no way it could be here from last time).\n var cleanNodes = rowNode.childrenAfterSort\n .filter(function (rowNode) {\n // take out all nodes that were changed as part of the current transaction.\n // a changed node could a) be in a different sort position or b) may\n // no longer be in this set as the changed node may not pass filtering,\n // or be in a different group.\n var passesDirtyNodesCheck = !dirtyLeafNodes[rowNode.id];\n // also remove group nodes in the changed path, as they can have different aggregate\n // values which could impact the sort order.\n // note: changed path is not active if a) no value columns or b) no transactions. it is never\n // (b) in deltaSort as we only do deltaSort for transactions. for (a) if no value columns, then\n // there is no value in the group that could of changed (ie no aggregate values)\n var passesChangedPathCheck = noAggregations || changedPath.canSkip(rowNode);\n return passesDirtyNodesCheck && passesChangedPathCheck;\n })\n .map(this.mapNodeToSortedNode.bind(this));\n // for fast access below, we map them\n var cleanNodesMapped = {};\n cleanNodes.forEach(function (sortedRowNode) { return cleanNodesMapped[sortedRowNode.rowNode.id] = sortedRowNode.rowNode; });\n // these are all nodes that need to be placed\n var changedNodes = rowNode.childrenAfterFilter\n // ignore nodes in the clean list\n .filter(function (rowNode) { return !cleanNodesMapped[rowNode.id]; })\n .map(this.mapNodeToSortedNode.bind(this));\n // sort changed nodes. note that we don't need to sort cleanNodes as they are\n // already sorted from last time.\n changedNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n if (changedNodes.length === 0) {\n return cleanNodes;\n }\n else if (cleanNodes.length === 0) {\n return changedNodes;\n }\n else {\n return this.mergeSortedArrays(sortOptions, cleanNodes, changedNodes);\n }\n };\n // Merge two sorted arrays into each other\n SortService.prototype.mergeSortedArrays = function (sortOptions, arr1, arr2) {\n var res = [];\n var i = 0;\n var j = 0;\n // Traverse both array, adding them in order\n while (i < arr1.length && j < arr2.length) {\n // Check if current element of first\n // array is smaller than current element\n // of second array. If yes, store first\n // array element and increment first array\n // index. Otherwise do same with second array\n var compareResult = this.compareRowNodes(sortOptions, arr1[i], arr2[j]);\n if (compareResult < 0) {\n res.push(arr1[i++]);\n }\n else {\n res.push(arr2[j++]);\n }\n }\n // add remaining from arr1\n while (i < arr1.length) {\n res.push(arr1[i++]);\n }\n // add remaining from arr2\n while (j < arr2.length) {\n res.push(arr2[j++]);\n }\n return res;\n };\n SortService.prototype.compareRowNodes = function (sortOptions, sortedNodeA, sortedNodeB) {\n var nodeA = sortedNodeA.rowNode;\n var nodeB = sortedNodeB.rowNode;\n // Iterate columns, return the first that doesn't match\n for (var i = 0, len = sortOptions.length; i < len; i++) {\n var sortOption = sortOptions[i];\n // let compared = compare(nodeA, nodeB, sortOption.column, sortOption.inverter === -1);\n var isInverted = sortOption.inverter === -1;\n var valueA = this.getValue(nodeA, sortOption.column);\n var valueB = this.getValue(nodeB, sortOption.column);\n var comparatorResult = void 0;\n if (sortOption.column.getColDef().comparator) {\n //if comparator provided, use it\n comparatorResult = sortOption.column.getColDef().comparator(valueA, valueB, nodeA, nodeB, isInverted);\n }\n else {\n //otherwise do our own comparison\n comparatorResult = utils_1._.defaultComparator(valueA, valueB, this.gridOptionsWrapper.isAccentedSort());\n }\n if (comparatorResult !== 0) {\n return comparatorResult * sortOption.inverter;\n }\n }\n // All matched, we make is so that the original sort order is kept:\n return sortedNodeA.currentPos - sortedNodeB.currentPos;\n };\n SortService.prototype.getValue = function (nodeA, column) {\n return this.valueService.getValue(column, nodeA);\n };\n SortService.prototype.updateChildIndexes = function (rowNode) {\n if (utils_1._.missing(rowNode.childrenAfterSort)) {\n return;\n }\n var listToSort = rowNode.childrenAfterSort;\n for (var i = 0; i < listToSort.length; i++) {\n var child = listToSort[i];\n var firstChild = i === 0;\n var lastChild = i === rowNode.childrenAfterSort.length - 1;\n child.setFirstChild(firstChild);\n child.setLastChild(lastChild);\n child.setChildIndex(i);\n }\n };\n SortService.prototype.updateGroupDataForHiddenOpenParents = function (changedPath) {\n var _this = this;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n // recurse breadth first over group nodes after sort to 'pull down' group data to child groups\n var callback = function (rowNode) {\n _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterSort, false);\n rowNode.childrenAfterSort.forEach(function (child) {\n if (child.hasChildren()) {\n callback(child);\n }\n });\n };\n changedPath.executeFromRootNode(function (rowNode) { return callback(rowNode); });\n };\n SortService.prototype.pullDownGroupDataForHideOpenParents = function (rowNodes, clearOperation) {\n var _this = this;\n if (utils_1._.missing(rowNodes)) {\n return;\n }\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n rowNodes.forEach(function (childRowNode) {\n var groupDisplayCols = _this.columnController.getGroupDisplayColumns();\n groupDisplayCols.forEach(function (groupDisplayCol) {\n var showRowGroup = groupDisplayCol.getColDef().showRowGroup;\n if (typeof showRowGroup !== 'string') {\n console.error('ag-Grid: groupHideOpenParents only works when specifying specific columns for colDef.showRowGroup');\n return;\n }\n var displayingGroupKey = showRowGroup;\n var rowGroupColumn = _this.columnController.getPrimaryColumn(displayingGroupKey);\n var thisRowNodeMatches = rowGroupColumn === childRowNode.rowGroupColumn;\n if (thisRowNodeMatches) {\n return;\n }\n if (clearOperation) {\n // if doing a clear operation, we clear down the value for every possible group column\n childRowNode.setGroupValue(groupDisplayCol.getId(), null);\n }\n else {\n // if doing a set operation, we set only where the pull down is to occur\n var parentToStealFrom = childRowNode.getFirstChildOfFirstChild(rowGroupColumn);\n if (parentToStealFrom) {\n childRowNode.setGroupValue(groupDisplayCol.getId(), parentToStealFrom.key);\n }\n }\n });\n });\n };\n __decorate([\n context_1.Autowired('sortController'),\n __metadata(\"design:type\", sortController_1.SortController)\n ], SortService.prototype, \"sortController\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], SortService.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('valueService'),\n __metadata(\"design:type\", valueService_1.ValueService)\n ], SortService.prototype, \"valueService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], SortService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], SortService.prototype, \"init\", null);\n SortService = __decorate([\n context_1.Bean('sortService')\n ], SortService);\n return SortService;\n}());\nexports.SortService = SortService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar column_1 = require(\"../entities/column\");\nvar rowNode_1 = require(\"../entities/rowNode\");\nvar constants_1 = require(\"../constants\");\nvar events_1 = require(\"../events\");\nvar gridCell_1 = require(\"../entities/gridCell\");\nvar component_1 = require(\"../widgets/component\");\nvar checkboxSelectionComponent_1 = require(\"./checkboxSelectionComponent\");\nvar rowDragComp_1 = require(\"./rowDragComp\");\nvar popupEditorWrapper_1 = require(\"./cellEditors/popupEditorWrapper\");\nvar utils_1 = require(\"../utils\");\nvar CellComp = /** @class */ (function (_super) {\n __extends(CellComp, _super);\n function CellComp(scope, beans, column, rowNode, rowComp, autoHeightCell, printLayout) {\n var _this = _super.call(this) || this;\n _this.editingCell = false;\n _this.suppressRefreshCell = false;\n _this.scope = null;\n // every time we go into edit mode, or back again, this gets incremented.\n // it's the components way of dealing with the async nature of framework components,\n // so if a framework component takes a while to be created, we know if the object\n // is still relevant when creating is finished. eg we could click edit / un-edit 20\n // times before the first React edit component comes back - we should discard\n // the first 19.\n _this.cellEditorVersion = 0;\n _this.cellRendererVersion = 0;\n _this.scope = scope;\n _this.beans = beans;\n _this.column = column;\n _this.rowNode = rowNode;\n _this.rowComp = rowComp;\n _this.autoHeightCell = autoHeightCell;\n _this.printLayout = printLayout;\n _this.createGridCellVo();\n _this.rangeSelectionEnabled = beans.enterprise && beans.gridOptionsWrapper.isEnableRangeSelection();\n _this.cellFocused = _this.beans.focusedCellController.isCellFocused(_this.gridCell);\n _this.firstRightPinned = _this.column.isFirstRightPinned();\n _this.lastLeftPinned = _this.column.isLastLeftPinned();\n if (_this.rangeSelectionEnabled) {\n _this.rangeCount = _this.beans.rangeController.getCellRangeCount(_this.gridCell);\n }\n _this.getValueAndFormat();\n _this.setUsingWrapper();\n _this.chooseCellRenderer();\n _this.setupColSpan();\n _this.rowSpan = _this.column.getRowSpan(_this.rowNode);\n return _this;\n }\n CellComp.prototype.getCreateTemplate = function () {\n var unselectable = !this.beans.gridOptionsWrapper.isEnableCellTextSelection() ? 'unselectable=\"on\"' : '';\n var templateParts = [];\n var col = this.column;\n var width = this.getCellWidth();\n var left = this.modifyLeftForPrintLayout(col.getLeft());\n var valueToRender = this.getInitialValueToRender();\n var valueSanitised = utils_1._.get(this.column, 'colDef.template', null) ? valueToRender : utils_1._.escape(valueToRender);\n this.tooltip = this.getToolTip();\n var tooltipSanitised = utils_1._.escape(this.tooltip);\n var colIdSanitised = utils_1._.escape(col.getId());\n var wrapperStartTemplate = '';\n var wrapperEndTemplate = '';\n var stylesFromColDef = this.preProcessStylesFromColDef();\n var cssClasses = this.getInitialCssClasses();\n var stylesForRowSpanning = this.getStylesForRowSpanning();\n if (this.usingWrapper) {\n wrapperStartTemplate = \"\";\n wrapperEndTemplate = '';\n }\n templateParts.push(\"\");\n templateParts.push(wrapperStartTemplate);\n if (utils_1._.exists(valueSanitised, true)) {\n templateParts.push(valueSanitised);\n }\n templateParts.push(wrapperEndTemplate);\n templateParts.push(\"
\");\n return templateParts.join('');\n };\n CellComp.prototype.getStylesForRowSpanning = function () {\n if (this.rowSpan === 1) {\n return '';\n }\n var singleRowHeight = this.beans.gridOptionsWrapper.getRowHeightAsNumber();\n var totalRowHeight = singleRowHeight * this.rowSpan;\n return \"height: \" + totalRowHeight + \"px; z-index: 1;\";\n };\n CellComp.prototype.afterAttached = function () {\n var querySelector = \"[comp-id=\\\"\" + this.getCompId() + \"\\\"]\";\n var eGui = this.eParentRow.querySelector(querySelector);\n this.setGui(eGui);\n // all of these have dependencies on the eGui, so only do them after eGui is set\n this.addDomData();\n this.populateTemplate();\n this.attachCellRenderer();\n this.angular1Compile();\n this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_CELL_FOCUSED, this.onCellFocused.bind(this));\n this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_FLASH_CELLS, this.onFlashCells.bind(this));\n this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_COLUMN_HOVER_CHANGED, this.onColumnHover.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_CELL_CHANGED, this.onCellChanged.bind(this));\n this.addDestroyableEventListener(this.column, column_1.Column.EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));\n this.addDestroyableEventListener(this.column, column_1.Column.EVENT_WIDTH_CHANGED, this.onWidthChanged.bind(this));\n this.addDestroyableEventListener(this.column, column_1.Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, this.onFirstRightPinnedChanged.bind(this));\n this.addDestroyableEventListener(this.column, column_1.Column.EVENT_LAST_LEFT_PINNED_CHANGED, this.onLastLeftPinnedChanged.bind(this));\n // only for printLayout - because we are rendering all the cells in the same row, regardless of pinned state,\n // then changing the width of the containers will impact left position. eg the center cols all have their\n // left position adjusted by the width of the left pinned column, so if the pinned left column width changes,\n // all the center cols need to be shifted to accommodate this. when in normal layout, the pinned cols are\n // in different containers so doesn't impact.\n if (this.printLayout) {\n this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onLeftChanged.bind(this));\n }\n // if not doing enterprise, then range selection service would be missing\n // so need to check before trying to use it\n if (this.rangeSelectionEnabled) {\n this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_RANGE_SELECTION_CHANGED, this.onRangeSelectionChanged.bind(this));\n }\n if (this.tooltip && !this.beans.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.beans.tooltipManager.registerTooltip(this);\n }\n };\n CellComp.prototype.onColumnHover = function () {\n var isHovered = this.beans.columnHoverService.isHovered(this.column);\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-column-hover', isHovered);\n };\n CellComp.prototype.onCellChanged = function (event) {\n var eventImpactsThisCell = event.column === this.column;\n if (eventImpactsThisCell) {\n this.refreshCell({});\n }\n };\n CellComp.prototype.getCellLeft = function () {\n var mostLeftCol;\n if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n mostLeftCol = this.colsSpanning[this.colsSpanning.length - 1];\n }\n else {\n mostLeftCol = this.column;\n }\n return mostLeftCol.getLeft();\n };\n CellComp.prototype.getCellWidth = function () {\n if (!this.colsSpanning) {\n return this.column.getActualWidth();\n }\n var result = 0;\n this.colsSpanning.forEach(function (col) { return result += col.getActualWidth(); });\n return result;\n };\n CellComp.prototype.onFlashCells = function (event) {\n var cellId = this.gridCell.createId();\n var shouldFlash = event.cells[cellId];\n if (shouldFlash) {\n this.animateCell('highlight');\n }\n };\n CellComp.prototype.setupColSpan = function () {\n // if no col span is active, then we don't set it up, as it would be wasteful of CPU\n if (utils_1._.missing(this.getComponentHolder().colSpan)) {\n return;\n }\n // because we are col spanning, a reorder of the cols can change what cols we are spanning over\n this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayColumnsChanged.bind(this));\n // because we are spanning over multiple cols, we check for width any time any cols width changes.\n // this is expensive - really we should be explicitly checking only the cols we are spanning over\n // instead of every col, however it would be tricky code to track the cols we are spanning over, so\n // because hardly anyone will be using colSpan, am favouring this easier way for more maintainable code.\n this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onWidthChanged.bind(this));\n this.colsSpanning = this.getColSpanningList();\n };\n CellComp.prototype.getColSpanningList = function () {\n var colSpan = this.column.getColSpan(this.rowNode);\n var colsSpanning = [];\n // if just one col, the col span is just the column we are in\n if (colSpan === 1) {\n colsSpanning.push(this.column);\n }\n else {\n var pointer = this.column;\n var pinned = this.column.getPinned();\n for (var i = 0; pointer && i < colSpan; i++) {\n colsSpanning.push(pointer);\n pointer = this.beans.columnController.getDisplayedColAfter(pointer);\n if (!pointer || utils_1._.missing(pointer)) {\n break;\n }\n // we do not allow col spanning to span outside of pinned areas\n if (pinned !== pointer.getPinned()) {\n break;\n }\n }\n }\n return colsSpanning;\n };\n CellComp.prototype.onDisplayColumnsChanged = function () {\n var colsSpanning = this.getColSpanningList();\n if (!utils_1._.compareArrays(this.colsSpanning, colsSpanning)) {\n this.colsSpanning = colsSpanning;\n this.onWidthChanged();\n this.onLeftChanged(); // left changes when doing RTL\n }\n };\n CellComp.prototype.getInitialCssClasses = function () {\n var cssClasses = [\"ag-cell\", \"ag-cell-not-inline-editing\"];\n // if we are putting the cell into a dummy container, to work out it's height,\n // then we don't put the height css in, as we want cell to fit height in that case.\n if (!this.autoHeightCell) {\n cssClasses.push('ag-cell-with-height');\n }\n var doingFocusCss = !this.beans.gridOptionsWrapper.isSuppressCellSelection();\n if (doingFocusCss && this.cellFocused) {\n // otherwise the class depends on the focus state\n cssClasses.push('ag-cell-focus');\n }\n if (this.firstRightPinned) {\n cssClasses.push('ag-cell-first-right-pinned');\n }\n if (this.lastLeftPinned) {\n cssClasses.push('ag-cell-last-left-pinned');\n }\n if (this.beans.columnHoverService.isHovered(this.column)) {\n cssClasses.push('ag-column-hover');\n }\n utils_1._.pushAll(cssClasses, this.preProcessClassesFromColDef());\n utils_1._.pushAll(cssClasses, this.preProcessCellClassRules());\n utils_1._.pushAll(cssClasses, this.getRangeClasses());\n // if using the wrapper, this class goes on the wrapper instead\n if (!this.usingWrapper) {\n cssClasses.push('ag-cell-value');\n }\n return cssClasses;\n };\n CellComp.prototype.getInitialValueToRender = function () {\n // if using a cellRenderer, then render the html from the cell renderer if it exists\n if (this.usingCellRenderer) {\n if (typeof this.cellRendererGui === 'string') {\n return this.cellRendererGui;\n }\n else {\n return '';\n }\n }\n var colDef = this.getComponentHolder();\n if (colDef.template) {\n // template is really only used for angular 1 - as people using ng1 are used to providing templates with\n // bindings in it. in ng2, people will hopefully want to provide components, not templates.\n return colDef.template;\n }\n else if (colDef.templateUrl) {\n // likewise for templateUrl - it's for ng1 really - when we move away from ng1, we can take these out.\n // niall was pro angular 1 when writing template and templateUrl, if writing from scratch now, would\n // not do these, but would follow a pattern that was friendly towards components, not templates.\n var template = this.beans.templateService.getTemplate(colDef.templateUrl, this.refreshCell.bind(this, true));\n if (template) {\n return template;\n }\n else {\n return '';\n }\n }\n else {\n return this.getValueToUse();\n }\n };\n CellComp.prototype.getRenderedRow = function () {\n return this.rowComp;\n };\n CellComp.prototype.isSuppressNavigable = function () {\n return this.column.isSuppressNavigable(this.rowNode);\n };\n CellComp.prototype.getCellRenderer = function () {\n return this.cellRenderer;\n };\n CellComp.prototype.getCellEditor = function () {\n return this.cellEditor;\n };\n // + stop editing {forceRefresh: true, suppressFlash: true}\n // + event cellChanged {}\n // + cellRenderer.params.refresh() {} -> method passes 'as is' to the cellRenderer, so params could be anything\n // + rowComp: event dataChanged {animate: update, newData: !update}\n // + rowComp: api refreshCells() {animate: true/false}\n // + rowRenderer: api softRefreshView() {}\n CellComp.prototype.refreshCell = function (params) {\n if (this.editingCell) {\n return;\n }\n // if we are in the middle of 'stopEditing', then we don't refresh here, as refresh gets called explicitly\n if (this.suppressRefreshCell) {\n return;\n }\n var colDef = this.getComponentHolder();\n var newData = params && params.newData;\n var suppressFlash = (params && params.suppressFlash) || colDef.suppressCellFlash;\n var forceRefresh = params && params.forceRefresh;\n var oldValue = this.value;\n this.getValueAndFormat();\n // for simple values only (not pojo's), see if the value is the same, and if it is, skip the refresh.\n // when never allow skipping after an edit, as after editing, we need to put the GUI back to the way\n // if was before the edit.\n var valuesDifferent = !this.valuesAreEqual(oldValue, this.value);\n var dataNeedsUpdating = forceRefresh || valuesDifferent;\n if (dataNeedsUpdating) {\n // if it's 'new data', then we don't refresh the cellRenderer, even if refresh method is available.\n // this is because if the whole data is new (ie we are showing stock price 'BBA' now and not 'SSD')\n // then we are not showing a movement in the stock price, rather we are showing different stock.\n var cellRendererRefreshed = newData ? false : this.attemptCellRendererRefresh();\n // we do the replace if not doing refresh, or if refresh was unsuccessful.\n // the refresh can be unsuccessful if we are using a framework (eg ng2 or react) and the framework\n // wrapper has the refresh method, but the underlying component doesn't\n if (!cellRendererRefreshed) {\n this.replaceContentsAfterRefresh();\n }\n var flashCell = !suppressFlash &&\n (this.beans.gridOptionsWrapper.isEnableCellChangeFlash() || colDef.enableCellChangeFlash);\n if (flashCell) {\n this.flashCell();\n }\n // need to check rules. note, we ignore colDef classes and styles, these are assumed to be static\n this.postProcessStylesFromColDef();\n this.postProcessClassesFromColDef();\n }\n // we can't readily determine if the data in an angularjs template has changed, so here we just update\n // and recompile (if applicable)\n this.updateAngular1ScopeAndCompile();\n this.refreshToolTip();\n // we do cellClassRules even if the value has not changed, so that users who have rules that\n // look at other parts of the row (where the other part of the row might of changed) will work.\n this.postProcessCellClassRules();\n };\n // user can also call this via API\n CellComp.prototype.flashCell = function () {\n this.animateCell('data-changed');\n };\n CellComp.prototype.animateCell = function (cssName) {\n var fullName = 'ag-cell-' + cssName;\n var animationFullName = 'ag-cell-' + cssName + '-animation';\n var element = this.getGui();\n // we want to highlight the cells, without any animation\n utils_1._.addCssClass(element, fullName);\n utils_1._.removeCssClass(element, animationFullName);\n // then once that is applied, we remove the highlight with animation\n window.setTimeout(function () {\n utils_1._.removeCssClass(element, fullName);\n utils_1._.addCssClass(element, animationFullName);\n window.setTimeout(function () {\n // and then to leave things as we got them, we remove the animation\n utils_1._.removeCssClass(element, animationFullName);\n }, 1000);\n }, 500);\n };\n CellComp.prototype.replaceContentsAfterRefresh = function () {\n // otherwise we rip out the cell and replace it\n utils_1._.clearElement(this.eParentOfValue);\n // remove old renderer component if it exists\n if (this.cellRenderer && this.cellRenderer.destroy) {\n this.cellRenderer.destroy();\n }\n this.cellRenderer = null;\n this.cellRendererGui = null;\n // populate\n this.putDataIntoCellAfterRefresh();\n this.updateAngular1ScopeAndCompile();\n };\n CellComp.prototype.updateAngular1ScopeAndCompile = function () {\n if (this.beans.gridOptionsWrapper.isAngularCompileRows() && this.scope) {\n this.scope.data = __assign({}, this.rowNode.data);\n this.angular1Compile();\n }\n };\n CellComp.prototype.angular1Compile = function () {\n // if angular compiling, then need to also compile the cell again (angular compiling sucks, please wait...)\n if (this.beans.gridOptionsWrapper.isAngularCompileRows()) {\n var eGui = this.getGui();\n // only compile the node if it hasn't already been done\n // this prevents \"orphaned\" node leaks\n if (!eGui.classList.contains('ng-scope') || eGui.childElementCount === 0) {\n var compiledElement_1 = this.beans.$compile(eGui)(this.scope);\n this.addDestroyFunc(function () {\n compiledElement_1.remove();\n });\n }\n }\n };\n CellComp.prototype.postProcessStylesFromColDef = function () {\n var stylesToUse = this.processStylesFromColDef();\n if (stylesToUse) {\n utils_1._.addStylesToElement(this.getGui(), stylesToUse);\n }\n };\n CellComp.prototype.preProcessStylesFromColDef = function () {\n var stylesToUse = this.processStylesFromColDef();\n return utils_1._.cssStyleObjectToMarkup(stylesToUse);\n };\n CellComp.prototype.processStylesFromColDef = function () {\n var colDef = this.getComponentHolder();\n if (colDef.cellStyle) {\n var cssToUse = void 0;\n if (typeof colDef.cellStyle === 'function') {\n var cellStyleParams = {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n column: this.column,\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi()\n };\n var cellStyleFunc = colDef.cellStyle;\n cssToUse = cellStyleFunc(cellStyleParams);\n }\n else {\n cssToUse = colDef.cellStyle;\n }\n return cssToUse;\n }\n };\n CellComp.prototype.postProcessClassesFromColDef = function () {\n var _this = this;\n this.processClassesFromColDef(function (className) { return utils_1._.addCssClass(_this.getGui(), className); });\n };\n CellComp.prototype.preProcessClassesFromColDef = function () {\n var res = [];\n this.processClassesFromColDef(function (className) { return res.push(className); });\n return res;\n };\n CellComp.prototype.processClassesFromColDef = function (onApplicableClass) {\n var colDef = this.getComponentHolder();\n this.beans.stylingService.processStaticCellClasses(colDef, {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n rowIndex: this.rowNode.rowIndex,\n $scope: this.scope,\n api: this.beans.gridOptionsWrapper.getApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass);\n };\n CellComp.prototype.putDataIntoCellAfterRefresh = function () {\n // template gets preference, then cellRenderer, then do it ourselves\n var colDef = this.getComponentHolder();\n if (colDef.template) {\n // template is really only used for angular 1 - as people using ng1 are used to providing templates with\n // bindings in it. in ng2, people will hopefully want to provide components, not templates.\n this.eParentOfValue.innerHTML = colDef.template;\n }\n else if (colDef.templateUrl) {\n // likewise for templateUrl - it's for ng1 really - when we move away from ng1, we can take these out.\n // niall was pro angular 1 when writing template and templateUrl, if writing from scratch now, would\n // not do these, but would follow a pattern that was friendly towards components, not templates.\n var template = this.beans.templateService.getTemplate(colDef.templateUrl, this.refreshCell.bind(this, true));\n if (template) {\n this.eParentOfValue.innerHTML = template;\n }\n }\n else {\n // we can switch from using a cell renderer back to the default if a user\n // is using cellRendererSelect\n if (this.usingCellRenderer) {\n if (!this.attachCellRenderer()) {\n this.usingCellRenderer = false;\n }\n }\n if (!this.usingCellRenderer) {\n var valueToUse = this.getValueToUse();\n if (valueToUse !== null && valueToUse !== undefined) {\n this.eParentOfValue.innerHTML = utils_1._.escape(valueToUse);\n }\n }\n }\n };\n CellComp.prototype.attemptCellRendererRefresh = function () {\n if (utils_1._.missing(this.cellRenderer) || !this.cellRenderer || utils_1._.missing(this.cellRenderer.refresh)) {\n return false;\n }\n // if the cell renderer has a refresh method, we call this instead of doing a refresh\n var params = this.createCellRendererParams();\n // take any custom params off of the user\n var finalParams = this.beans.userComponentFactory.createFinalParams(this.getComponentHolder(), this.cellRendererType, params);\n var result = this.cellRenderer.refresh(finalParams);\n // NOTE on undefined: previous version of the cellRenderer.refresh() interface\n // returned nothing, if the method existed, we assumed it refreshed. so for\n // backwards compatibility, we assume if method exists and returns nothing,\n // that it was successful.\n return result === true || result === undefined;\n };\n CellComp.prototype.refreshToolTip = function () {\n var newTooltip = this.getToolTip();\n if (this.tooltip !== newTooltip) {\n this.tooltip = newTooltip;\n if (!this.beans.gridOptionsWrapper.isEnableBrowserTooltips()) {\n return;\n }\n if (utils_1._.exists(newTooltip)) {\n var tooltipSanitised = utils_1._.escape(this.tooltip);\n this.eParentOfValue.setAttribute('title', tooltipSanitised);\n }\n else {\n this.eParentOfValue.removeAttribute('title');\n }\n }\n };\n CellComp.prototype.valuesAreEqual = function (val1, val2) {\n // if the user provided an equals method, use that, otherwise do simple comparison\n var colDef = this.getComponentHolder();\n var equalsMethod = colDef ? colDef.equals : null;\n if (equalsMethod) {\n return equalsMethod(val1, val2);\n }\n return val1 === val2;\n };\n CellComp.prototype.getToolTip = function () {\n var colDef = this.getComponentHolder();\n var data = this.rowNode.data;\n if (colDef.tooltipField && utils_1._.exists(data)) {\n return utils_1._.getValueUsingField(data, colDef.tooltipField, this.column.isTooltipFieldContainsDots());\n }\n var valueGetter = colDef.tooltipValueGetter || colDef.tooltip;\n if (valueGetter) {\n return valueGetter({\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n colDef: colDef,\n column: this.getColumn(),\n context: this.beans.gridOptionsWrapper.getContext(),\n value: this.value,\n valueFormatted: this.valueFormatted,\n rowIndex: this.gridCell.rowIndex,\n node: this.rowNode,\n data: this.rowNode.data,\n $scope: this.scope,\n });\n }\n return null;\n };\n CellComp.prototype.getTooltipText = function (escape) {\n if (escape === void 0) { escape = true; }\n return escape ? utils_1._.escape(this.tooltip) : this.tooltip;\n };\n CellComp.prototype.processCellClassRules = function (onApplicableClass, onNotApplicableClass) {\n var colDef = this.getComponentHolder();\n this.beans.stylingService.processClassRules(colDef.cellClassRules, {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n rowIndex: this.gridCell.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass, onNotApplicableClass);\n };\n CellComp.prototype.postProcessCellClassRules = function () {\n var _this = this;\n this.processCellClassRules(function (className) {\n utils_1._.addCssClass(_this.getGui(), className);\n }, function (className) {\n utils_1._.removeCssClass(_this.getGui(), className);\n });\n };\n CellComp.prototype.preProcessCellClassRules = function () {\n var res = [];\n this.processCellClassRules(function (className) {\n res.push(className);\n }, function (className) {\n // not catered for, if creating, no need\n // to remove class as it was never there\n });\n return res;\n };\n // a wrapper is used when we are putting a selection checkbox in the cell with the value\n CellComp.prototype.setUsingWrapper = function () {\n var colDef = this.getComponentHolder();\n // never allow selection or dragging on pinned rows\n if (this.rowNode.rowPinned) {\n this.usingWrapper = false;\n this.includeSelectionComponent = false;\n this.includeRowDraggingComponent = false;\n return;\n }\n var cbSelectionIsFunc = typeof colDef.checkboxSelection === 'function';\n var rowDraggableIsFunc = typeof colDef.rowDrag === 'function';\n this.includeSelectionComponent = cbSelectionIsFunc || colDef.checkboxSelection === true;\n this.includeRowDraggingComponent = rowDraggableIsFunc || colDef.rowDrag === true;\n this.usingWrapper = this.includeRowDraggingComponent || this.includeSelectionComponent;\n };\n CellComp.prototype.chooseCellRenderer = function () {\n // template gets preference, then cellRenderer, then do it ourselves\n var colDef = this.getComponentHolder();\n // templates are for ng1, ideally we wouldn't have these, they are ng1 support\n // inside the core which is bad\n if (colDef.template || colDef.templateUrl) {\n this.usingCellRenderer = false;\n return;\n }\n var params = this.createCellRendererParams();\n var cellRenderer = this.beans.userComponentFactory.lookupComponentClassDef(colDef, 'cellRenderer', params);\n var pinnedRowCellRenderer = this.beans.userComponentFactory.lookupComponentClassDef(colDef, 'pinnedRowCellRenderer', params);\n if (pinnedRowCellRenderer && this.rowNode.rowPinned) {\n this.cellRendererType = CellComp.CELL_RENDERER_TYPE_PINNED;\n this.usingCellRenderer = true;\n }\n else if (cellRenderer) {\n this.cellRendererType = CellComp.CELL_RENDERER_TYPE_NORMAL;\n this.usingCellRenderer = true;\n }\n else {\n this.usingCellRenderer = false;\n }\n };\n CellComp.prototype.createCellRendererInstance = function () {\n var params = this.createCellRendererParams();\n this.cellRendererVersion++;\n var callback = this.afterCellRendererCreated.bind(this, this.cellRendererVersion);\n // this can return null in the event that the user has switched from a renderer component to nothing, for example\n // when using a cellRendererSelect to return a component or null depending on row data etc\n var componentPromise;\n if (this.cellRendererType === CellComp.CELL_RENDERER_TYPE_NORMAL) {\n componentPromise = this.beans.userComponentFactory.newCellRenderer(this.getComponentHolder(), params);\n }\n else {\n componentPromise = this.beans.userComponentFactory.newPinnedRowCellRenderer(this.getComponentHolder(), params);\n }\n if (componentPromise) {\n componentPromise.then(callback);\n return true;\n }\n return false;\n };\n CellComp.prototype.afterCellRendererCreated = function (cellRendererVersion, cellRenderer) {\n // see if daemon\n if (!this.isAlive() || (cellRendererVersion !== this.cellRendererVersion)) {\n if (cellRenderer.destroy) {\n cellRenderer.destroy();\n }\n return;\n }\n this.cellRenderer = cellRenderer;\n this.cellRendererGui = this.cellRenderer.getGui();\n if (utils_1._.missing(this.cellRendererGui)) {\n return;\n }\n // if async components, then it's possible the user started editing since\n // this call was made\n if (!this.editingCell) {\n this.eParentOfValue.appendChild(this.cellRendererGui);\n }\n };\n CellComp.prototype.attachCellRenderer = function () {\n if (!this.usingCellRenderer) {\n return false;\n }\n return this.createCellRendererInstance();\n };\n CellComp.prototype.createCellRendererParams = function () {\n var _this = this;\n var params = {\n value: this.value,\n valueFormatted: this.valueFormatted,\n getValue: this.getValue.bind(this),\n setValue: function (value) {\n _this.beans.valueService.setValue(_this.rowNode, _this.column, value);\n },\n formatValue: this.formatValue.bind(this),\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: this.getComponentHolder(),\n column: this.column,\n $scope: this.scope,\n rowIndex: this.gridCell.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n refreshCell: this.refreshCell.bind(this),\n eGridCell: this.getGui(),\n eParentOfValue: this.eParentOfValue,\n // these bits are not documented anywhere, so we could drop them?\n // it was in the olden days to allow user to register for when rendered\n // row was removed (the row comp was removed), however now that the user\n // can provide components for cells, the destroy method gets call when this\n // happens so no longer need to fire event.\n addRowCompListener: this.rowComp ? this.rowComp.addEventListener.bind(this.rowComp) : null,\n addRenderedRowListener: function (eventType, listener) {\n console.warn('ag-Grid: since ag-Grid .v11, params.addRenderedRowListener() is now params.addRowCompListener()');\n if (_this.rowComp) {\n _this.rowComp.addEventListener(eventType, listener);\n }\n }\n };\n return params;\n };\n CellComp.prototype.formatValue = function (value) {\n var valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, value);\n var valueFormattedExists = valueFormatted !== null && valueFormatted !== undefined;\n return valueFormattedExists ? valueFormatted : value;\n };\n CellComp.prototype.getValueToUse = function () {\n var valueFormattedExists = this.valueFormatted !== null && this.valueFormatted !== undefined;\n return valueFormattedExists ? this.valueFormatted : this.value;\n };\n CellComp.prototype.getValueAndFormat = function () {\n this.value = this.getValue();\n this.valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, this.value);\n };\n CellComp.prototype.getValue = function () {\n // if we don't check this, then the grid will render leaf groups as open even if we are not\n // allowing the user to open leaf groups. confused? remember for pivot mode we don't allow\n // opening leaf groups, so we have to force leafGroups to be closed in case the user expanded\n // them via the API, or user user expanded them in the UI before turning on pivot mode\n var lockedClosedGroup = this.rowNode.leafGroup && this.beans.columnController.isPivotMode();\n var isOpenGroup = this.rowNode.group && this.rowNode.expanded && !this.rowNode.footer && !lockedClosedGroup;\n // are we showing group footers\n var groupFootersEnabled = this.beans.gridOptionsWrapper.isGroupIncludeFooter();\n // if doing footers, we normally don't show agg data at group level when group is open\n var groupAlwaysShowAggData = this.beans.gridOptionsWrapper.isGroupSuppressBlankHeader();\n // if doing grouping and footers, we don't want to include the agg value\n // in the header when the group is open\n var ignoreAggData = (isOpenGroup && groupFootersEnabled) && !groupAlwaysShowAggData;\n return this.beans.valueService.getValue(this.column, this.rowNode, false, ignoreAggData);\n };\n CellComp.prototype.onMouseEvent = function (eventName, mouseEvent) {\n if (utils_1._.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n switch (eventName) {\n case 'click':\n this.onCellClicked(mouseEvent);\n break;\n case 'mousedown':\n this.onMouseDown(mouseEvent);\n break;\n case 'dblclick':\n this.onCellDoubleClicked(mouseEvent);\n break;\n case 'mouseout':\n this.onMouseOut(mouseEvent);\n break;\n case 'mouseover':\n this.onMouseOver(mouseEvent);\n break;\n }\n };\n CellComp.prototype.dispatchCellContextMenuEvent = function (event) {\n var colDef = this.getComponentHolder();\n var cellContextMenuEvent = this.createEvent(event, events_1.Events.EVENT_CELL_CONTEXT_MENU);\n this.beans.eventService.dispatchEvent(cellContextMenuEvent);\n if (colDef.onCellContextMenu) {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellContextMenu(cellContextMenuEvent); }, 0);\n }\n };\n CellComp.prototype.createEvent = function (domEvent, eventType) {\n var event = {\n node: this.rowNode,\n data: this.rowNode.data,\n value: this.value,\n column: this.column,\n colDef: this.getComponentHolder(),\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi,\n rowPinned: this.rowNode.rowPinned,\n event: domEvent,\n type: eventType,\n rowIndex: this.rowNode.rowIndex\n };\n // because we are hacking in $scope for angular 1, we have to de-reference\n if (this.scope) {\n event.$scope = this.scope;\n }\n return event;\n };\n CellComp.prototype.onMouseOut = function (mouseEvent) {\n var cellMouseOutEvent = this.createEvent(mouseEvent, events_1.Events.EVENT_CELL_MOUSE_OUT);\n this.beans.eventService.dispatchEvent(cellMouseOutEvent);\n this.beans.columnHoverService.clearMouseOver();\n };\n CellComp.prototype.onMouseOver = function (mouseEvent) {\n var cellMouseOverEvent = this.createEvent(mouseEvent, events_1.Events.EVENT_CELL_MOUSE_OVER);\n this.beans.eventService.dispatchEvent(cellMouseOverEvent);\n this.beans.columnHoverService.setMouseOver([this.column]);\n };\n CellComp.prototype.onCellDoubleClicked = function (mouseEvent) {\n var colDef = this.getComponentHolder();\n // always dispatch event to eventService\n var cellDoubleClickedEvent = this.createEvent(mouseEvent, events_1.Events.EVENT_CELL_DOUBLE_CLICKED);\n this.beans.eventService.dispatchEvent(cellDoubleClickedEvent);\n // check if colDef also wants to handle event\n if (typeof colDef.onCellDoubleClicked === 'function') {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellDoubleClicked(cellDoubleClickedEvent); }, 0);\n }\n var editOnDoubleClick = !this.beans.gridOptionsWrapper.isSingleClickEdit()\n && !this.beans.gridOptionsWrapper.isSuppressClickEdit();\n if (editOnDoubleClick) {\n this.startRowOrCellEdit();\n }\n };\n // called by rowRenderer when user navigates via tab key\n CellComp.prototype.startRowOrCellEdit = function (keyPress, charPress) {\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n this.rowComp.startRowEditing(keyPress, charPress, this);\n }\n else {\n this.startEditingIfEnabled(keyPress, charPress, true);\n }\n };\n CellComp.prototype.isCellEditable = function () {\n return this.column.isCellEditable(this.rowNode);\n };\n // either called internally if single cell editing, or called by rowRenderer if row editing\n CellComp.prototype.startEditingIfEnabled = function (keyPress, charPress, cellStartedEdit) {\n if (keyPress === void 0) { keyPress = null; }\n if (charPress === void 0) { charPress = null; }\n if (cellStartedEdit === void 0) { cellStartedEdit = false; }\n // don't do it if not editable\n if (!this.isCellEditable()) {\n return;\n }\n // don't do it if already editing\n if (this.editingCell) {\n return;\n }\n this.editingCell = true;\n this.cellEditorVersion++;\n var callback = this.afterCellEditorCreated.bind(this, this.cellEditorVersion);\n var params = this.createCellEditorParams(keyPress, charPress, cellStartedEdit);\n this.createCellEditor(params).then(callback);\n // if we don't do this, and editor component is async, then there will be a period\n // when the component isn't present and keyboard navigation won't work - so example\n // of user hitting tab quickly (more quickly than renderers getting created) won't work\n var cellEditorAsync = utils_1._.missing(this.cellEditor);\n if (cellEditorAsync && cellStartedEdit) {\n this.focusCell(true);\n }\n };\n CellComp.prototype.createCellEditor = function (params) {\n var _this = this;\n var cellEditorPromise = this.beans.userComponentFactory.newCellEditor(this.column.getColDef(), params);\n return cellEditorPromise.map(function (cellEditor) {\n var isPopup = cellEditor.isPopup && cellEditor.isPopup();\n if (!isPopup) {\n return cellEditor;\n }\n if (_this.beans.gridOptionsWrapper.isFullRowEdit()) {\n console.warn('ag-Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both ' +\n '- either turn off fullRowEdit, or stop using popup editors.');\n }\n // if a popup, then we wrap in a popup editor and return the popup\n var popupEditorWrapper = new popupEditorWrapper_1.PopupEditorWrapper(cellEditor);\n _this.beans.context.wireBean(popupEditorWrapper);\n popupEditorWrapper.init(params);\n return popupEditorWrapper;\n });\n };\n CellComp.prototype.afterCellEditorCreated = function (cellEditorVersion, cellEditor) {\n // if editingCell=false, means user cancelled the editor before component was ready.\n // if versionMismatch, then user cancelled the edit, then started the edit again, and this\n // is the first editor which is now stale.\n var versionMismatch = cellEditorVersion !== this.cellEditorVersion;\n if (versionMismatch || !this.editingCell) {\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n return;\n }\n if (cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart()) {\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n this.editingCell = false;\n return;\n }\n if (!cellEditor.getGui) {\n console.warn(\"ag-Grid: cellEditor for column \" + this.column.getId() + \" is missing getGui() method\");\n // no getGui, for React guys, see if they attached a react component directly\n if (cellEditor.render) {\n console.warn(\"ag-Grid: we found 'render' on the component, are you trying to set a React renderer but added it as colDef.cellEditor instead of colDef.cellEditorFmk?\");\n }\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n this.editingCell = false;\n return;\n }\n this.cellEditor = cellEditor;\n this.cellEditorInPopup = cellEditor.isPopup !== undefined && cellEditor.isPopup();\n this.setInlineEditingClass();\n if (this.cellEditorInPopup) {\n this.addPopupCellEditor();\n }\n else {\n this.addInCellEditor();\n }\n if (cellEditor.afterGuiAttached) {\n cellEditor.afterGuiAttached();\n }\n var event = this.createEvent(null, events_1.Events.EVENT_CELL_EDITING_STARTED);\n this.beans.eventService.dispatchEvent(event);\n };\n CellComp.prototype.addInCellEditor = function () {\n utils_1._.clearElement(this.getGui());\n if (this.cellEditor) {\n this.getGui().appendChild(this.cellEditor.getGui());\n }\n this.angular1Compile();\n };\n CellComp.prototype.addPopupCellEditor = function () {\n var _this = this;\n var ePopupGui = this.cellEditor ? this.cellEditor.getGui() : null;\n this.hideEditorPopup = this.beans.popupService.addAsModalPopup(ePopupGui, true, \n // callback for when popup disappears\n function () {\n _this.onPopupEditorClosed();\n });\n this.beans.popupService.positionPopupOverComponent({\n column: this.column,\n rowNode: this.rowNode,\n type: 'popupCellEditor',\n eventSource: this.getGui(),\n ePopup: ePopupGui,\n keepWithinBounds: true\n });\n this.angular1Compile();\n };\n CellComp.prototype.onPopupEditorClosed = function () {\n // we only call stopEditing if we are editing, as\n // it's possible the popup called 'stop editing'\n // before this, eg if 'enter key' was pressed on\n // the editor.\n if (this.editingCell) {\n // note: this only happens when use clicks outside of the grid. if use clicks on another\n // cell, then the editing will have already stopped on this cell\n this.stopRowOrCellEdit();\n // we only focus cell again if this cell is still focused. it is possible\n // it is not focused if the user cancelled the edit by clicking on another\n // cell outside of this one\n if (this.beans.focusedCellController.isCellFocused(this.gridCell)) {\n this.focusCell(true);\n }\n }\n };\n // if we are editing inline, then we don't have the padding in the cell (set in the themes)\n // to allow the text editor full access to the entire cell\n CellComp.prototype.setInlineEditingClass = function () {\n // ag-cell-inline-editing - appears when user is inline editing\n // ag-cell-not-inline-editing - appears when user is no inline editing\n // ag-cell-popup-editing - appears when user is editing cell in popup (appears on the cell, not on the popup)\n // note: one of {ag-cell-inline-editing, ag-cell-not-inline-editing} is always present, they toggle.\n // however {ag-cell-popup-editing} shows when popup, so you have both {ag-cell-popup-editing}\n // and {ag-cell-not-inline-editing} showing at the same time.\n var editingInline = this.editingCell && !this.cellEditorInPopup;\n var popupEditorShowing = this.editingCell && this.cellEditorInPopup;\n utils_1._.addOrRemoveCssClass(this.getGui(), \"ag-cell-inline-editing\", editingInline);\n utils_1._.addOrRemoveCssClass(this.getGui(), \"ag-cell-not-inline-editing\", !editingInline);\n utils_1._.addOrRemoveCssClass(this.getGui(), \"ag-cell-popup-editing\", popupEditorShowing);\n utils_1._.addOrRemoveCssClass(this.getGui().parentNode, \"ag-row-inline-editing\", editingInline);\n utils_1._.addOrRemoveCssClass(this.getGui().parentNode, \"ag-row-not-inline-editing\", !editingInline);\n };\n CellComp.prototype.createCellEditorParams = function (keyPress, charPress, cellStartedEdit) {\n var params = {\n value: this.getValue(),\n keyPress: keyPress,\n charPress: charPress,\n column: this.column,\n colDef: this.column.getColDef(),\n rowIndex: this.gridCell.rowIndex,\n node: this.rowNode,\n data: this.rowNode.data,\n api: this.beans.gridOptionsWrapper.getApi(),\n cellStartedEdit: cellStartedEdit,\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n $scope: this.scope,\n onKeyDown: this.onKeyDown.bind(this),\n stopEditing: this.stopEditingAndFocus.bind(this),\n eGridCell: this.getGui(),\n parseValue: this.parseValue.bind(this),\n formatValue: this.formatValue.bind(this)\n };\n return params;\n };\n // cell editors call this, when they want to stop for reasons other\n // than what we pick up on. eg selecting from a dropdown ends editing.\n CellComp.prototype.stopEditingAndFocus = function (suppressNavigateAfterEdit) {\n if (suppressNavigateAfterEdit === void 0) { suppressNavigateAfterEdit = false; }\n this.stopRowOrCellEdit();\n this.focusCell(true);\n if (!suppressNavigateAfterEdit) {\n this.navigateAfterEdit();\n }\n };\n CellComp.prototype.parseValue = function (newValue) {\n var colDef = this.getComponentHolder();\n var params = {\n node: this.rowNode,\n data: this.rowNode.data,\n oldValue: this.value,\n newValue: newValue,\n colDef: colDef,\n column: this.column,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n var valueParser = colDef.valueParser;\n return utils_1._.exists(valueParser) ? this.beans.expressionService.evaluate(valueParser, params) : newValue;\n };\n CellComp.prototype.focusCell = function (forceBrowserFocus) {\n if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n this.beans.focusedCellController.setFocusedCell(this.gridCell.rowIndex, this.column, this.rowNode.rowPinned, forceBrowserFocus);\n };\n CellComp.prototype.setFocusInOnEditor = function () {\n if (this.editingCell) {\n if (this.cellEditor && this.cellEditor.focusIn) {\n // if the editor is present, then we just focus it\n this.cellEditor.focusIn();\n }\n else {\n // if the editor is not present, it means async cell editor (eg React fibre)\n // and we are trying to set focus before the cell editor is present, so we\n // focus the cell instead\n this.focusCell(true);\n }\n }\n };\n CellComp.prototype.isEditing = function () {\n return this.editingCell;\n };\n CellComp.prototype.onKeyDown = function (event) {\n var key = event.which || event.keyCode;\n switch (key) {\n case constants_1.Constants.KEY_ENTER:\n this.onEnterKeyDown();\n break;\n case constants_1.Constants.KEY_F2:\n this.onF2KeyDown();\n break;\n case constants_1.Constants.KEY_ESCAPE:\n this.onEscapeKeyDown();\n break;\n case constants_1.Constants.KEY_TAB:\n this.onTabKeyDown(event);\n break;\n case constants_1.Constants.KEY_BACKSPACE:\n case constants_1.Constants.KEY_DELETE:\n this.onBackspaceOrDeleteKeyPressed(key);\n break;\n case constants_1.Constants.KEY_DOWN:\n case constants_1.Constants.KEY_UP:\n case constants_1.Constants.KEY_RIGHT:\n case constants_1.Constants.KEY_LEFT:\n this.onNavigationKeyPressed(event, key);\n break;\n }\n };\n CellComp.prototype.setFocusOutOnEditor = function () {\n if (this.editingCell && this.cellEditor && this.cellEditor.focusOut) {\n this.cellEditor.focusOut();\n }\n };\n CellComp.prototype.onNavigationKeyPressed = function (event, key) {\n if (this.editingCell) {\n return;\n }\n if (event.shiftKey && this.rangeSelectionEnabled) {\n this.onShiftRangeSelect(key);\n }\n else {\n this.beans.rowRenderer.navigateToNextCell(event, key, this.gridCell, true);\n }\n // if we don't prevent default, the grid will scroll with the navigation keys\n event.preventDefault();\n };\n CellComp.prototype.onShiftRangeSelect = function (key) {\n var success = this.beans.rangeController.extendRangeInDirection(this.gridCell, key);\n if (!success) {\n return;\n }\n var ranges = this.beans.rangeController.getCellRanges();\n // this should never happen, as extendRangeFromCell should always have one range after getting called\n if (utils_1._.missing(ranges) || !ranges || ranges.length !== 1) {\n return;\n }\n var endCell = ranges[0].end;\n this.beans.rowRenderer.ensureCellVisible(endCell);\n };\n CellComp.prototype.onTabKeyDown = function (event) {\n this.beans.rowRenderer.onTabKeyDown(this, event);\n };\n CellComp.prototype.onBackspaceOrDeleteKeyPressed = function (key) {\n if (!this.editingCell) {\n this.startRowOrCellEdit(key);\n }\n };\n CellComp.prototype.onEnterKeyDown = function () {\n if (this.editingCell || this.rowComp.isEditing()) {\n this.stopEditingAndFocus();\n }\n else {\n if (this.beans.gridOptionsWrapper.isEnterMovesDown()) {\n this.beans.rowRenderer.navigateToNextCell(null, constants_1.Constants.KEY_DOWN, this.gridCell, false);\n }\n else {\n this.startRowOrCellEdit(constants_1.Constants.KEY_ENTER);\n }\n }\n };\n CellComp.prototype.navigateAfterEdit = function () {\n var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n if (fullRowEdit) {\n return;\n }\n var enterMovesDownAfterEdit = this.beans.gridOptionsWrapper.isEnterMovesDownAfterEdit();\n if (enterMovesDownAfterEdit) {\n this.beans.rowRenderer.navigateToNextCell(null, constants_1.Constants.KEY_DOWN, this.gridCell, false);\n }\n };\n CellComp.prototype.onF2KeyDown = function () {\n if (!this.editingCell) {\n this.startRowOrCellEdit(constants_1.Constants.KEY_F2);\n }\n };\n CellComp.prototype.onEscapeKeyDown = function () {\n if (this.editingCell) {\n this.stopRowOrCellEdit(true);\n this.focusCell(true);\n }\n };\n CellComp.prototype.onKeyPress = function (event) {\n // check this, in case focus is on a (for example) a text field inside the cell,\n // in which cse we should not be listening for these key pressed\n var eventTarget = utils_1._.getTarget(event);\n var eventOnChildComponent = eventTarget !== this.getGui();\n if (eventOnChildComponent) {\n return;\n }\n if (!this.editingCell) {\n var pressedChar = String.fromCharCode(event.charCode);\n if (pressedChar === ' ') {\n this.onSpaceKeyPressed(event);\n }\n else {\n if (utils_1._.isEventFromPrintableCharacter(event)) {\n this.startRowOrCellEdit(null, pressedChar);\n // if we don't prevent default, then the keypress also gets applied to the text field\n // (at least when doing the default editor), but we need to allow the editor to decide\n // what it wants to do. we only do this IF editing was started - otherwise it messes\n // up when the use is not doing editing, but using rendering with text fields in cellRenderer\n // (as it would block the the user from typing into text fields).\n event.preventDefault();\n }\n }\n }\n };\n CellComp.prototype.onSpaceKeyPressed = function (event) {\n if (!this.editingCell && this.beans.gridOptionsWrapper.isRowSelection()) {\n var selected = this.rowNode.isSelected();\n this.rowNode.setSelected(!selected);\n }\n // prevent default as space key, by default, moves browser scroll down\n event.preventDefault();\n };\n CellComp.prototype.onMouseDown = function (mouseEvent) {\n // we only need to pass true to focusCell in when the browser is IE\n // and we are trying to focus a cell (has ag-cell class), otherwise\n // we pass false, as we don't want the cell to focus also get the browser\n // focus. if we did, then the cellRenderer could have a text field in it,\n // for example, and as the user clicks on the text field, the text field,\n // the focus doesn't get to the text field, instead to goes to the div\n // behind, making it impossible to select the text field.\n var forceBrowserFocus = false;\n // return if we are clicking on a row selection checkbox, otherwise the row will get selected AND\n // we do range selection, however if user is clicking checking, they are probably only interested\n // in row selection.\n if (utils_1._.isElementChildOfClass(mouseEvent.target, 'ag-selection-checkbox', 3)) {\n return;\n }\n if (utils_1._.isBrowserIE()) {\n var target = mouseEvent.target;\n if (target.classList.contains('ag-cell')) {\n forceBrowserFocus = true;\n }\n }\n this.focusCell(forceBrowserFocus);\n // if it's a right click, then if the cell is already in range,\n // don't change the range, however if the cell is not in a range,\n // we set a new range\n var leftMouseButtonClick = utils_1._.isLeftClick(mouseEvent);\n if (leftMouseButtonClick && this.beans.rangeController) {\n var thisCell = this.gridCell;\n if (mouseEvent.shiftKey) {\n this.beans.rangeController.extendRangeToCell(thisCell);\n }\n else {\n var ctrlKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n this.beans.rangeController.setRangeToCell(thisCell, ctrlKeyPressed);\n }\n }\n var cellMouseDownEvent = this.createEvent(mouseEvent, events_1.Events.EVENT_CELL_MOUSE_DOWN);\n this.beans.eventService.dispatchEvent(cellMouseDownEvent);\n };\n // returns true if on iPad and this is second 'click' event in 200ms\n CellComp.prototype.isDoubleClickOnIPad = function () {\n if (!utils_1._.isUserAgentIPad()) {\n return false;\n }\n var nowMillis = new Date().getTime();\n var res = nowMillis - this.lastIPadMouseClickEvent < 200;\n this.lastIPadMouseClickEvent = nowMillis;\n return res;\n };\n CellComp.prototype.onCellClicked = function (mouseEvent) {\n // iPad doesn't have double click - so we need to mimic it do enable editing for\n // iPad.\n if (this.isDoubleClickOnIPad()) {\n this.onCellDoubleClicked(mouseEvent);\n mouseEvent.preventDefault(); // if we don't do this, then iPad zooms in\n return;\n }\n var cellClickedEvent = this.createEvent(mouseEvent, events_1.Events.EVENT_CELL_CLICKED);\n this.beans.eventService.dispatchEvent(cellClickedEvent);\n var colDef = this.getComponentHolder();\n if (colDef.onCellClicked) {\n // to make callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellClicked(cellClickedEvent); }, 0);\n }\n var editOnSingleClick = (this.beans.gridOptionsWrapper.isSingleClickEdit() || colDef.singleClickEdit)\n && !this.beans.gridOptionsWrapper.isSuppressClickEdit();\n if (editOnSingleClick) {\n this.startRowOrCellEdit();\n }\n utils_1._.doIeFocusHack(this.getGui());\n };\n CellComp.prototype.createGridCellVo = function () {\n var gridCellDef = {\n rowIndex: this.rowNode.rowIndex,\n floating: this.rowNode.rowPinned,\n column: this.column\n };\n this.gridCell = new gridCell_1.GridCell(gridCellDef);\n };\n CellComp.prototype.getGridCell = function () {\n return this.gridCell;\n };\n CellComp.prototype.getParentRow = function () {\n return this.eParentRow;\n };\n CellComp.prototype.setParentRow = function (eParentRow) {\n this.eParentRow = eParentRow;\n };\n CellComp.prototype.getColumn = function () {\n return this.column;\n };\n CellComp.prototype.getComponentHolder = function () {\n return this.column.getColDef();\n };\n CellComp.prototype.detach = function () {\n this.eParentRow.removeChild(this.getGui());\n };\n // if the row is also getting destroyed, then we don't need to remove from dom,\n // as the row will also get removed, so no need to take out the cells from the row\n // if the row is going (removing is an expensive operation, so only need to remove\n // the top part)\n CellComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.cellEditor && this.cellEditor.destroy) {\n this.cellEditor.destroy();\n this.cellEditor = null;\n }\n if (this.cellRenderer && this.cellRenderer.destroy) {\n this.cellRenderer.destroy();\n this.cellRenderer = null;\n }\n };\n CellComp.prototype.onLeftChanged = function () {\n var left = this.modifyLeftForPrintLayout(this.getCellLeft());\n this.getGui().style.left = left + 'px';\n };\n CellComp.prototype.modifyLeftForPrintLayout = function (leftPosition) {\n if (!this.printLayout) {\n return leftPosition;\n }\n if (this.column.getPinned() === column_1.Column.PINNED_LEFT) {\n return leftPosition;\n }\n if (this.column.getPinned() === column_1.Column.PINNED_RIGHT) {\n var leftWidth_1 = this.beans.columnController.getPinnedLeftContainerWidth();\n var bodyWidth = this.beans.columnController.getBodyContainerWidth();\n return leftWidth_1 + bodyWidth + leftPosition;\n }\n // is in body\n var leftWidth = this.beans.columnController.getPinnedLeftContainerWidth();\n return leftWidth + leftPosition;\n };\n CellComp.prototype.onWidthChanged = function () {\n var width = this.getCellWidth();\n this.getGui().style.width = width + 'px';\n };\n CellComp.prototype.getRangeClasses = function () {\n var res = [];\n if (!this.rangeSelectionEnabled) {\n return res;\n }\n if (this.rangeCount !== 0) {\n res.push('ag-cell-range-selected');\n }\n if (this.rangeCount === 1) {\n res.push('ag-cell-range-selected-1');\n }\n if (this.rangeCount === 2) {\n res.push('ag-cell-range-selected-2');\n }\n if (this.rangeCount === 3) {\n res.push('ag-cell-range-selected-3');\n }\n if (this.rangeCount >= 4) {\n res.push('ag-cell-range-selected-4');\n }\n return res;\n };\n CellComp.prototype.onRowIndexChanged = function () {\n // when index changes, this influences items that need the index, so we update the\n // grid cell so they are working off the new index.\n this.createGridCellVo();\n // when the index of the row changes, ie means the cell may have lost or gained focus\n this.onCellFocused();\n // check range selection\n this.onRangeSelectionChanged();\n };\n CellComp.prototype.onRangeSelectionChanged = function () {\n if (!this.beans.enterprise) {\n return;\n }\n var newRangeCount = this.beans.rangeController.getCellRangeCount(this.gridCell);\n var element = this.getGui();\n if (this.rangeCount !== newRangeCount) {\n utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected', newRangeCount !== 0);\n utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected-1', newRangeCount === 1);\n utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected-2', newRangeCount === 2);\n utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected-3', newRangeCount === 3);\n utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected-4', newRangeCount >= 4);\n this.rangeCount = newRangeCount;\n }\n };\n CellComp.prototype.onFirstRightPinnedChanged = function () {\n var firstRightPinned = this.column.isFirstRightPinned();\n if (this.firstRightPinned !== firstRightPinned) {\n this.firstRightPinned = firstRightPinned;\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-cell-first-right-pinned', firstRightPinned);\n }\n };\n CellComp.prototype.onLastLeftPinnedChanged = function () {\n var lastLeftPinned = this.column.isLastLeftPinned();\n if (this.lastLeftPinned !== lastLeftPinned) {\n this.lastLeftPinned = lastLeftPinned;\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-cell-last-left-pinned', lastLeftPinned);\n }\n };\n CellComp.prototype.populateTemplate = function () {\n if (this.usingWrapper) {\n this.eParentOfValue = this.getRefElement('eCellValue');\n this.eCellWrapper = this.getRefElement('eCellWrapper');\n if (this.includeRowDraggingComponent) {\n this.addRowDragging();\n }\n if (this.includeSelectionComponent) {\n this.addSelectionCheckbox();\n }\n }\n else {\n this.eParentOfValue = this.getGui();\n }\n };\n CellComp.prototype.addRowDragging = function () {\n // row dragging only available in default row model\n if (!this.beans.gridOptionsWrapper.isRowModelDefault()) {\n utils_1._.doOnce(function () { return console.warn('ag-Grid: row dragging is only allowed in the In Memory Row Model'); }, 'CellComp.addRowDragging');\n return;\n }\n if (this.beans.gridOptionsWrapper.isPagination()) {\n utils_1._.doOnce(function () { return console.warn('ag-Grid: row dragging is not possible when doing pagination'); }, 'CellComp.addRowDragging');\n return;\n }\n var rowDraggingComp = new rowDragComp_1.RowDragComp(this.rowNode, this.column, this.getValueToUse(), this.beans);\n this.addFeature(this.beans.context, rowDraggingComp);\n // let visibleFunc = this.getComponentHolder().checkboxSelection;\n // visibleFunc = typeof visibleFunc === 'function' ? visibleFunc : null;\n // cbSelectionComponent.init({rowNode: this.rowNode, column: this.column, visibleFunc: visibleFunc});\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(rowDraggingComp.getGui(), this.eParentOfValue);\n };\n CellComp.prototype.addSelectionCheckbox = function () {\n var cbSelectionComponent = new checkboxSelectionComponent_1.CheckboxSelectionComponent();\n this.beans.context.wireBean(cbSelectionComponent);\n var visibleFunc = this.getComponentHolder().checkboxSelection;\n visibleFunc = typeof visibleFunc === 'function' ? visibleFunc : null;\n cbSelectionComponent.init({ rowNode: this.rowNode, column: this.column, visibleFunc: visibleFunc });\n this.addDestroyFunc(function () { return cbSelectionComponent.destroy(); });\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(cbSelectionComponent.getGui(), this.eParentOfValue);\n };\n CellComp.prototype.addDomData = function () {\n var _this = this;\n var element = this.getGui();\n this.beans.gridOptionsWrapper.setDomData(element, CellComp.DOM_DATA_KEY_CELL_COMP, this);\n this.addDestroyFunc(function () {\n return _this.beans.gridOptionsWrapper.setDomData(element, CellComp.DOM_DATA_KEY_CELL_COMP, null);\n });\n };\n CellComp.prototype.onCellFocused = function (event) {\n var cellFocused = this.beans.focusedCellController.isCellFocused(this.gridCell);\n // see if we need to change the classes on this cell\n if (cellFocused !== this.cellFocused) {\n // if we are not doing cell selection, then the focus class does not change\n var doingFocusCss = !this.beans.gridOptionsWrapper.isSuppressCellSelection();\n if (doingFocusCss) {\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-cell-focus', cellFocused);\n }\n this.cellFocused = cellFocused;\n }\n // if this cell was just focused, see if we need to force browser focus, his can\n // happen if focus is programmatically set.\n if (cellFocused && event && event.forceBrowserFocus) {\n var eGui = this.getGui();\n eGui.focus();\n utils_1._.doIeFocusHack(eGui);\n }\n // if another cell was focused, and we are editing, then stop editing\n var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n if (!cellFocused && !fullRowEdit && this.editingCell) {\n this.stopRowOrCellEdit();\n }\n };\n // pass in 'true' to cancel the editing.\n CellComp.prototype.stopRowOrCellEdit = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n this.rowComp.stopRowEditing(cancel);\n }\n else {\n this.stopEditing(cancel);\n }\n };\n CellComp.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (!this.editingCell) {\n return;\n }\n // if no cell editor, this means due to async, that the cell editor never got initialised,\n // so we just carry on regardless as if the editing was never started.\n if (!this.cellEditor) {\n this.editingCell = false;\n return;\n }\n var newValueExists = false;\n var newValue;\n if (!cancel) {\n // also have another option here to cancel after editing, so for example user could have a popup editor and\n // it is closed by user clicking outside the editor. then the editor will close automatically (with false\n // passed above) and we need to see if the editor wants to accept the new value.\n var userWantsToCancel = this.cellEditor.isCancelAfterEnd && this.cellEditor.isCancelAfterEnd();\n if (!userWantsToCancel) {\n newValue = this.cellEditor.getValue();\n newValueExists = true;\n }\n }\n // it is important we set this after setValue() above, as otherwise the cell will flash\n // when editing stops. the 'refresh' method checks editing, and doesn't refresh editing cells.\n // thus it will skip the refresh on this cell until the end of this method where we call\n // refresh directly and we suppress the flash.\n this.editingCell = false;\n if (this.cellEditor.destroy) {\n this.cellEditor.destroy();\n }\n // important to clear this out - as parts of the code will check for\n // this to see if an async cellEditor has yet to be created\n this.cellEditor = null;\n if (this.cellEditorInPopup && this.hideEditorPopup) {\n this.hideEditorPopup();\n this.hideEditorPopup = null;\n }\n else {\n utils_1._.clearElement(this.getGui());\n // put the cell back the way it was before editing\n if (this.usingWrapper) {\n // if wrapper, then put the wrapper back\n this.getGui().appendChild(this.eCellWrapper);\n }\n else {\n // if cellRenderer, then put the gui back in. if the renderer has\n // a refresh, it will be called. however if it doesn't, then later\n // the renderer will be destroyed and a new one will be created.\n if (this.cellRenderer) {\n // we know it's a dom element (not a string) because we converted\n // it after the gui was attached if it was a string.\n var eCell = this.cellRendererGui;\n // can be null if cell was previously null / contained empty string,\n // this will result in new value not being rendered.\n if (eCell) {\n this.getGui().appendChild(eCell);\n }\n }\n }\n }\n this.setInlineEditingClass();\n if (newValueExists) {\n // we suppressRefreshCell because the call to rowNode.setDataValue() results in change detection\n // getting triggered, which results in all cells getting refreshed. we do not want this refresh\n // to happen on this call as we want to call it explicitly below. otherwise refresh gets called twice.\n // if we only did this refresh (and not the one below) then the cell would flash and not be forced.\n this.suppressRefreshCell = true;\n this.rowNode.setDataValue(this.column, newValue);\n this.suppressRefreshCell = false;\n }\n // we suppress the flash, as it is not correct to flash the cell the user has finished editing,\n // the user doesn't need to flash as they were the one who did the edit, the flash is pointless\n // (as the flash is meant to draw the user to a change that they didn't manually do themselves).\n this.refreshCell({ forceRefresh: true, suppressFlash: true });\n var event = this.createEvent(null, events_1.Events.EVENT_CELL_EDITING_STOPPED);\n this.beans.eventService.dispatchEvent(event);\n };\n CellComp.DOM_DATA_KEY_CELL_COMP = 'cellComp';\n CellComp.CELL_RENDERER_TYPE_NORMAL = 'cellRenderer';\n CellComp.CELL_RENDERER_TYPE_PINNED = 'pinnedRowCellRenderer';\n return CellComp;\n}(component_1.Component));\nexports.CellComp = CellComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar utils_1 = require(\"./utils\");\nvar MAT_GRID_SIZE = 8;\nvar FRESH_GRID_SIZE = 4;\nvar BALHAM_GRID_SIZE = 4;\nvar HARD_CODED_SIZES = {\n 'ag-theme-material': {\n headerHeight: MAT_GRID_SIZE * 7,\n virtualItemHeight: MAT_GRID_SIZE * 5,\n rowHeight: MAT_GRID_SIZE * 6\n },\n 'ag-theme-classic': {\n headerHeight: 25,\n virtualItemHeight: FRESH_GRID_SIZE * 5,\n rowHeight: 25\n },\n 'ag-theme-balham': {\n headerHeight: BALHAM_GRID_SIZE * 8,\n virtualItemHeight: BALHAM_GRID_SIZE * 7,\n rowHeight: BALHAM_GRID_SIZE * 7\n }\n};\nvar Environment = /** @class */ (function () {\n function Environment() {\n }\n Environment.prototype.getSassVariable = function (theme, key) {\n if (theme == 'ag-theme-material') {\n return HARD_CODED_SIZES['ag-theme-material'][key];\n }\n else if (theme == 'ag-theme-balham' || theme == 'ag-theme-balham-dark') {\n return HARD_CODED_SIZES['ag-theme-balham'][key];\n }\n return HARD_CODED_SIZES['ag-theme-classic'][key];\n };\n Environment.prototype.getTheme = function () {\n var reg = /\\bag-(fresh|dark|blue|material|bootstrap|(?:theme-([\\w\\-]*)))\\b/;\n var el = this.eGridDiv;\n var themeMatch;\n while (el) {\n themeMatch = reg.exec(el.className);\n el = el.parentElement;\n if (el == null || themeMatch) {\n break;\n }\n }\n if (!themeMatch) {\n return;\n }\n var theme = themeMatch[0];\n var usingOldTheme = themeMatch[2] === undefined;\n if (usingOldTheme) {\n var newTheme_1 = theme.replace('ag-', 'ag-theme-');\n utils_1._.doOnce(function () { return console.warn(\"ag-Grid: As of v19 old theme are no longer provided. Please replace \" + theme + \" with \" + newTheme_1 + \".\"); }, 'using-old-theme');\n }\n return theme;\n };\n __decorate([\n context_1.Autowired('eGridDiv'),\n __metadata(\"design:type\", HTMLElement)\n ], Environment.prototype, \"eGridDiv\", void 0);\n Environment = __decorate([\n context_1.Bean('environment')\n ], Environment);\n return Environment;\n}());\nexports.Environment = Environment;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"../../constants\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar columnApi_1 = require(\"../../columnController/columnApi\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar filterManager_1 = require(\"../../filter/filterManager\");\nvar rowNode_1 = require(\"../../entities/rowNode\");\nvar eventService_1 = require(\"../../eventService\");\nvar events_1 = require(\"../../events\");\nvar context_1 = require(\"../../context/context\");\nvar selectionController_1 = require(\"../../selectionController\");\nvar clientSideNodeManager_1 = require(\"./clientSideNodeManager\");\nvar changedPath_1 = require(\"./changedPath\");\nvar valueService_1 = require(\"../../valueService/valueService\");\nvar valueCache_1 = require(\"../../valueService/valueCache\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar utils_1 = require(\"../../utils\");\nvar RecursionType;\n(function (RecursionType) {\n RecursionType[RecursionType[\"Normal\"] = 0] = \"Normal\";\n RecursionType[RecursionType[\"AfterFilter\"] = 1] = \"AfterFilter\";\n RecursionType[RecursionType[\"AfterFilterAndSort\"] = 2] = \"AfterFilterAndSort\";\n RecursionType[RecursionType[\"PivotNodes\"] = 3] = \"PivotNodes\";\n})(RecursionType || (RecursionType = {}));\nvar ClientSideRowModel = /** @class */ (function () {\n function ClientSideRowModel() {\n }\n ClientSideRowModel.prototype.init = function () {\n var refreshEverythingFunc = this.refreshModel.bind(this, { step: constants_1.Constants.STEP_EVERYTHING });\n var refreshEverythingAfterColsChangedFunc = this.refreshModel.bind(this, { step: constants_1.Constants.STEP_EVERYTHING, afterColumnsChanged: true });\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, refreshEverythingAfterColsChangedFunc);\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, refreshEverythingFunc);\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_PIVOT_CHANGED, this.refreshModel.bind(this, { step: constants_1.Constants.STEP_PIVOT }));\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_ROW_GROUP_OPENED, this.onRowGroupOpened.bind(this));\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, refreshEverythingFunc);\n var refreshMapFunc = this.refreshModel.bind(this, {\n step: constants_1.Constants.STEP_MAP,\n keepRenderedRows: true,\n animate: true\n });\n this.gridOptionsWrapper.addEventListener(gridOptionsWrapper_1.GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN, refreshMapFunc);\n this.gridOptionsWrapper.addEventListener(gridOptionsWrapper_1.GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, refreshMapFunc);\n this.rootNode = new rowNode_1.RowNode();\n this.nodeManager = new clientSideNodeManager_1.ClientSideNodeManager(this.rootNode, this.gridOptionsWrapper, this.context, this.eventService, this.columnController, this.gridApi, this.columnApi, this.selectionController);\n this.context.wireBean(this.rootNode);\n };\n ClientSideRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n var atLeastOneChange;\n var res = false;\n // we do this multiple times as changing the row heights can also change the first and last rows,\n // so the first pass can make lots of rows smaller, which means the second pass we end up changing\n // more rows.\n do {\n atLeastOneChange = false;\n var rowAtStartPixel = this.getRowIndexAtPixel(startPixel);\n var rowAtEndPixel = this.getRowIndexAtPixel(endPixel);\n // keep check to current page if doing pagination\n var firstRow = Math.max(rowAtStartPixel, startLimitIndex);\n var lastRow = Math.min(rowAtEndPixel, endLimitIndex);\n for (var rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {\n var rowNode = this.getRow(rowIndex);\n if (rowNode.rowHeightEstimated) {\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode);\n rowNode.setRowHeight(rowHeight.height);\n atLeastOneChange = true;\n res = true;\n }\n }\n if (atLeastOneChange) {\n this.setRowTops();\n }\n } while (atLeastOneChange);\n return res;\n };\n ClientSideRowModel.prototype.setRowTops = function () {\n var nextRowTop = 0;\n for (var i = 0; i < this.rowsToDisplay.length; i++) {\n // we don't estimate if doing fullHeight or autoHeight, as all rows get rendered all the time\n // with these two layouts.\n var allowEstimate = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_NORMAL;\n var rowNode = this.rowsToDisplay[i];\n if (utils_1._.missing(rowNode.rowHeight)) {\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode, allowEstimate);\n rowNode.setRowHeight(rowHeight.height, rowHeight.estimated);\n }\n rowNode.setRowTop(nextRowTop);\n rowNode.setRowIndex(i);\n nextRowTop += rowNode.rowHeight;\n }\n };\n ClientSideRowModel.prototype.resetRowTops = function (rowNode, changedPath) {\n rowNode.clearRowTop();\n if (rowNode.hasChildren()) {\n if (rowNode.childrenAfterGroup) {\n // if a changedPath is active, it means we are here because of a transaction update or\n // a change detection. neither of these impacts the open/closed state of groups. so if\n // a group is not open this time, it was not open last time. so we know all closed groups\n // already have their top positions cleared. so there is no need to traverse all the way\n // when changedPath is active and the rowNode is not expanded.\n var skipChildren = changedPath.isActive() && !rowNode.expanded;\n if (!skipChildren) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n this.resetRowTops(rowNode.childrenAfterGroup[i], changedPath);\n }\n }\n }\n if (rowNode.sibling) {\n rowNode.sibling.clearRowTop();\n }\n }\n if (rowNode.detailNode) {\n rowNode.detailNode.clearRowTop();\n }\n };\n // returns false if row was moved, otherwise true\n ClientSideRowModel.prototype.ensureRowAtPixel = function (rowNode, pixel) {\n var indexAtPixelNow = this.getRowIndexAtPixel(pixel);\n var rowNodeAtPixelNow = this.getRow(indexAtPixelNow);\n if (rowNodeAtPixelNow === rowNode) {\n return false;\n }\n utils_1._.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n utils_1._.insertIntoArray(this.rootNode.allLeafChildren, rowNode, indexAtPixelNow);\n this.refreshModel({\n step: constants_1.Constants.STEP_EVERYTHING,\n keepRenderedRows: true,\n animate: true,\n keepEditingRows: true\n });\n return true;\n };\n ClientSideRowModel.prototype.isLastRowFound = function () {\n return true;\n };\n ClientSideRowModel.prototype.getRowCount = function () {\n if (this.rowsToDisplay) {\n return this.rowsToDisplay.length;\n }\n else {\n return 0;\n }\n };\n ClientSideRowModel.prototype.getRowBounds = function (index) {\n if (utils_1._.missing(this.rowsToDisplay)) {\n return null;\n }\n var rowNode = this.rowsToDisplay[index];\n if (rowNode) {\n return {\n rowTop: rowNode.rowTop,\n rowHeight: rowNode.rowHeight\n };\n }\n else {\n return null;\n }\n };\n ClientSideRowModel.prototype.onRowGroupOpened = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: constants_1.Constants.STEP_MAP, keepRenderedRows: true, animate: animate });\n };\n ClientSideRowModel.prototype.onFilterChanged = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: constants_1.Constants.STEP_FILTER, keepRenderedRows: true, animate: animate });\n };\n ClientSideRowModel.prototype.onSortChanged = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: constants_1.Constants.STEP_SORT, keepRenderedRows: true, animate: animate, keepEditingRows: true });\n };\n ClientSideRowModel.prototype.getType = function () {\n return constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n };\n ClientSideRowModel.prototype.onValueChanged = function () {\n if (this.columnController.isPivotActive()) {\n this.refreshModel({ step: constants_1.Constants.STEP_PIVOT });\n }\n else {\n this.refreshModel({ step: constants_1.Constants.STEP_AGGREGATE });\n }\n };\n ClientSideRowModel.prototype.createChangePath = function (rowNodeTransactions) {\n // for updates, if the row is updated at all, then we re-calc all the values\n // in that row. we could compare each value to each old value, however if we\n // did this, we would be calling the valueService twice, once on the old value\n // and once on the new value. so it's less valueGetter calls if we just assume\n // each column is different. that way the changedPath is used so that only\n // the impacted parent rows are recalculated, parents who's children have\n // not changed are not impacted.\n var noTransactions = utils_1._.missingOrEmpty(rowNodeTransactions);\n var changedPath = new changedPath_1.ChangedPath(false, this.rootNode);\n if (noTransactions || this.gridOptionsWrapper.isTreeData()) {\n changedPath.setInactive();\n }\n return changedPath;\n };\n ClientSideRowModel.prototype.refreshModel = function (params) {\n // this goes through the pipeline of stages. what's in my head is similar\n // to the diagram on this page:\n // http://commons.apache.org/sandbox/commons-pipeline/pipeline_basics.html\n // however we want to keep the results of each stage, hence we manually call\n // each step rather than have them chain each other.\n var _this = this;\n // fallthrough in below switch is on purpose,\n // eg if STEP_FILTER, then all steps below this\n // step get done\n // let start: number;\n // console.log('======= start =======');\n var changedPath = this.createChangePath(params.rowNodeTransactions);\n switch (params.step) {\n case constants_1.Constants.STEP_EVERYTHING:\n // start = new Date().getTime();\n this.doRowGrouping(params.groupState, params.rowNodeTransactions, params.rowNodeOrder, changedPath, params.afterColumnsChanged);\n // console.log('rowGrouping = ' + (new Date().getTime() - start));\n case constants_1.Constants.STEP_FILTER:\n // start = new Date().getTime();\n this.doFilter(changedPath);\n // console.log('filter = ' + (new Date().getTime() - start));\n case constants_1.Constants.STEP_PIVOT:\n this.doPivot(changedPath);\n case constants_1.Constants.STEP_AGGREGATE: // depends on agg fields\n // start = new Date().getTime();\n this.doAggregate(changedPath);\n // console.log('aggregation = ' + (new Date().getTime() - start));\n case constants_1.Constants.STEP_SORT:\n // start = new Date().getTime();\n this.doSort(params.rowNodeTransactions, changedPath);\n // console.log('sort = ' + (new Date().getTime() - start));\n case constants_1.Constants.STEP_MAP:\n // start = new Date().getTime();\n this.doRowsToDisplay();\n // console.log('rowsToDisplay = ' + (new Date().getTime() - start));\n }\n // set all row tops to null, then set row tops on all visible rows. if we don't\n // do this, then the algorithm below only sets row tops, old row tops from old rows\n // will still lie around\n this.resetRowTops(this.rootNode, changedPath);\n this.setRowTops();\n var event = {\n type: events_1.Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: params.animate,\n keepRenderedRows: params.keepRenderedRows,\n newData: params.newData,\n newPage: false\n };\n this.eventService.dispatchEvent(event);\n if (this.$scope) {\n window.setTimeout(function () {\n _this.$scope.$apply();\n }, 0);\n }\n };\n ClientSideRowModel.prototype.isEmpty = function () {\n var rowsMissing;\n var doingLegacyTreeData = utils_1._.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n if (doingLegacyTreeData) {\n rowsMissing = utils_1._.missing(this.rootNode.childrenAfterGroup) || this.rootNode.childrenAfterGroup.length === 0;\n }\n else {\n rowsMissing = utils_1._.missing(this.rootNode.allLeafChildren) || this.rootNode.allLeafChildren.length === 0;\n }\n var empty = utils_1._.missing(this.rootNode) || rowsMissing || !this.columnController.isReady();\n return empty;\n };\n ClientSideRowModel.prototype.isRowsToRender = function () {\n return utils_1._.exists(this.rowsToDisplay) && this.rowsToDisplay.length > 0;\n };\n ClientSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n // if lastSelectedNode is missing, we start at the first row\n var firstRowHit = !lastInRange;\n var lastRowHit = false;\n var lastRow;\n var result = [];\n var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.forEachNodeAfterFilterAndSort(function (rowNode) {\n var lookingForLastRow = firstRowHit && !lastRowHit;\n // check if we need to flip the select switch\n if (!firstRowHit) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n firstRowHit = true;\n }\n }\n var skipThisGroupNode = rowNode.group && groupsSelectChildren;\n if (!skipThisGroupNode) {\n var inRange = firstRowHit && !lastRowHit;\n var childOfLastRow = rowNode.isParentOfNode(lastRow);\n if (inRange || childOfLastRow) {\n result.push(rowNode);\n }\n }\n if (lookingForLastRow) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n lastRowHit = true;\n if (rowNode === lastInRange) {\n lastRow = lastInRange;\n }\n else {\n lastRow = firstInRange;\n }\n }\n }\n });\n return result;\n };\n ClientSideRowModel.prototype.setDatasource = function (datasource) {\n console.error('ag-Grid: should never call setDatasource on clientSideRowController');\n };\n ClientSideRowModel.prototype.getTopLevelNodes = function () {\n return this.rootNode ? this.rootNode.childrenAfterGroup : null;\n };\n ClientSideRowModel.prototype.getRootNode = function () {\n return this.rootNode;\n };\n ClientSideRowModel.prototype.getRow = function (index) {\n return this.rowsToDisplay[index];\n };\n ClientSideRowModel.prototype.isRowPresent = function (rowNode) {\n return this.rowsToDisplay.indexOf(rowNode) >= 0;\n };\n ClientSideRowModel.prototype.getVirtualRowCount = function () {\n console.warn('ag-Grid: rowModel.getVirtualRowCount() is not longer a function, use rowModel.getRowCount() instead');\n return this.getPageLastRow();\n };\n ClientSideRowModel.prototype.getPageFirstRow = function () {\n return 0;\n };\n ClientSideRowModel.prototype.getPageLastRow = function () {\n if (this.rowsToDisplay) {\n return this.rowsToDisplay.length - 1;\n }\n else {\n return 0;\n }\n };\n ClientSideRowModel.prototype.getRowIndexAtPixel = function (pixelToMatch) {\n if (this.isEmpty()) {\n return -1;\n }\n // do binary search of tree\n // http://oli.me.uk/2013/06/08/searching-javascript-arrays-with-a-binary-search/\n var bottomPointer = 0;\n var topPointer = this.rowsToDisplay.length - 1;\n // quick check, if the pixel is out of bounds, then return last row\n if (pixelToMatch <= 0) {\n // if pixel is less than or equal zero, it's always the first row\n return 0;\n }\n var lastNode = this.rowsToDisplay[this.rowsToDisplay.length - 1];\n if (lastNode.rowTop <= pixelToMatch) {\n return this.rowsToDisplay.length - 1;\n }\n while (true) {\n var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n var currentRowNode = this.rowsToDisplay[midPointer];\n if (this.isRowInPixel(currentRowNode, pixelToMatch)) {\n return midPointer;\n }\n else if (currentRowNode.rowTop < pixelToMatch) {\n bottomPointer = midPointer + 1;\n }\n else if (currentRowNode.rowTop > pixelToMatch) {\n topPointer = midPointer - 1;\n }\n }\n };\n ClientSideRowModel.prototype.isRowInPixel = function (rowNode, pixelToMatch) {\n var topPixel = rowNode.rowTop;\n var bottomPixel = rowNode.rowTop + rowNode.rowHeight;\n var pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;\n return pixelInRow;\n };\n ClientSideRowModel.prototype.getCurrentPageHeight = function () {\n if (this.rowsToDisplay && this.rowsToDisplay.length > 0) {\n var lastRow = this.rowsToDisplay[this.rowsToDisplay.length - 1];\n var lastPixel = lastRow.rowTop + lastRow.rowHeight;\n return lastPixel;\n }\n else {\n return 0;\n }\n };\n ClientSideRowModel.prototype.forEachLeafNode = function (callback) {\n if (this.rootNode.allLeafChildren) {\n this.rootNode.allLeafChildren.forEach(function (rowNode, index) { return callback(rowNode, index); });\n }\n };\n ClientSideRowModel.prototype.forEachNode = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterGroup, callback, RecursionType.Normal, 0);\n };\n ClientSideRowModel.prototype.forEachNodeAfterFilter = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterFilter, callback, RecursionType.AfterFilter, 0);\n };\n ClientSideRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterSort, callback, RecursionType.AfterFilterAndSort, 0);\n };\n ClientSideRowModel.prototype.forEachPivotNode = function (callback) {\n this.recursivelyWalkNodesAndCallback([this.rootNode], callback, RecursionType.PivotNodes, 0);\n };\n // iterates through each item in memory, and calls the callback function\n // nodes - the rowNodes to traverse\n // callback - the user provided callback\n // recursion type - need this to know what child nodes to recurse, eg if looking at all nodes, or filtered notes etc\n // index - works similar to the index in forEach in javascript's array function\n ClientSideRowModel.prototype.recursivelyWalkNodesAndCallback = function (nodes, callback, recursionType, index) {\n if (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n callback(node, index++);\n // go to the next level if it is a group\n if (node.hasChildren()) {\n // depending on the recursion type, we pick a difference set of children\n var nodeChildren = null;\n switch (recursionType) {\n case RecursionType.Normal:\n nodeChildren = node.childrenAfterGroup;\n break;\n case RecursionType.AfterFilter:\n nodeChildren = node.childrenAfterFilter;\n break;\n case RecursionType.AfterFilterAndSort:\n nodeChildren = node.childrenAfterSort;\n break;\n case RecursionType.PivotNodes:\n // for pivot, we don't go below leafGroup levels\n nodeChildren = !node.leafGroup ? node.childrenAfterSort : null;\n break;\n }\n if (nodeChildren) {\n index = this.recursivelyWalkNodesAndCallback(nodeChildren, callback, recursionType, index);\n }\n }\n }\n }\n return index;\n };\n // it's possible to recompute the aggregate without doing the other parts\n // + gridApi.recomputeAggregates()\n ClientSideRowModel.prototype.doAggregate = function (changedPath) {\n if (this.aggregationStage) {\n this.aggregationStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n };\n // + gridApi.expandAll()\n // + gridApi.collapseAll()\n ClientSideRowModel.prototype.expandOrCollapseAll = function (expand) {\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n if (this.rootNode) {\n recursiveExpandOrCollapse(this.rootNode.childrenAfterGroup);\n }\n function recursiveExpandOrCollapse(rowNodes) {\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var shouldExpandOrCollapse = usingTreeData ? utils_1._.exists(rowNode.childrenAfterGroup) : rowNode.group;\n if (shouldExpandOrCollapse) {\n rowNode.expanded = expand;\n recursiveExpandOrCollapse(rowNode.childrenAfterGroup);\n }\n });\n }\n this.refreshModel({ step: constants_1.Constants.STEP_MAP });\n var eventSource = expand ? 'expandAll' : 'collapseAll';\n var event = {\n api: this.gridApi,\n columnApi: this.columnApi,\n type: events_1.Events.EVENT_EXPAND_COLLAPSE_ALL,\n source: eventSource\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.doSort = function (rowNodeTransactions, changedPath) {\n this.sortStage.execute({\n rowNode: this.rootNode,\n rowNodeTransactions: rowNodeTransactions,\n changedPath: changedPath\n });\n };\n ClientSideRowModel.prototype.doRowGrouping = function (groupState, rowNodeTransactions, rowNodeOrder, changedPath, afterColumnsChanged) {\n var _this = this;\n // grouping is enterprise only, so if service missing, skip the step\n var doingLegacyTreeData = utils_1._.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n if (doingLegacyTreeData) {\n return;\n }\n if (this.groupStage) {\n if (rowNodeTransactions && utils_1._.exists(rowNodeTransactions)) {\n rowNodeTransactions.forEach(function (tran) {\n _this.groupStage.execute({\n rowNode: _this.rootNode,\n rowNodeTransaction: tran,\n rowNodeOrder: rowNodeOrder,\n changedPath: changedPath\n });\n });\n }\n else {\n // groups are about to get disposed, so need to deselect any that are selected\n this.selectionController.removeGroupsFromSelection();\n this.groupStage.execute({\n rowNode: this.rootNode,\n changedPath: changedPath,\n afterColumnsChanged: afterColumnsChanged\n });\n // set open/closed state on groups\n this.restoreGroupState(groupState);\n }\n if (this.gridOptionsWrapper.isGroupSelectsChildren()) {\n this.selectionController.updateGroupsFromChildrenSelections(changedPath);\n }\n }\n else {\n this.rootNode.childrenAfterGroup = this.rootNode.allLeafChildren;\n }\n };\n ClientSideRowModel.prototype.restoreGroupState = function (groupState) {\n if (!groupState) {\n return;\n }\n utils_1._.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) {\n // if the group was open last time, then open it this time. however\n // if was not open last time, then don't touch the group, so the 'groupDefaultExpanded'\n // setting will take effect.\n if (typeof groupState[key] === 'boolean') {\n node.expanded = groupState[key];\n }\n });\n };\n ClientSideRowModel.prototype.doFilter = function (changedPath) {\n this.filterStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n };\n ClientSideRowModel.prototype.doPivot = function (changedPath) {\n if (this.pivotStage) {\n this.pivotStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n };\n ClientSideRowModel.prototype.getGroupState = function () {\n if (!this.rootNode.childrenAfterGroup || !this.gridOptionsWrapper.isRememberGroupStateWhenNewData()) {\n return null;\n }\n var result = {};\n utils_1._.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) { return result[key] = node.expanded; });\n return result;\n };\n ClientSideRowModel.prototype.getCopyOfNodesMap = function () {\n return this.nodeManager.getCopyOfNodesMap();\n };\n ClientSideRowModel.prototype.getRowNode = function (id) {\n return this.nodeManager.getRowNode(id);\n };\n // rows: the rows to put into the model\n ClientSideRowModel.prototype.setRowData = function (rowData) {\n // no need to invalidate cache, as the cache is stored on the rowNode,\n // so new rowNodes means the cache is wiped anyway.\n // remember group state, so we can expand groups that should be expanded\n var groupState = this.getGroupState();\n this.nodeManager.setRowData(rowData);\n // this event kicks off:\n // - clears selection\n // - updates filters\n // - shows 'no rows' overlay if needed\n var rowDataChangedEvent = {\n type: events_1.Events.EVENT_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(rowDataChangedEvent);\n this.refreshModel({\n step: constants_1.Constants.STEP_EVERYTHING,\n groupState: groupState,\n newData: true\n });\n };\n ClientSideRowModel.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {\n var _this = this;\n if (!this.rowDataTransactionBatch) {\n this.rowDataTransactionBatch = [];\n var waitMillis = this.gridOptionsWrapper.getBatchUpdateWaitMillis();\n window.setTimeout(function () {\n _this.executeBatchUpdateRowData();\n _this.rowDataTransactionBatch = null;\n }, waitMillis);\n }\n this.rowDataTransactionBatch.push({ rowDataTransaction: rowDataTransaction, callback: callback });\n };\n ClientSideRowModel.prototype.executeBatchUpdateRowData = function () {\n var _this = this;\n this.valueCache.onDataChanged();\n var callbackFuncsBound = [];\n var rowNodeTrans = [];\n if (this.rowDataTransactionBatch) {\n this.rowDataTransactionBatch.forEach(function (tranItem) {\n var rowNodeTran = _this.nodeManager.updateRowData(tranItem.rowDataTransaction, null);\n rowNodeTrans.push(rowNodeTran);\n if (tranItem.callback) {\n callbackFuncsBound.push(tranItem.callback.bind(rowNodeTran));\n }\n });\n }\n this.commonUpdateRowData(rowNodeTrans);\n // do callbacks in next VM turn so it's async\n if (callbackFuncsBound.length > 0) {\n window.setTimeout(function () {\n callbackFuncsBound.forEach(function (func) { return func(); });\n }, 0);\n }\n };\n ClientSideRowModel.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n this.valueCache.onDataChanged();\n var rowNodeTran = this.nodeManager.updateRowData(rowDataTran, rowNodeOrder);\n this.commonUpdateRowData([rowNodeTran], rowNodeOrder);\n return rowNodeTran;\n };\n // common to updateRowData and batchUpdateRowData\n ClientSideRowModel.prototype.commonUpdateRowData = function (rowNodeTrans, rowNodeOrder) {\n this.refreshModel({\n step: constants_1.Constants.STEP_EVERYTHING,\n rowNodeTransactions: rowNodeTrans,\n rowNodeOrder: rowNodeOrder,\n keepRenderedRows: true,\n animate: true,\n keepEditingRows: true\n });\n var event = {\n type: events_1.Events.EVENT_ROW_DATA_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.doRowsToDisplay = function () {\n this.rowsToDisplay = this.flattenStage.execute({ rowNode: this.rootNode });\n };\n ClientSideRowModel.prototype.onRowHeightChanged = function () {\n this.refreshModel({ step: constants_1.Constants.STEP_MAP, keepRenderedRows: true, keepEditingRows: true });\n };\n ClientSideRowModel.prototype.resetRowHeights = function () {\n this.forEachNode(function (rowNode) { return rowNode.setRowHeight(null); });\n this.onRowHeightChanged();\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ClientSideRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], ClientSideRowModel.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('filterManager'),\n __metadata(\"design:type\", filterManager_1.FilterManager)\n ], ClientSideRowModel.prototype, \"filterManager\", void 0);\n __decorate([\n context_1.Autowired('$scope'),\n __metadata(\"design:type\", Object)\n ], ClientSideRowModel.prototype, \"$scope\", void 0);\n __decorate([\n context_1.Autowired('selectionController'),\n __metadata(\"design:type\", selectionController_1.SelectionController)\n ], ClientSideRowModel.prototype, \"selectionController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], ClientSideRowModel.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], ClientSideRowModel.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired('valueService'),\n __metadata(\"design:type\", valueService_1.ValueService)\n ], ClientSideRowModel.prototype, \"valueService\", void 0);\n __decorate([\n context_1.Autowired('valueCache'),\n __metadata(\"design:type\", valueCache_1.ValueCache)\n ], ClientSideRowModel.prototype, \"valueCache\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], ClientSideRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], ClientSideRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('filterStage'),\n __metadata(\"design:type\", Object)\n ], ClientSideRowModel.prototype, \"filterStage\", void 0);\n __decorate([\n context_1.Autowired('sortStage'),\n __metadata(\"design:type\", Object)\n ], ClientSideRowModel.prototype, \"sortStage\", void 0);\n __decorate([\n context_1.Autowired('flattenStage'),\n __metadata(\"design:type\", Object)\n ], ClientSideRowModel.prototype, \"flattenStage\", void 0);\n __decorate([\n context_1.Optional('groupStage'),\n __metadata(\"design:type\", Object)\n ], ClientSideRowModel.prototype, \"groupStage\", void 0);\n __decorate([\n context_1.Optional('aggregationStage'),\n __metadata(\"design:type\", Object)\n ], ClientSideRowModel.prototype, \"aggregationStage\", void 0);\n __decorate([\n context_1.Optional('pivotStage'),\n __metadata(\"design:type\", Object)\n ], ClientSideRowModel.prototype, \"pivotStage\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ClientSideRowModel.prototype, \"init\", null);\n ClientSideRowModel = __decorate([\n context_1.Bean('rowModel')\n ], ClientSideRowModel);\n return ClientSideRowModel;\n}());\nexports.ClientSideRowModel = ClientSideRowModel;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar TemplateService = /** @class */ (function () {\n function TemplateService() {\n this.templateCache = {};\n this.waitingCallbacks = {};\n }\n // returns the template if it is loaded, or null if it is not loaded\n // but will call the callback when it is loaded\n TemplateService.prototype.getTemplate = function (url, callback) {\n var templateFromCache = this.templateCache[url];\n if (templateFromCache) {\n return templateFromCache;\n }\n var callbackList = this.waitingCallbacks[url];\n var that = this;\n if (!callbackList) {\n // first time this was called, so need a new list for callbacks\n callbackList = [];\n this.waitingCallbacks[url] = callbackList;\n // and also need to do the http request\n var client = new XMLHttpRequest();\n client.onload = function () {\n that.handleHttpResult(this, url);\n };\n client.open(\"GET\", url);\n client.send();\n }\n // add this callback\n if (callback) {\n callbackList.push(callback);\n }\n // caller needs to wait for template to load, so return null\n return null;\n };\n TemplateService.prototype.handleHttpResult = function (httpResult, url) {\n if (httpResult.status !== 200 || httpResult.response === null) {\n console.warn(\"Unable to get template error \" + httpResult.status + \" - \" + url);\n return;\n }\n // response success, so process it\n // in IE9 the response is in - responseText\n this.templateCache[url] = httpResult.response || httpResult.responseText;\n // inform all listeners that this is now in the cache\n var callbacks = this.waitingCallbacks[url];\n for (var i = 0; i < callbacks.length; i++) {\n var callback = callbacks[i];\n // we could pass the callback the response, however we know the client of this code\n // is the cell renderer, and it passes the 'cellRefresh' method in as the callback\n // which doesn't take any parameters.\n callback();\n }\n if (this.$scope) {\n var that_1 = this;\n window.setTimeout(function () {\n that_1.$scope.$apply();\n }, 0);\n }\n };\n __decorate([\n context_2.Autowired('$scope'),\n __metadata(\"design:type\", Object)\n ], TemplateService.prototype, \"$scope\", void 0);\n TemplateService = __decorate([\n context_1.Bean('templateService')\n ], TemplateService);\n return TemplateService;\n}());\nexports.TemplateService = TemplateService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar eventService_1 = require(\"./eventService\");\nvar logger_1 = require(\"./logger\");\nvar events_1 = require(\"./events\");\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar context_3 = require(\"./context/context\");\nvar context_4 = require(\"./context/context\");\nvar AlignedGridsService = /** @class */ (function () {\n function AlignedGridsService() {\n // flag to mark if we are consuming. to avoid cyclic events (ie other grid firing back to master\n // while processing a master event) we mark this if consuming an event, and if we are, then\n // we don't fire back any events.\n this.consuming = false;\n }\n AlignedGridsService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('AlignedGridsService');\n };\n AlignedGridsService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n AlignedGridsService.prototype.init = function () {\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_MOVED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_VISIBLE, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_PINNED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_GROUP_OPENED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_RESIZED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_BODY_SCROLL, this.fireScrollEvent.bind(this));\n };\n // common logic across all the fire methods\n AlignedGridsService.prototype.fireEvent = function (callback) {\n // if we are already consuming, then we are acting on an event from a master,\n // so we don't cause a cyclic firing of events\n if (this.consuming) {\n return;\n }\n // iterate through the aligned grids, and pass each aligned grid service to the callback\n var otherGrids = this.gridOptionsWrapper.getAlignedGrids();\n if (otherGrids) {\n otherGrids.forEach(function (otherGridOptions) {\n if (otherGridOptions.api) {\n var alignedGridService = otherGridOptions.api.__getAlignedGridService();\n callback(alignedGridService);\n }\n });\n }\n };\n // common logic across all consume methods. very little common logic, however extracting\n // guarantees consistency across the methods.\n AlignedGridsService.prototype.onEvent = function (callback) {\n this.consuming = true;\n callback();\n this.consuming = false;\n };\n AlignedGridsService.prototype.fireColumnEvent = function (event) {\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onColumnEvent(event);\n });\n };\n AlignedGridsService.prototype.fireScrollEvent = function (event) {\n if (event.direction !== 'horizontal') {\n return;\n }\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onScrollEvent(event);\n });\n };\n AlignedGridsService.prototype.onScrollEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n _this.gridPanel.setHorizontalScrollPosition(event.left);\n });\n };\n AlignedGridsService.prototype.getMasterColumns = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column);\n });\n }\n else if (event.column) {\n result.push(event.column);\n }\n return result;\n };\n AlignedGridsService.prototype.getColumnIds = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column.getColId());\n });\n }\n else if (event.column) {\n result.push(event.column.getColId());\n }\n return result;\n };\n AlignedGridsService.prototype.onColumnEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n switch (event.type) {\n case events_1.Events.EVENT_COLUMN_MOVED:\n case events_1.Events.EVENT_COLUMN_VISIBLE:\n case events_1.Events.EVENT_COLUMN_PINNED:\n case events_1.Events.EVENT_COLUMN_RESIZED:\n var colEvent = event;\n _this.processColumnEvent(colEvent);\n break;\n case events_1.Events.EVENT_COLUMN_GROUP_OPENED:\n var groupOpenedEvent = event;\n _this.processGroupOpenedEvent(groupOpenedEvent);\n break;\n case events_1.Events.EVENT_COLUMN_PIVOT_CHANGED:\n // we cannot support pivoting with aligned grids as the columns will be out of sync as the\n // grids will have columns created based on the row data of the grid.\n console.warn('ag-Grid: pivoting is not supported with aligned grids. ' +\n 'You can only use one of these features at a time in a grid.');\n break;\n }\n });\n };\n AlignedGridsService.prototype.processGroupOpenedEvent = function (groupOpenedEvent) {\n // likewise for column group\n var masterColumnGroup = groupOpenedEvent.columnGroup;\n var otherColumnGroup;\n if (masterColumnGroup) {\n var groupId = masterColumnGroup.getGroupId();\n otherColumnGroup = this.columnController.getOriginalColumnGroup(groupId);\n }\n if (masterColumnGroup && !otherColumnGroup) {\n return;\n }\n this.logger.log('onColumnEvent-> processing ' + groupOpenedEvent + ' expanded = ' + masterColumnGroup.isExpanded());\n this.columnController.setColumnGroupOpened(otherColumnGroup, masterColumnGroup.isExpanded(), \"alignedGridChanged\");\n };\n AlignedGridsService.prototype.processColumnEvent = function (colEvent) {\n var _this = this;\n // the column in the event is from the master grid. need to\n // look up the equivalent from this (other) grid\n var masterColumn = colEvent.column;\n var otherColumn;\n if (masterColumn) {\n otherColumn = this.columnController.getPrimaryColumn(masterColumn.getColId());\n }\n // if event was with respect to a master column, that is not present in this\n // grid, then we ignore the event\n if (masterColumn && !otherColumn) {\n return;\n }\n // in time, all the methods below should use the column ids, it's a more generic way\n // of handling columns, and also allows for single or multi column events\n var columnIds = this.getColumnIds(colEvent);\n var masterColumns = this.getMasterColumns(colEvent);\n switch (colEvent.type) {\n case events_1.Events.EVENT_COLUMN_MOVED:\n var movedEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" toIndex = \" + movedEvent.toIndex);\n this.columnController.moveColumns(columnIds, movedEvent.toIndex, \"alignedGridChanged\");\n break;\n case events_1.Events.EVENT_COLUMN_VISIBLE:\n var visibleEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" visible = \" + visibleEvent.visible);\n this.columnController.setColumnsVisible(columnIds, visibleEvent.visible, \"alignedGridChanged\");\n break;\n case events_1.Events.EVENT_COLUMN_PINNED:\n var pinnedEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" pinned = \" + pinnedEvent.pinned);\n this.columnController.setColumnsPinned(columnIds, pinnedEvent.pinned, \"alignedGridChanged\");\n break;\n case events_1.Events.EVENT_COLUMN_RESIZED:\n var resizedEvent_1 = colEvent;\n masterColumns.forEach(function (column) {\n _this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" actualWidth = \" + column.getActualWidth());\n _this.columnController.setColumnWidth(column.getColId(), column.getActualWidth(), false, resizedEvent_1.finished, \"alignedGridChanged\");\n });\n break;\n }\n var isVerticalScrollShowing = this.gridPanel.isVerticalScrollShowing();\n var alignedGrids = this.gridOptionsWrapper.getAlignedGrids();\n alignedGrids.forEach(function (grid) {\n grid.api.setAlwaysShowVerticalScroll(isVerticalScrollShowing);\n });\n };\n __decorate([\n context_3.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], AlignedGridsService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_3.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], AlignedGridsService.prototype, \"columnController\", void 0);\n __decorate([\n context_3.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], AlignedGridsService.prototype, \"eventService\", void 0);\n __decorate([\n __param(0, context_2.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], AlignedGridsService.prototype, \"setBeans\", null);\n __decorate([\n context_4.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], AlignedGridsService.prototype, \"init\", null);\n AlignedGridsService = __decorate([\n context_1.Bean('alignedGridsService')\n ], AlignedGridsService);\n return AlignedGridsService;\n}());\nexports.AlignedGridsService = AlignedGridsService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar logger_1 = require(\"../logger\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar dragService_1 = require(\"./dragService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar environment_1 = require(\"../environment\");\nvar utils_1 = require(\"../utils\");\nvar DragSourceType;\n(function (DragSourceType) {\n DragSourceType[DragSourceType[\"ToolPanel\"] = 0] = \"ToolPanel\";\n DragSourceType[DragSourceType[\"HeaderCell\"] = 1] = \"HeaderCell\";\n DragSourceType[DragSourceType[\"RowDrag\"] = 2] = \"RowDrag\";\n})(DragSourceType = exports.DragSourceType || (exports.DragSourceType = {}));\nvar VDirection;\n(function (VDirection) {\n VDirection[VDirection[\"Up\"] = 0] = \"Up\";\n VDirection[VDirection[\"Down\"] = 1] = \"Down\";\n})(VDirection = exports.VDirection || (exports.VDirection = {}));\nvar HDirection;\n(function (HDirection) {\n HDirection[HDirection[\"Left\"] = 0] = \"Left\";\n HDirection[HDirection[\"Right\"] = 1] = \"Right\";\n})(HDirection = exports.HDirection || (exports.HDirection = {}));\nvar DragAndDropService = /** @class */ (function () {\n function DragAndDropService() {\n this.dragSourceAndParamsList = [];\n this.dropTargets = [];\n }\n DragAndDropService_1 = DragAndDropService;\n DragAndDropService.prototype.init = function () {\n this.ePinnedIcon = utils_1._.createIcon('columnMovePin', this.gridOptionsWrapper, null);\n this.ePlusIcon = utils_1._.createIcon('columnMoveAdd', this.gridOptionsWrapper, null);\n this.eHiddenIcon = utils_1._.createIcon('columnMoveHide', this.gridOptionsWrapper, null);\n this.eMoveIcon = utils_1._.createIcon('columnMoveMove', this.gridOptionsWrapper, null);\n this.eLeftIcon = utils_1._.createIcon('columnMoveLeft', this.gridOptionsWrapper, null);\n this.eRightIcon = utils_1._.createIcon('columnMoveRight', this.gridOptionsWrapper, null);\n this.eGroupIcon = utils_1._.createIcon('columnMoveGroup', this.gridOptionsWrapper, null);\n this.eAggregateIcon = utils_1._.createIcon('columnMoveValue', this.gridOptionsWrapper, null);\n this.ePivotIcon = utils_1._.createIcon('columnMovePivot', this.gridOptionsWrapper, null);\n this.eDropNotAllowedIcon = utils_1._.createIcon('dropNotAllowed', this.gridOptionsWrapper, null);\n };\n DragAndDropService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('OldToolPanelDragAndDropService');\n };\n DragAndDropService.prototype.getStringType = function (type) {\n switch (type) {\n case DragSourceType.RowDrag: return 'row';\n case DragSourceType.HeaderCell: return 'headerCell';\n case DragSourceType.ToolPanel: return 'toolPanel';\n default:\n console.warn(\"ag-Grid: bug - unknown drag type \" + type);\n return null;\n }\n };\n DragAndDropService.prototype.addDragSource = function (dragSource, allowTouch) {\n if (allowTouch === void 0) { allowTouch = false; }\n var params = {\n eElement: dragSource.eElement,\n dragStartPixels: dragSource.dragStartPixels,\n onDragStart: this.onDragStart.bind(this, dragSource),\n onDragStop: this.onDragStop.bind(this),\n onDragging: this.onDragging.bind(this)\n };\n this.dragSourceAndParamsList.push({ params: params, dragSource: dragSource });\n this.dragService.addDragSource(params, allowTouch);\n };\n DragAndDropService.prototype.removeDragSource = function (dragSource) {\n var sourceAndParams = utils_1._.find(this.dragSourceAndParamsList, function (item) { return item.dragSource === dragSource; });\n if (sourceAndParams) {\n this.dragService.removeDragSource(sourceAndParams.params);\n utils_1._.removeFromArray(this.dragSourceAndParamsList, sourceAndParams);\n }\n };\n DragAndDropService.prototype.destroy = function () {\n var _this = this;\n this.dragSourceAndParamsList.forEach(function (sourceAndParams) {\n _this.dragService.removeDragSource(sourceAndParams.params);\n });\n this.dragSourceAndParamsList.length = 0;\n };\n DragAndDropService.prototype.nudge = function () {\n if (this.dragging) {\n this.onDragging(this.eventLastTime, true);\n }\n };\n DragAndDropService.prototype.onDragStart = function (dragSource, mouseEvent) {\n this.dragging = true;\n this.dragSource = dragSource;\n this.eventLastTime = mouseEvent;\n this.dragItem = this.dragSource.dragItemCallback();\n this.lastDropTarget = this.dragSource.dragSourceDropTarget;\n if (this.dragSource.dragStarted) {\n this.dragSource.dragStarted();\n }\n this.createGhost();\n };\n DragAndDropService.prototype.onDragStop = function (mouseEvent) {\n this.eventLastTime = null;\n this.dragging = false;\n if (this.dragSource.dragStopped) {\n this.dragSource.dragStopped();\n }\n if (this.lastDropTarget && this.lastDropTarget.onDragStop) {\n var draggingEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, null, null, false);\n this.lastDropTarget.onDragStop(draggingEvent);\n }\n this.lastDropTarget = null;\n this.dragItem = null;\n this.removeGhost();\n };\n DragAndDropService.prototype.onDragging = function (mouseEvent, fromNudge) {\n var hDirection = this.workOutHDirection(mouseEvent);\n var vDirection = this.workOutVDirection(mouseEvent);\n this.eventLastTime = mouseEvent;\n this.positionGhost(mouseEvent);\n // check if mouseEvent intersects with any of the drop targets\n var dropTarget = utils_1._.find(this.dropTargets, this.isMouseOnDropTarget.bind(this, mouseEvent));\n if (dropTarget !== this.lastDropTarget) {\n this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);\n this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget = dropTarget;\n }\n else if (dropTarget) {\n var draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragging(draggingEvent);\n }\n };\n DragAndDropService.prototype.enterDragTargetIfExists = function (dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {\n if (!dropTarget) {\n return;\n }\n var dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragEnter(dragEnterEvent);\n this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);\n };\n DragAndDropService.prototype.leaveLastTargetIfExists = function (mouseEvent, hDirection, vDirection, fromNudge) {\n if (!this.lastDropTarget) {\n return;\n }\n var dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget.onDragLeave(dragLeaveEvent);\n this.setGhostIcon(null);\n };\n DragAndDropService.prototype.getAllContainersFromDropTarget = function (dropTarget) {\n var containers = [dropTarget.getContainer()];\n var secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;\n if (secondaryContainers) {\n containers = containers.concat(secondaryContainers);\n }\n return containers;\n };\n // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers\n DragAndDropService.prototype.isMouseOnDropTarget = function (mouseEvent, dropTarget) {\n var allContainers = this.getAllContainersFromDropTarget(dropTarget);\n var mouseOverTarget = false;\n allContainers.forEach(function (eContainer) {\n if (!eContainer) {\n return;\n } // secondary can be missing\n var rect = eContainer.getBoundingClientRect();\n // if element is not visible, then width and height are zero\n if (rect.width === 0 || rect.height === 0) {\n return;\n }\n var horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX <= rect.right;\n var verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY <= rect.bottom;\n //console.log(`rect.width = ${rect.width} || rect.height = ${rect.height} ## verticalFit = ${verticalFit}, horizontalFit = ${horizontalFit}, `);\n if (horizontalFit && verticalFit) {\n mouseOverTarget = true;\n }\n });\n if (mouseOverTarget) {\n var mouseOverTargetAndInterested = dropTarget.isInterestedIn(this.dragSource.type);\n return mouseOverTargetAndInterested;\n }\n else {\n return false;\n }\n };\n DragAndDropService.prototype.addDropTarget = function (dropTarget) {\n this.dropTargets.push(dropTarget);\n };\n DragAndDropService.prototype.workOutHDirection = function (event) {\n if (this.eventLastTime.clientX > event.clientX) {\n return HDirection.Left;\n }\n else if (this.eventLastTime.clientX < event.clientX) {\n return HDirection.Right;\n }\n else {\n return null;\n }\n };\n DragAndDropService.prototype.workOutVDirection = function (event) {\n if (this.eventLastTime.clientY > event.clientY) {\n return VDirection.Up;\n }\n else if (this.eventLastTime.clientY < event.clientY) {\n return VDirection.Down;\n }\n else {\n return null;\n }\n };\n DragAndDropService.prototype.createDropTargetEvent = function (dropTarget, event, hDirection, vDirection, fromNudge) {\n // localise x and y to the target component\n var rect = dropTarget.getContainer().getBoundingClientRect();\n var x = event.clientX - rect.left;\n var y = event.clientY - rect.top;\n var dropTargetEvent = {\n event: event,\n x: x,\n y: y,\n vDirection: vDirection,\n hDirection: hDirection,\n dragSource: this.dragSource,\n fromNudge: fromNudge,\n dragItem: this.dragItem\n };\n return dropTargetEvent;\n };\n DragAndDropService.prototype.positionGhost = function (event) {\n var ghostRect = this.eGhost.getBoundingClientRect();\n var ghostHeight = ghostRect.height;\n // for some reason, without the '-2', it still overlapped by 1 or 2 pixels, which\n // then brought in scrollbars to the browser. no idea why, but putting in -2 here\n // works around it which is good enough for me.\n var browserWidth = utils_1._.getBodyWidth() - 2;\n var browserHeight = utils_1._.getBodyHeight() - 2;\n // put ghost vertically in middle of cursor\n var top = event.pageY - (ghostHeight / 2);\n // horizontally, place cursor just right of icon\n var left = event.pageX - 30;\n var usrDocument = this.gridOptionsWrapper.getDocument();\n var windowScrollY = window.pageYOffset || usrDocument.documentElement.scrollTop;\n var windowScrollX = window.pageXOffset || usrDocument.documentElement.scrollLeft;\n // check ghost is not positioned outside of the browser\n if (browserWidth > 0) {\n if ((left + this.eGhost.clientWidth) > (browserWidth + windowScrollX)) {\n left = browserWidth + windowScrollX - this.eGhost.clientWidth;\n }\n }\n if (left < 0) {\n left = 0;\n }\n if (browserHeight > 0) {\n if ((top + this.eGhost.clientHeight) > (browserHeight + windowScrollY)) {\n top = browserHeight + windowScrollY - this.eGhost.clientHeight;\n }\n }\n if (top < 0) {\n top = 0;\n }\n this.eGhost.style.left = left + 'px';\n this.eGhost.style.top = top + 'px';\n };\n DragAndDropService.prototype.removeGhost = function () {\n if (this.eGhost && this.eGhostParent) {\n this.eGhostParent.removeChild(this.eGhost);\n }\n this.eGhost = null;\n };\n DragAndDropService.prototype.createGhost = function () {\n this.eGhost = utils_1._.loadTemplate(DragAndDropService_1.GHOST_TEMPLATE);\n var theme = this.environment.getTheme();\n if (theme) {\n utils_1._.addCssClass(this.eGhost, theme);\n }\n this.eGhostIcon = this.eGhost.querySelector('.ag-dnd-ghost-icon');\n this.setGhostIcon(null);\n var eText = this.eGhost.querySelector('.ag-dnd-ghost-label');\n eText.innerHTML = utils_1._.escape(this.dragSource.dragItemName);\n this.eGhost.style.height = '25px';\n this.eGhost.style.top = '20px';\n this.eGhost.style.left = '20px';\n var usrDocument = this.gridOptionsWrapper.getDocument();\n this.eGhostParent = usrDocument.querySelector('body');\n if (!this.eGhostParent) {\n console.warn('ag-Grid: could not find document body, it is needed for dragging columns');\n }\n else {\n this.eGhostParent.appendChild(this.eGhost);\n }\n };\n DragAndDropService.prototype.setGhostIcon = function (iconName, shake) {\n if (shake === void 0) { shake = false; }\n utils_1._.clearElement(this.eGhostIcon);\n var eIcon;\n switch (iconName) {\n case DragAndDropService_1.ICON_ADD:\n eIcon = this.ePlusIcon;\n break;\n case DragAndDropService_1.ICON_PINNED:\n eIcon = this.ePinnedIcon;\n break;\n case DragAndDropService_1.ICON_MOVE:\n eIcon = this.eMoveIcon;\n break;\n case DragAndDropService_1.ICON_LEFT:\n eIcon = this.eLeftIcon;\n break;\n case DragAndDropService_1.ICON_RIGHT:\n eIcon = this.eRightIcon;\n break;\n case DragAndDropService_1.ICON_GROUP:\n eIcon = this.eGroupIcon;\n break;\n case DragAndDropService_1.ICON_AGGREGATE:\n eIcon = this.eAggregateIcon;\n break;\n case DragAndDropService_1.ICON_PIVOT:\n eIcon = this.ePivotIcon;\n break;\n case DragAndDropService_1.ICON_NOT_ALLOWED:\n eIcon = this.eDropNotAllowedIcon;\n break;\n default:\n eIcon = this.eHiddenIcon;\n break;\n }\n this.eGhostIcon.appendChild(eIcon);\n utils_1._.addOrRemoveCssClass(this.eGhostIcon, 'ag-shake-left-to-right', shake);\n };\n var DragAndDropService_1;\n DragAndDropService.ICON_PINNED = 'pinned';\n DragAndDropService.ICON_ADD = 'add';\n DragAndDropService.ICON_MOVE = 'move';\n DragAndDropService.ICON_LEFT = 'left';\n DragAndDropService.ICON_RIGHT = 'right';\n DragAndDropService.ICON_GROUP = 'group';\n DragAndDropService.ICON_AGGREGATE = 'aggregate';\n DragAndDropService.ICON_PIVOT = 'pivot';\n DragAndDropService.ICON_NOT_ALLOWED = 'notAllowed';\n DragAndDropService.GHOST_TEMPLATE = '
' +\n ' ' +\n '
' +\n '
' +\n '
';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], DragAndDropService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('dragService'),\n __metadata(\"design:type\", dragService_1.DragService)\n ], DragAndDropService.prototype, \"dragService\", void 0);\n __decorate([\n context_1.Autowired('environment'),\n __metadata(\"design:type\", environment_1.Environment)\n ], DragAndDropService.prototype, \"environment\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], DragAndDropService.prototype, \"columnController\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], DragAndDropService.prototype, \"init\", null);\n __decorate([\n __param(0, context_1.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], DragAndDropService.prototype, \"setBeans\", null);\n __decorate([\n context_1.PreDestroy,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], DragAndDropService.prototype, \"destroy\", null);\n DragAndDropService = DragAndDropService_1 = __decorate([\n context_1.Bean('dragAndDropService')\n ], DragAndDropService);\n return DragAndDropService;\n}());\nexports.DragAndDropService = DragAndDropService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar constants_1 = require(\"../../constants\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar utils_1 = require(\"../../utils\");\nvar ImmutableService = /** @class */ (function () {\n function ImmutableService() {\n }\n ImmutableService.prototype.postConstruct = function () {\n if (this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n };\n // converts the setRowData() command to a transaction\n ImmutableService.prototype.createTransactionForRowData = function (data) {\n if (utils_1._.missing(this.clientSideRowModel)) {\n console.error('ag-Grid: ImmutableService only works with ClientSideRowModel');\n return;\n }\n var getRowNodeIdFunc = this.gridOptionsWrapper.getRowNodeIdFunc();\n if (!getRowNodeIdFunc || utils_1._.missing(getRowNodeIdFunc)) {\n console.error('ag-Grid: ImmutableService requires getRowNodeId() callback to be implemented, your row data need IDs!');\n return;\n }\n // convert the data into a transaction object by working out adds, removes and updates\n var transaction = {\n remove: [],\n update: [],\n add: []\n };\n var existingNodesMap = this.clientSideRowModel.getCopyOfNodesMap();\n var suppressSortOrder = this.gridOptionsWrapper.isSuppressMaintainUnsortedOrder();\n var orderMap = suppressSortOrder ? null : {};\n if (utils_1._.exists(data)) {\n // split all the new data in the following:\n // if new, push to 'add'\n // if update, push to 'update'\n // if not changed, do not include in the transaction\n data.forEach(function (dataItem, index) {\n var id = getRowNodeIdFunc(dataItem);\n var existingNode = existingNodesMap[id];\n if (orderMap) {\n orderMap[id] = index;\n }\n if (existingNode) {\n var dataHasChanged = existingNode.data !== dataItem;\n if (dataHasChanged) {\n transaction.update.push(dataItem);\n }\n // otherwise, if data not changed, we just don't include it anywhere, as it's not a delta\n // remove from list, so we know the item is not to be removed\n existingNodesMap[id] = undefined;\n }\n else {\n transaction.add.push(dataItem);\n }\n });\n }\n // at this point, all rows that are left, should be removed\n utils_1._.iterateObject(existingNodesMap, function (id, rowNode) {\n if (rowNode) {\n transaction.remove.push(rowNode.data);\n }\n });\n return [transaction, orderMap];\n };\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], ImmutableService.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ImmutableService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ImmutableService.prototype, \"postConstruct\", null);\n ImmutableService = __decorate([\n context_1.Bean('immutableService')\n ], ImmutableService);\n return ImmutableService;\n}());\nexports.ImmutableService = ImmutableService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar StylingService = /** @class */ (function () {\n function StylingService() {\n }\n StylingService.prototype.processAllCellClasses = function (colDef, params, onApplicableClass, onNotApplicableClass) {\n this.processClassRules(colDef.cellClassRules, params, onApplicableClass, onNotApplicableClass);\n this.processStaticCellClasses(colDef, params, onApplicableClass);\n };\n StylingService.prototype.processClassRules = function (classRules, params, onApplicableClass, onNotApplicableClass) {\n if (typeof classRules === 'object' && classRules !== null) {\n var classNames = Object.keys(classRules);\n for (var i = 0; i < classNames.length; i++) {\n var className = classNames[i];\n var rule = classRules[className];\n var resultOfRule = void 0;\n if (typeof rule === 'string') {\n resultOfRule = this.expressionService.evaluate(rule, params);\n }\n else if (typeof rule === 'function') {\n resultOfRule = rule(params);\n }\n if (resultOfRule) {\n onApplicableClass(className);\n }\n else if (onNotApplicableClass) {\n onNotApplicableClass(className);\n }\n }\n }\n };\n StylingService.prototype.processStaticCellClasses = function (colDef, params, onApplicableClass) {\n var cellClass = colDef.cellClass;\n if (cellClass) {\n var classOrClasses = void 0;\n if (typeof colDef.cellClass === 'function') {\n var cellClassFunc = colDef.cellClass;\n classOrClasses = cellClassFunc(params);\n }\n else {\n classOrClasses = colDef.cellClass;\n }\n if (typeof classOrClasses === 'string') {\n onApplicableClass(classOrClasses);\n }\n else if (Array.isArray(classOrClasses)) {\n classOrClasses.forEach(function (cssClassItem) {\n onApplicableClass(cssClassItem);\n });\n }\n }\n };\n __decorate([\n context_1.Autowired('expressionService'),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], StylingService.prototype, \"expressionService\", void 0);\n StylingService = __decorate([\n context_1.Bean('stylingService')\n ], StylingService);\n return StylingService;\n}());\nexports.StylingService = StylingService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar column_1 = require(\"./entities/column\");\nvar context_1 = require(\"./context/context\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar columnApi_1 = require(\"./columnController/columnApi\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar eventService_1 = require(\"./eventService\");\nvar events_1 = require(\"./events\");\nvar gridApi_1 = require(\"./gridApi\");\nvar utils_1 = require(\"./utils\");\nvar SortController = /** @class */ (function () {\n function SortController() {\n }\n SortController_1 = SortController;\n SortController.prototype.progressSort = function (column, multiSort, source) {\n if (source === void 0) { source = \"api\"; }\n var nextDirection = this.getNextSortDirection(column);\n this.setSortForColumn(column, nextDirection, multiSort, source);\n };\n SortController.prototype.setSortForColumn = function (column, sort, multiSort, source) {\n if (source === void 0) { source = \"api\"; }\n // auto correct - if sort not legal value, then set it to 'no sort' (which is null)\n if (sort !== column_1.Column.SORT_ASC && sort !== column_1.Column.SORT_DESC) {\n sort = null;\n }\n // update sort on current col\n column.setSort(sort, source);\n // sortedAt used for knowing order of cols when multi-col sort\n if (column.getSort()) {\n var sortedAt = Number(new Date().valueOf());\n column.setSortedAt(sortedAt);\n }\n else {\n column.setSortedAt(null);\n }\n var doingMultiSort = multiSort && !this.gridOptionsWrapper.isSuppressMultiSort();\n // clear sort on all columns except this one, and update the icons\n if (!doingMultiSort) {\n this.clearSortBarThisColumn(column, source);\n }\n this.dispatchSortChangedEvents();\n };\n // gets called by API, so if data changes, use can call this, which will end up\n // working out the sort order again of the rows.\n SortController.prototype.onSortChanged = function () {\n this.dispatchSortChangedEvents();\n };\n SortController.prototype.dispatchSortChangedEvents = function () {\n var event = {\n type: events_1.Events.EVENT_SORT_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n SortController.prototype.clearSortBarThisColumn = function (columnToSkip, source) {\n this.columnController.getPrimaryAndSecondaryAndAutoColumns().forEach(function (columnToClear) {\n // Do not clear if either holding shift, or if column in question was clicked\n if (!(columnToClear === columnToSkip)) {\n // setting to 'undefined' as null means 'none' rather than cleared, otherwise issue will arise\n // if sort order is: ['desc', null , 'asc'], as it will start at null rather than 'desc'.\n columnToClear.setSort(undefined, source);\n }\n });\n };\n SortController.prototype.getNextSortDirection = function (column) {\n var sortingOrder;\n if (column.getColDef().sortingOrder) {\n sortingOrder = column.getColDef().sortingOrder;\n }\n else if (this.gridOptionsWrapper.getSortingOrder()) {\n sortingOrder = this.gridOptionsWrapper.getSortingOrder();\n }\n else {\n sortingOrder = SortController_1.DEFAULT_SORTING_ORDER;\n }\n if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {\n console.warn(\"ag-grid: sortingOrder must be an array with at least one element, currently it's \" + sortingOrder);\n return null;\n }\n var currentIndex = sortingOrder.indexOf(column.getSort());\n var notInArray = currentIndex < 0;\n var lastItemInArray = currentIndex == sortingOrder.length - 1;\n var result;\n if (notInArray || lastItemInArray) {\n result = sortingOrder[0];\n }\n else {\n result = sortingOrder[currentIndex + 1];\n }\n // verify the sort type exists, as the user could provide the sortingOrder, need to make sure it's valid\n if (SortController_1.DEFAULT_SORTING_ORDER.indexOf(result) < 0) {\n console.warn('ag-grid: invalid sort type ' + result);\n return null;\n }\n return result;\n };\n // used by the public api, for saving the sort model\n SortController.prototype.getSortModel = function () {\n var columnsWithSorting = this.getColumnsWithSortingOrdered();\n return utils_1._.map(columnsWithSorting, function (column) {\n return {\n colId: column.getColId(),\n sort: column.getSort()\n };\n });\n };\n SortController.prototype.setSortModel = function (sortModel, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n // first up, clear any previous sort\n var sortModelProvided = sortModel && sortModel.length > 0;\n var allColumnsIncludingAuto = this.columnController.getPrimaryAndSecondaryAndAutoColumns();\n allColumnsIncludingAuto.forEach(function (column) {\n var sortForCol = null;\n var sortedAt = -1;\n if (sortModelProvided && column.getColDef().sortable) {\n for (var j = 0; j < sortModel.length; j++) {\n var sortModelEntry = sortModel[j];\n if (typeof sortModelEntry.colId === 'string'\n && typeof column.getColId() === 'string'\n && _this.compareColIds(sortModelEntry, column)) {\n sortForCol = sortModelEntry.sort;\n sortedAt = j;\n }\n }\n }\n if (sortForCol) {\n column.setSort(sortForCol, source);\n column.setSortedAt(sortedAt);\n }\n else {\n column.setSort(null, source);\n column.setSortedAt(null);\n }\n });\n this.dispatchSortChangedEvents();\n };\n SortController.prototype.compareColIds = function (sortModelEntry, column) {\n return sortModelEntry.colId === column.getColId();\n };\n SortController.prototype.getColumnsWithSortingOrdered = function () {\n // pull out all the columns that have sorting set\n var allColumnsIncludingAuto = this.columnController.getPrimaryAndSecondaryAndAutoColumns();\n var columnsWithSorting = utils_1._.filter(allColumnsIncludingAuto, function (column) { return !!column.getSort(); });\n // put the columns in order of which one got sorted first\n columnsWithSorting.sort(function (a, b) { return a.sortedAt - b.sortedAt; });\n return columnsWithSorting;\n };\n // used by row controller, when doing the sorting\n SortController.prototype.getSortForRowController = function () {\n var columnsWithSorting = this.getColumnsWithSortingOrdered();\n return utils_1._.map(columnsWithSorting, function (column) {\n var ascending = column.getSort() === column_1.Column.SORT_ASC;\n return {\n inverter: ascending ? 1 : -1,\n column: column\n };\n });\n };\n var SortController_1;\n SortController.DEFAULT_SORTING_ORDER = [column_1.Column.SORT_ASC, column_1.Column.SORT_DESC, null];\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], SortController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], SortController.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], SortController.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], SortController.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], SortController.prototype, \"gridApi\", void 0);\n SortController = SortController_1 = __decorate([\n context_1.Bean('sortController')\n ], SortController);\n return SortController;\n}());\nexports.SortController = SortController;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar logger_1 = require(\"../logger\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar utils_1 = require(\"../utils\");\n/** Adds drag listening onto an element. In ag-Grid this is used twice, first is resizing columns,\n * second is moving the columns and column groups around (ie the 'drag' part of Drag and Drop. */\nvar DragService = /** @class */ (function () {\n function DragService() {\n this.onMouseUpListener = this.onMouseUp.bind(this);\n this.onMouseMoveListener = this.onMouseMove.bind(this);\n this.onTouchEndListener = this.onTouchUp.bind(this);\n this.onTouchMoveListener = this.onTouchMove.bind(this);\n this.dragEndFunctions = [];\n this.dragSources = [];\n }\n DragService.prototype.init = function () {\n this.logger = this.loggerFactory.create('DragService');\n };\n DragService.prototype.destroy = function () {\n this.dragSources.forEach(this.removeListener.bind(this));\n this.dragSources.length = 0;\n };\n DragService.prototype.removeListener = function (dragSourceAndListener) {\n var element = dragSourceAndListener.dragSource.eElement;\n var mouseDownListener = dragSourceAndListener.mouseDownListener;\n element.removeEventListener('mousedown', mouseDownListener);\n // remove touch listener only if it exists\n if (dragSourceAndListener.touchEnabled) {\n var touchStartListener = dragSourceAndListener.touchStartListener;\n element.removeEventListener('touchstart', touchStartListener, { passive: true });\n }\n };\n DragService.prototype.removeDragSource = function (params) {\n var dragSourceAndListener = utils_1._.find(this.dragSources, function (item) { return item.dragSource === params; });\n if (!dragSourceAndListener) {\n return;\n }\n this.removeListener(dragSourceAndListener);\n utils_1._.removeFromArray(this.dragSources, dragSourceAndListener);\n };\n DragService.prototype.setNoSelectToBody = function (noSelect) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var eBody = eDocument.querySelector('body');\n if (utils_1._.exists(eBody)) {\n // when we drag the mouse in ag-Grid, this class gets added / removed from the body, so that\n // the mouse isn't selecting text when dragging.\n utils_1._.addOrRemoveCssClass(eBody, 'ag-unselectable', noSelect);\n }\n };\n DragService.prototype.addDragSource = function (params, includeTouch) {\n if (includeTouch === void 0) { includeTouch = false; }\n var mouseListener = this.onMouseDown.bind(this, params);\n params.eElement.addEventListener('mousedown', mouseListener);\n var touchListener = null;\n var suppressTouch = this.gridOptionsWrapper.isSuppressTouch();\n if (includeTouch && !suppressTouch) {\n touchListener = this.onTouchStart.bind(this, params);\n params.eElement.addEventListener('touchstart', touchListener, { passive: false });\n }\n this.dragSources.push({\n dragSource: params,\n mouseDownListener: mouseListener,\n touchStartListener: touchListener,\n touchEnabled: includeTouch\n });\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onTouchStart = function (params, touchEvent) {\n var _this = this;\n this.currentDragParams = params;\n this.dragging = false;\n var touch = touchEvent.touches[0];\n this.touchLastTime = touch;\n this.touchStart = touch;\n touchEvent.preventDefault();\n // we temporally add these listeners, for the duration of the drag, they\n // are removed in touch end handling.\n params.eElement.addEventListener('touchmove', this.onTouchMoveListener, { passive: true });\n params.eElement.addEventListener('touchend', this.onTouchEndListener, { passive: true });\n params.eElement.addEventListener('touchcancel', this.onTouchEndListener, { passive: true });\n this.dragEndFunctions.push(function () {\n params.eElement.removeEventListener('touchmove', _this.onTouchMoveListener, { passive: true });\n params.eElement.removeEventListener('touchend', _this.onTouchEndListener, { passive: true });\n params.eElement.removeEventListener('touchcancel', _this.onTouchEndListener, { passive: true });\n });\n // see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onCommonMove(touch, this.touchStart);\n }\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onMouseDown = function (params, mouseEvent) {\n var _this = this;\n // we ignore when shift key is pressed. this is for the range selection, as when\n // user shift-clicks a cell, this should not be interpreted as the start of a drag.\n // if (mouseEvent.shiftKey) { return; }\n if (params.skipMouseEvent) {\n if (params.skipMouseEvent(mouseEvent)) {\n return;\n }\n }\n // if there are two elements with parent / child relationship, and both are draggable,\n // when we drag the child, we should NOT drag the parent. an example of this is row moving\n // and range selection - row moving should get preference when use drags the rowDrag component.\n if (mouseEvent._alreadyProcessedByDragService) {\n return;\n }\n mouseEvent._alreadyProcessedByDragService = true;\n // only interested in left button clicks\n if (mouseEvent.button !== 0) {\n return;\n }\n this.currentDragParams = params;\n this.dragging = false;\n this.mouseEventLastTime = mouseEvent;\n this.mouseStartEvent = mouseEvent;\n var eDocument = this.gridOptionsWrapper.getDocument();\n // we temporally add these listeners, for the duration of the drag, they\n // are removed in mouseup handling.\n eDocument.addEventListener('mousemove', this.onMouseMoveListener);\n eDocument.addEventListener('mouseup', this.onMouseUpListener);\n this.dragEndFunctions.push(function () {\n eDocument.removeEventListener('mousemove', _this.onMouseMoveListener);\n eDocument.removeEventListener('mouseup', _this.onMouseUpListener);\n });\n //see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onMouseMove(mouseEvent);\n }\n };\n // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n DragService.prototype.isEventNearStartEvent = function (currentEvent, startEvent) {\n // by default, we wait 4 pixels before starting the drag\n var dragStartPixels = this.currentDragParams.dragStartPixels;\n var requiredPixelDiff = utils_1._.exists(dragStartPixels) ? dragStartPixels : 4;\n return utils_1._.areEventsNear(currentEvent, startEvent, requiredPixelDiff);\n };\n DragService.prototype.getFirstActiveTouch = function (touchList) {\n for (var i = 0; i < touchList.length; i++) {\n if (touchList[i].identifier === this.touchStart.identifier) {\n return touchList[i];\n }\n }\n return null;\n };\n DragService.prototype.onCommonMove = function (currentEvent, startEvent) {\n if (!this.dragging) {\n // if mouse hasn't travelled from the start position enough, do nothing\n if (!this.dragging && this.isEventNearStartEvent(currentEvent, startEvent)) {\n return;\n }\n this.dragging = true;\n var event_1 = {\n type: events_1.Events.EVENT_DRAG_STARTED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n this.currentDragParams.onDragStart(startEvent);\n this.setNoSelectToBody(true);\n }\n this.currentDragParams.onDragging(currentEvent);\n };\n DragService.prototype.onTouchMove = function (touchEvent) {\n var touch = this.getFirstActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n // this.___statusPanel.setInfoText(Math.random() + ' onTouchMove preventDefault stopPropagation');\n // if we don't preview default, then the browser will try and do it's own touch stuff,\n // like do 'back button' (chrome does this) or scroll the page (eg drag column could be confused\n // with scroll page in the app)\n // touchEvent.preventDefault();\n this.onCommonMove(touch, this.touchStart);\n };\n // only gets called after a mouse down - as this is only added after mouseDown\n // and is removed when mouseUp happens\n DragService.prototype.onMouseMove = function (mouseEvent) {\n this.onCommonMove(mouseEvent, this.mouseStartEvent);\n };\n DragService.prototype.onTouchUp = function (touchEvent) {\n var touch = this.getFirstActiveTouch(touchEvent.changedTouches);\n // i haven't worked this out yet, but there is no matching touch\n // when we get the touch up event. to get around this, we swap in\n // the last touch. this is a hack to 'get it working' while we\n // figure out what's going on, why we are not getting a touch in\n // current event.\n if (!touch) {\n touch = this.touchLastTime;\n }\n // if mouse was left up before we started to move, then this is a tap.\n // we check this before onUpCommon as onUpCommon resets the dragging\n // let tap = !this.dragging;\n // let tapTarget = this.currentDragParams.eElement;\n this.onUpCommon(touch);\n // if tap, tell user\n // console.log(`${Math.random()} tap = ${tap}`);\n // if (tap) {\n // tapTarget.click();\n // }\n };\n DragService.prototype.onMouseUp = function (mouseEvent) {\n this.onUpCommon(mouseEvent);\n };\n DragService.prototype.onUpCommon = function (eventOrTouch) {\n if (this.dragging) {\n this.dragging = false;\n this.currentDragParams.onDragStop(eventOrTouch);\n var event_2 = {\n type: events_1.Events.EVENT_DRAG_STOPPED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_2);\n }\n this.setNoSelectToBody(false);\n this.mouseStartEvent = null;\n this.mouseEventLastTime = null;\n this.touchStart = null;\n this.touchLastTime = null;\n this.currentDragParams = null;\n this.dragEndFunctions.forEach(function (func) { return func(); });\n this.dragEndFunctions.length = 0;\n };\n __decorate([\n context_1.Autowired('loggerFactory'),\n __metadata(\"design:type\", logger_1.LoggerFactory)\n ], DragService.prototype, \"loggerFactory\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], DragService.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], DragService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], DragService.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], DragService.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], DragService.prototype, \"init\", null);\n __decorate([\n context_1.PreDestroy,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], DragService.prototype, \"destroy\", null);\n DragService = __decorate([\n context_1.Bean('dragService')\n ], DragService);\n return DragService;\n}());\nexports.DragService = DragService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** The base frameworks, eg React & Angular 2, override this bean with implementations specific to their requirement. */\nvar BaseFrameworkFactory = /** @class */ (function () {\n function BaseFrameworkFactory() {\n }\n BaseFrameworkFactory.prototype.dateComponent = function (gridOptions) {\n return gridOptions.dateComponent;\n };\n BaseFrameworkFactory.prototype.colDefFloatingCellRenderer = function (colDef) {\n return colDef.pinnedRowCellRenderer;\n };\n BaseFrameworkFactory.prototype.colDefCellRenderer = function (colDef) {\n return colDef.cellRenderer;\n };\n BaseFrameworkFactory.prototype.colDefCellEditor = function (colDef) {\n return colDef.cellEditor;\n };\n BaseFrameworkFactory.prototype.colDefFilter = function (colDef) {\n return colDef.filter;\n };\n BaseFrameworkFactory.prototype.gridOptionsFullWidthCellRenderer = function (gridOptions) {\n return gridOptions.fullWidthCellRenderer;\n };\n BaseFrameworkFactory.prototype.gridOptionsGroupRowRenderer = function (gridOptions) {\n return gridOptions.groupRowRenderer;\n };\n BaseFrameworkFactory.prototype.gridOptionsGroupRowInnerRenderer = function (gridOptions) {\n return gridOptions.groupRowInnerRenderer;\n };\n BaseFrameworkFactory.prototype.setTimeout = function (action, timeout) {\n window.setTimeout(action, timeout);\n };\n return BaseFrameworkFactory;\n}());\nexports.BaseFrameworkFactory = BaseFrameworkFactory;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar baseFilter_1 = require(\"./baseFilter\");\nvar utils_1 = require(\"../utils\");\nvar NumberFilter = /** @class */ (function (_super) {\n __extends(NumberFilter, _super);\n function NumberFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NumberFilter.prototype.modelFromFloatingFilter = function (from) {\n return {\n type: this.selectedFilter,\n filter: Number(from),\n filterTo: this.filterNumberTo,\n filterType: 'number'\n };\n };\n NumberFilter.prototype.getApplicableFilterTypes = function () {\n return [baseFilter_1.BaseFilter.EQUALS, baseFilter_1.BaseFilter.NOT_EQUAL, baseFilter_1.BaseFilter.LESS_THAN,\n baseFilter_1.BaseFilter.LESS_THAN_OR_EQUAL, baseFilter_1.BaseFilter.GREATER_THAN, baseFilter_1.BaseFilter.GREATER_THAN_OR_EQUAL, baseFilter_1.BaseFilter.IN_RANGE];\n };\n NumberFilter.prototype.bodyTemplate = function (type) {\n var translate = this.translate.bind(this);\n var fieldId = type == baseFilter_1.FilterConditionType.MAIN ? \"filterText\" : \"filterConditionText\";\n var filterNumberToPanelId = type == baseFilter_1.FilterConditionType.MAIN ? \"filterNumberToPanel\" : \"filterNumberToPanelCondition\";\n var fieldToId = type == baseFilter_1.FilterConditionType.MAIN ? \"filterToText\" : \"filterToConditionText\";\n return \"
\\n
\\n \\n
\\n
\\n \\n
\\n
\";\n };\n NumberFilter.prototype.initialiseFilterBodyUi = function (type) {\n _super.prototype.initialiseFilterBodyUi.call(this, type);\n if (type === baseFilter_1.FilterConditionType.MAIN) {\n this.eFilterTextField = this.queryForHtmlInputElement(\"#filterText\");\n this.addFilterChangedEventListeners(type, this.eFilterTextField, this.eFilterToTextField);\n }\n else {\n this.eFilterTextConditionField = this.queryForHtmlInputElement(\"#filterConditionText\");\n this.addFilterChangedEventListeners(type, this.eFilterTextConditionField, this.eFilterToConditionText);\n this.setFilter(this.filterNumberCondition, baseFilter_1.FilterConditionType.CONDITION);\n this.setFilterTo(this.filterNumberConditionTo, baseFilter_1.FilterConditionType.CONDITION);\n this.setFilterType(this.selectedFilterCondition, baseFilter_1.FilterConditionType.CONDITION);\n }\n };\n NumberFilter.prototype.addFilterChangedEventListeners = function (type, filterElement, filterToElement) {\n var _this = this;\n var debounceMs = this.getDebounceMs(this.filterParams);\n var toDebounce = utils_1._.debounce(function () { return _this.onTextFieldsChanged(type, filterElement, filterToElement); }, debounceMs);\n this.addDestroyableEventListener(filterElement, \"input\", toDebounce);\n this.addDestroyableEventListener(filterToElement, \"input\", toDebounce);\n };\n NumberFilter.prototype.afterGuiAttached = function () {\n this.eFilterTextField.focus();\n };\n NumberFilter.prototype.comparator = function () {\n return function (left, right) {\n if (left === right) {\n return 0;\n }\n if (left < right) {\n return 1;\n }\n if (left > right) {\n return -1;\n }\n };\n };\n NumberFilter.prototype.onTextFieldsChanged = function (type, filterElement, filterToElement) {\n var newFilter = this.stringToFloat(filterElement.value);\n var newFilterTo = this.stringToFloat(filterToElement.value);\n if (type === baseFilter_1.FilterConditionType.MAIN) {\n if (this.filterNumber !== newFilter || this.filterNumberTo !== newFilterTo) {\n this.filterNumber = newFilter;\n this.filterNumberTo = newFilterTo;\n this.onFilterChanged();\n }\n }\n else {\n if (this.filterNumberCondition !== newFilter || this.filterNumberConditionTo !== newFilterTo) {\n this.filterNumberCondition = newFilter;\n this.filterNumberConditionTo = newFilterTo;\n this.onFilterChanged();\n }\n }\n };\n NumberFilter.prototype.filterValues = function (type) {\n if (type === baseFilter_1.FilterConditionType.MAIN) {\n return this.selectedFilter !== baseFilter_1.BaseFilter.IN_RANGE ?\n this.asNumber(this.filterNumber) :\n [this.asNumber(this.filterNumber), this.asNumber(this.filterNumberTo)];\n }\n return this.selectedFilterCondition !== baseFilter_1.BaseFilter.IN_RANGE ?\n this.asNumber(this.filterNumberCondition) :\n [this.asNumber(this.filterNumberCondition), this.asNumber(this.filterNumberConditionTo)];\n };\n NumberFilter.prototype.asNumber = function (value) {\n return utils_1._.isNumeric(value) ? value : null;\n };\n NumberFilter.prototype.stringToFloat = function (value) {\n var filterText = utils_1._.makeNull(value);\n if (filterText && filterText.trim() === '') {\n filterText = null;\n }\n var newFilter;\n if (filterText !== null && filterText !== undefined) {\n newFilter = parseFloat(filterText);\n }\n else {\n newFilter = null;\n }\n return newFilter;\n };\n NumberFilter.prototype.setFilter = function (filter, type) {\n filter = utils_1._.makeNull(filter);\n if (filter !== null && !(typeof filter === 'number')) {\n filter = parseFloat(filter);\n }\n if (type === baseFilter_1.FilterConditionType.MAIN) {\n this.filterNumber = filter;\n if (!this.eFilterTextField) {\n return;\n }\n this.eFilterTextField.value = filter;\n }\n else {\n this.filterNumberCondition = filter;\n if (!this.eFilterTextConditionField) {\n return;\n }\n this.eFilterTextConditionField.value = filter;\n }\n };\n NumberFilter.prototype.setFilterTo = function (filter, type) {\n filter = utils_1._.makeNull(filter);\n if (filter !== null && !(typeof filter === 'number')) {\n filter = parseFloat(filter);\n }\n if (type === baseFilter_1.FilterConditionType.MAIN) {\n this.filterNumberTo = filter;\n if (!this.eFilterToTextField) {\n return;\n }\n this.eFilterToTextField.value = filter;\n }\n else {\n this.filterNumberConditionTo = filter;\n if (!this.eFilterToConditionText) {\n return;\n }\n this.eFilterToConditionText.value = filter;\n }\n };\n NumberFilter.prototype.getFilter = function (type) {\n return type === baseFilter_1.FilterConditionType.MAIN ? this.filterNumber : this.filterNumberCondition;\n };\n NumberFilter.prototype.serialize = function (type) {\n var selectedFilter = type === baseFilter_1.FilterConditionType.MAIN ? this.selectedFilter : this.selectedFilterCondition;\n var filterNumber = type === baseFilter_1.FilterConditionType.MAIN ? this.filterNumber : this.filterNumberCondition;\n var filterNumberTo = type === baseFilter_1.FilterConditionType.MAIN ? this.filterNumberTo : this.filterNumberConditionTo;\n return {\n type: selectedFilter ? selectedFilter : this.defaultFilter,\n filter: filterNumber,\n filterTo: filterNumberTo,\n filterType: 'number'\n };\n };\n NumberFilter.prototype.parse = function (model, type) {\n this.setFilterType(model.type, type);\n this.setFilter(model.filter, type);\n this.setFilterTo(model.filterTo, type);\n };\n NumberFilter.prototype.refreshFilterBodyUi = function (type) {\n var filterType = type === baseFilter_1.FilterConditionType.MAIN ? this.selectedFilter : this.selectedFilterCondition;\n // show / hide in-range filter\n var panel = type === baseFilter_1.FilterConditionType.MAIN ? this.eNumberToPanel : this.eNumberToConditionPanel;\n if (panel) {\n var visible = filterType === NumberFilter.IN_RANGE;\n utils_1._.setVisible(panel, visible);\n }\n // show / hide filter input, i.e. if custom filter has 'hideFilterInputField = true' or an empty filter\n var filterInput = type === baseFilter_1.FilterConditionType.MAIN ? this.eFilterTextField : this.eFilterTextConditionField;\n if (filterInput) {\n var showFilterInput = !this.doesFilterHaveHiddenInput(filterType) && filterType !== baseFilter_1.BaseFilter.EMPTY;\n utils_1._.setVisible(filterInput, showFilterInput);\n }\n };\n NumberFilter.prototype.resetState = function (resetConditionFilterOnly) {\n if (resetConditionFilterOnly === void 0) { resetConditionFilterOnly = false; }\n if (!resetConditionFilterOnly) {\n this.setFilterType(this.defaultFilter, baseFilter_1.FilterConditionType.MAIN);\n this.setFilter(null, baseFilter_1.FilterConditionType.MAIN);\n this.setFilterTo(null, baseFilter_1.FilterConditionType.MAIN);\n }\n this.setFilterType(this.defaultFilter, baseFilter_1.FilterConditionType.CONDITION);\n this.setFilter(null, baseFilter_1.FilterConditionType.CONDITION);\n this.setFilterTo(null, baseFilter_1.FilterConditionType.CONDITION);\n };\n NumberFilter.prototype.setType = function (filterType, type) {\n this.setFilterType(filterType, type);\n };\n NumberFilter.LESS_THAN = 'lessThan';\n __decorate([\n componentAnnotations_1.QuerySelector('#filterText'),\n __metadata(\"design:type\", HTMLInputElement)\n ], NumberFilter.prototype, \"eFilterTextField\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#filterTextCondition'),\n __metadata(\"design:type\", HTMLInputElement)\n ], NumberFilter.prototype, \"eFilterTextConditionField\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#filterToText'),\n __metadata(\"design:type\", HTMLInputElement)\n ], NumberFilter.prototype, \"eFilterToTextField\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#filterToConditionText'),\n __metadata(\"design:type\", HTMLInputElement)\n ], NumberFilter.prototype, \"eFilterToConditionText\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#filterNumberToPanel'),\n __metadata(\"design:type\", HTMLElement)\n ], NumberFilter.prototype, \"eNumberToPanel\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#filterNumberToPanelCondition'),\n __metadata(\"design:type\", HTMLElement)\n ], NumberFilter.prototype, \"eNumberToConditionPanel\", void 0);\n return NumberFilter;\n}(baseFilter_1.ScalarBaseFilter));\nexports.NumberFilter = NumberFilter;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventKeys_1 = require(\"./eventKeys\");\nexports.Events = eventKeys_1.Events;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar context_1 = require(\"../../context/context\");\nvar component_1 = require(\"../../widgets/component\");\nvar LoadingOverlayComponent = /** @class */ (function (_super) {\n __extends(LoadingOverlayComponent, _super);\n function LoadingOverlayComponent() {\n return _super.call(this) || this;\n }\n LoadingOverlayComponent.prototype.init = function (params) {\n var template = this.gridOptionsWrapper.getOverlayLoadingTemplate() ?\n this.gridOptionsWrapper.getOverlayLoadingTemplate() : LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var localisedTemplate = template.replace('[LOADING...]', localeTextFunc('loadingOoo', 'Loading...'));\n this.setTemplate(localisedTemplate);\n };\n LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE = '[LOADING...]';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], LoadingOverlayComponent.prototype, \"gridOptionsWrapper\", void 0);\n return LoadingOverlayComponent;\n}(component_1.Component));\nexports.LoadingOverlayComponent = LoadingOverlayComponent;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cellComp_1 = require(\"./cellComp\");\nvar rowNode_1 = require(\"../entities/rowNode\");\nvar column_1 = require(\"../entities/column\");\nvar events_1 = require(\"../events\");\nvar component_1 = require(\"../widgets/component\");\nvar utils_1 = require(\"../utils\");\nvar RowComp = /** @class */ (function (_super) {\n __extends(RowComp, _super);\n function RowComp(parentScope, bodyContainerComp, pinnedLeftContainerComp, pinnedRightContainerComp, fullWidthContainerComp, rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout, embedFullWidth) {\n var _this = _super.call(this) || this;\n _this.eAllRowContainers = [];\n _this.active = true;\n _this.rowContainerReadyCount = 0;\n _this.refreshNeeded = false;\n _this.columnRefreshPending = false;\n _this.cellComps = {};\n // for animations, there are bits we want done in the next VM turn, to all DOM to update first.\n // instead of each row doing a setTimeout(func,0), we put the functions here and the rowRenderer\n // executes them all in one timeout\n _this.createSecondPassFuncs = [];\n // these get called before the row is destroyed - they set up the DOM for the remove animation (ie they\n // set the DOM up for the animation), then the delayedDestroyFunctions get called when the animation is\n // complete (ie removes from the dom).\n _this.removeFirstPassFuncs = [];\n // for animations, these functions get called 400ms after the row is cleared, called by the rowRenderer\n // so each row isn't setting up it's own timeout\n _this.removeSecondPassFuncs = [];\n _this.initialised = false;\n _this.parentScope = parentScope;\n _this.beans = beans;\n _this.bodyContainerComp = bodyContainerComp;\n _this.pinnedLeftContainerComp = pinnedLeftContainerComp;\n _this.pinnedRightContainerComp = pinnedRightContainerComp;\n _this.fullWidthContainerComp = fullWidthContainerComp;\n _this.rowNode = rowNode;\n _this.rowIsEven = _this.rowNode.rowIndex % 2 === 0;\n _this.paginationPage = _this.beans.paginationProxy.getCurrentPage();\n _this.useAnimationFrameForCreate = useAnimationFrameForCreate;\n _this.printLayout = printLayout;\n _this.embedFullWidth = embedFullWidth;\n _this.setAnimateFlags(animateIn);\n return _this;\n }\n RowComp.prototype.init = function () {\n var _this = this;\n this.rowFocused = this.beans.focusedCellController.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n this.scope = this.createChildScopeOrNull(this.rowNode.data);\n this.setupRowContainers();\n this.addListeners();\n if (this.slideRowIn) {\n this.createSecondPassFuncs.push(function () {\n _this.onTopChanged();\n });\n }\n if (this.fadeRowIn) {\n this.createSecondPassFuncs.push(function () {\n _this.eAllRowContainers.forEach(function (eRow) { return utils_1._.removeCssClass(eRow, 'ag-opacity-zero'); });\n });\n }\n };\n RowComp.prototype.createTemplate = function (contents, extraCssClass) {\n if (extraCssClass === void 0) { extraCssClass = null; }\n var templateParts = [];\n var rowHeight = this.rowNode.rowHeight;\n var rowClasses = this.getInitialRowClasses(extraCssClass).join(' ');\n var rowIdSanitised = utils_1._.escape(this.rowNode.id);\n var userRowStyles = this.preProcessStylesFromGridOptions();\n var businessKey = this.getRowBusinessKey();\n var businessKeySanitised = utils_1._.escape(businessKey);\n var rowTopStyle = this.getInitialRowTopStyle();\n templateParts.push(\"\");\n // add in the template for the cells\n templateParts.push(contents);\n templateParts.push(\"\");\n return templateParts.join('');\n };\n RowComp.prototype.getCellForCol = function (column) {\n var cellComp = this.cellComps[column.getColId()];\n return cellComp ? cellComp.getGui() : null;\n };\n RowComp.prototype.afterFlush = function () {\n if (this.initialised) {\n return;\n }\n this.initialised = true;\n this.executeProcessRowPostCreateFunc();\n };\n RowComp.prototype.executeProcessRowPostCreateFunc = function () {\n var func = this.beans.gridOptionsWrapper.getProcessRowPostCreateFunc();\n if (!func) {\n return;\n }\n var params = {\n eRow: this.eBodyRow,\n ePinnedLeftRow: this.ePinnedLeftRow,\n ePinnedRightRow: this.ePinnedRightRow,\n node: this.rowNode,\n api: this.beans.gridOptionsWrapper.getApi(),\n rowIndex: this.rowNode.rowIndex,\n addRenderedRowListener: this.addEventListener.bind(this),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n func(params);\n };\n RowComp.prototype.getInitialRowTopStyle = function () {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return '';\n }\n // if sliding in, we take the old row top. otherwise we just set the current row top.\n var pixels = this.slideRowIn ? this.roundRowTopToBounds(this.rowNode.oldRowTop) : this.rowNode.rowTop;\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n var afterScalingPixels = this.beans.maxDivHeightScaler.getRealPixelPosition(afterPaginationPixels);\n var isSuppressRowTransform = this.beans.gridOptionsWrapper.isSuppressRowTransform();\n return isSuppressRowTransform ? \"top: \" + afterScalingPixels + \"px; \" : \"transform: translateY(\" + afterScalingPixels + \"px);\";\n };\n RowComp.prototype.getRowBusinessKey = function () {\n var businessKeyForNodeFunc = this.beans.gridOptionsWrapper.getBusinessKeyForNodeFunc();\n if (typeof businessKeyForNodeFunc !== 'function') {\n return;\n }\n return businessKeyForNodeFunc(this.rowNode);\n };\n RowComp.prototype.areAllContainersReady = function () {\n return this.rowContainerReadyCount === 3;\n };\n RowComp.prototype.lazyCreateCells = function (cols, eRow) {\n if (!this.active) {\n return;\n }\n var cellTemplatesAndComps = this.createCells(cols);\n eRow.innerHTML = cellTemplatesAndComps.template;\n this.callAfterRowAttachedOnCells(cellTemplatesAndComps.cellComps, eRow);\n this.rowContainerReadyCount++;\n if (this.areAllContainersReady() && this.refreshNeeded) {\n this.refreshCells();\n }\n };\n RowComp.prototype.createRowContainer = function (rowContainerComp, cols, callback) {\n var _this = this;\n var useAnimationsFrameForCreate = this.useAnimationFrameForCreate;\n var cellTemplatesAndComps = useAnimationsFrameForCreate ? { cellComps: [], template: '' } : this.createCells(cols);\n var rowTemplate = this.createTemplate(cellTemplatesAndComps.template);\n // the RowRenderer is probably inserting many rows. rather than inserting each template one\n // at a time, the grid inserts all rows together - so the callback here is called by the\n // rowRenderer when all RowComps are created, then all the HTML is inserted in one go,\n // and then all the callbacks are called. this is NOT done in an animation frame.\n rowContainerComp.appendRowTemplate(rowTemplate, function () {\n var eRow = rowContainerComp.getRowElement(_this.getCompId());\n _this.afterRowAttached(rowContainerComp, eRow);\n callback(eRow);\n // console.log(`createRowContainer ${this.getCompId()}`);\n if (useAnimationsFrameForCreate) {\n _this.beans.taskQueue.addP1Task(_this.lazyCreateCells.bind(_this, cols, eRow), _this.rowNode.rowIndex);\n }\n else {\n _this.callAfterRowAttachedOnCells(cellTemplatesAndComps.cellComps, eRow);\n _this.rowContainerReadyCount = 3;\n }\n });\n };\n RowComp.prototype.createChildScopeOrNull = function (data) {\n var isAngularCompileRows = this.beans.gridOptionsWrapper.isAngularCompileRows();\n if (!isAngularCompileRows) {\n return null;\n }\n var newChildScope = this.parentScope.$new();\n newChildScope.data = __assign({}, data);\n newChildScope.rowNode = this.rowNode;\n newChildScope.context = this.beans.gridOptionsWrapper.getContext();\n this.addDestroyFunc(function () {\n newChildScope.$destroy();\n newChildScope.data = null;\n newChildScope.rowNode = null;\n newChildScope.context = null;\n });\n return newChildScope;\n };\n RowComp.prototype.setupRowContainers = function () {\n var isFullWidthCellFunc = this.beans.gridOptionsWrapper.getIsFullWidthCellFunc();\n var isFullWidthCell = isFullWidthCellFunc ? isFullWidthCellFunc(this.rowNode) : false;\n var isDetailCell = this.beans.doingMasterDetail && this.rowNode.detail;\n var isGroupSpanningRow = this.rowNode.group && this.beans.gridOptionsWrapper.isGroupUseEntireRow();\n if (this.rowNode.stub) {\n this.createFullWidthRows(RowComp.LOADING_CELL_RENDERER, RowComp.LOADING_CELL_RENDERER_COMP_NAME);\n }\n else if (isDetailCell) {\n this.createFullWidthRows(RowComp.DETAIL_CELL_RENDERER, RowComp.DETAIL_CELL_RENDERER_COMP_NAME);\n }\n else if (isFullWidthCell) {\n this.createFullWidthRows(RowComp.FULL_WIDTH_CELL_RENDERER, null);\n }\n else if (isGroupSpanningRow) {\n this.createFullWidthRows(RowComp.GROUP_ROW_RENDERER, RowComp.GROUP_ROW_RENDERER_COMP_NAME);\n }\n else {\n this.setupNormalRowContainers();\n }\n };\n RowComp.prototype.setupNormalRowContainers = function () {\n var _this = this;\n var centerCols;\n var leftCols;\n var rightCols;\n if (this.printLayout) {\n centerCols = this.beans.columnController.getAllDisplayedColumns();\n leftCols = [];\n rightCols = [];\n }\n else {\n centerCols = this.beans.columnController.getAllDisplayedCenterVirtualColumnsForRow(this.rowNode);\n leftCols = this.beans.columnController.getDisplayedLeftColumnsForRow(this.rowNode);\n rightCols = this.beans.columnController.getDisplayedRightColumnsForRow(this.rowNode);\n }\n this.createRowContainer(this.bodyContainerComp, centerCols, function (eRow) { return _this.eBodyRow = eRow; });\n this.createRowContainer(this.pinnedRightContainerComp, rightCols, function (eRow) { return _this.ePinnedRightRow = eRow; });\n this.createRowContainer(this.pinnedLeftContainerComp, leftCols, function (eRow) { return _this.ePinnedLeftRow = eRow; });\n };\n RowComp.prototype.createFullWidthRows = function (type, name) {\n var _this = this;\n this.fullWidthRow = true;\n if (this.embedFullWidth) {\n this.createFullWidthRowContainer(this.bodyContainerComp, null, null, type, name, function (eRow) {\n _this.eFullWidthRowBody = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentBody = cellRenderer;\n });\n // printLayout doesn't put components into the pinned sections\n if (!this.printLayout) {\n this.createFullWidthRowContainer(this.pinnedLeftContainerComp, column_1.Column.PINNED_LEFT, 'ag-cell-last-left-pinned', type, name, function (eRow) {\n _this.eFullWidthRowLeft = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentLeft = cellRenderer;\n });\n this.createFullWidthRowContainer(this.pinnedRightContainerComp, column_1.Column.PINNED_RIGHT, 'ag-cell-first-right-pinned', type, name, function (eRow) {\n _this.eFullWidthRowRight = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentRight = cellRenderer;\n });\n }\n }\n else {\n // otherwise we add to the fullWidth container as normal\n // let previousFullWidth = ensureDomOrder ? this.lastPlacedElements.eFullWidth : null;\n this.createFullWidthRowContainer(this.fullWidthContainerComp, null, null, type, name, function (eRow) {\n _this.eFullWidthRow = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponent = cellRenderer;\n });\n }\n };\n RowComp.prototype.setAnimateFlags = function (animateIn) {\n if (animateIn) {\n var oldRowTopExists = utils_1._.exists(this.rowNode.oldRowTop);\n // if the row had a previous position, we slide it in (animate row top)\n this.slideRowIn = oldRowTopExists;\n // if the row had no previous position, we fade it in (animate\n this.fadeRowIn = !oldRowTopExists;\n }\n else {\n this.slideRowIn = false;\n this.fadeRowIn = false;\n }\n };\n RowComp.prototype.isEditing = function () {\n return this.editingRow;\n };\n RowComp.prototype.stopRowEditing = function (cancel) {\n this.stopEditing(cancel);\n };\n RowComp.prototype.isFullWidth = function () {\n return this.fullWidthRow;\n };\n RowComp.prototype.addListeners = function () {\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_TOP_CHANGED, this.onTopChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_EXPANDED_CHANGED, this.onExpandedChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_DATA_CHANGED, this.onRowNodeDataChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_CELL_CHANGED, this.onRowNodeCellChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_DRAGGING_CHANGED, this.onRowNodeDraggingChanged.bind(this));\n var eventService = this.beans.eventService;\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_HEIGHT_SCALE_CHANGED, this.onTopChanged.bind(this));\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_CELL_FOCUSED, this.onCellFocusChanged.bind(this));\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n };\n // when grid columns change, then all cells should be cleaned out,\n // as the new columns could have same id as the previous columns and may conflict\n RowComp.prototype.onGridColumnsChanged = function () {\n this.removeRenderedCells(Object.keys(this.cellComps));\n };\n RowComp.prototype.onRowNodeDataChanged = function (event) {\n // if this is an update, we want to refresh, as this will allow the user to put in a transition\n // into the cellRenderer refresh method. otherwise this might be completely new data, in which case\n // we will want to completely replace the cells\n this.forEachCellComp(function (cellComp) {\n return cellComp.refreshCell({\n suppressFlash: !event.update,\n newData: !event.update\n });\n });\n // check for selected also, as this could be after lazy loading of the row data, in which case\n // the id might of just gotten set inside the row and the row selected state may of changed\n // as a result. this is what happens when selected rows are loaded in virtual pagination.\n // - niall note - since moving to the stub component, this may no longer be true, as replacing\n // the stub component now replaces the entire row\n this.onRowSelected();\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowComp.prototype.onRowNodeCellChanged = function (event) {\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowComp.prototype.postProcessCss = function () {\n this.postProcessStylesFromGridOptions();\n this.postProcessClassesFromGridOptions();\n this.postProcessRowClassRules();\n this.postProcessRowDragging();\n };\n RowComp.prototype.onRowNodeDraggingChanged = function () {\n this.postProcessRowDragging();\n };\n RowComp.prototype.postProcessRowDragging = function () {\n var dragging = this.rowNode.dragging;\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-dragging', dragging); });\n };\n RowComp.prototype.onExpandedChanged = function () {\n var rowNode = this.rowNode;\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-group-expanded', rowNode.expanded); });\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-group-contracted', !rowNode.expanded); });\n };\n RowComp.prototype.onDisplayedColumnsChanged = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.destroyFullWidthComponents = function () {\n if (this.fullWidthRowComponent) {\n if (this.fullWidthRowComponent.destroy) {\n this.fullWidthRowComponent.destroy();\n }\n this.fullWidthRowComponent = null;\n }\n if (this.fullWidthRowComponentBody) {\n if (this.fullWidthRowComponentBody.destroy) {\n this.fullWidthRowComponentBody.destroy();\n }\n this.fullWidthRowComponent = null;\n }\n if (this.fullWidthRowComponentLeft) {\n if (this.fullWidthRowComponentLeft.destroy) {\n this.fullWidthRowComponentLeft.destroy();\n }\n this.fullWidthRowComponentLeft = null;\n }\n if (this.fullWidthRowComponentRight) {\n if (this.fullWidthRowComponentRight.destroy) {\n this.fullWidthRowComponentRight.destroy();\n }\n this.fullWidthRowComponent = null;\n }\n };\n RowComp.prototype.getContainerForCell = function (pinnedType) {\n switch (pinnedType) {\n case column_1.Column.PINNED_LEFT: return this.ePinnedLeftRow;\n case column_1.Column.PINNED_RIGHT: return this.ePinnedRightRow;\n default: return this.eBodyRow;\n }\n };\n RowComp.prototype.onVirtualColumnsChanged = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.onColumnResized = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.refreshCells = function () {\n if (!this.areAllContainersReady()) {\n this.refreshNeeded = true;\n return;\n }\n var suppressAnimationFrame = this.beans.gridOptionsWrapper.isSuppressAnimationFrame();\n var skipAnimationFrame = suppressAnimationFrame || this.printLayout;\n if (skipAnimationFrame) {\n this.refreshCellsInAnimationFrame();\n }\n else {\n if (this.columnRefreshPending) {\n return;\n }\n this.beans.taskQueue.addP1Task(this.refreshCellsInAnimationFrame.bind(this), this.rowNode.rowIndex);\n }\n };\n RowComp.prototype.refreshCellsInAnimationFrame = function () {\n if (!this.active) {\n return;\n }\n this.columnRefreshPending = false;\n var centerCols;\n var leftCols;\n var rightCols;\n if (this.printLayout) {\n centerCols = this.beans.columnController.getAllDisplayedColumns();\n leftCols = [];\n rightCols = [];\n }\n else {\n centerCols = this.beans.columnController.getAllDisplayedCenterVirtualColumnsForRow(this.rowNode);\n leftCols = this.beans.columnController.getDisplayedLeftColumnsForRow(this.rowNode);\n rightCols = this.beans.columnController.getDisplayedRightColumnsForRow(this.rowNode);\n }\n this.insertCellsIntoContainer(this.eBodyRow, centerCols);\n this.insertCellsIntoContainer(this.ePinnedLeftRow, leftCols);\n this.insertCellsIntoContainer(this.ePinnedRightRow, rightCols);\n var colIdsToRemove = Object.keys(this.cellComps);\n centerCols.forEach(function (col) { return utils_1._.removeFromArray(colIdsToRemove, col.getId()); });\n leftCols.forEach(function (col) { return utils_1._.removeFromArray(colIdsToRemove, col.getId()); });\n rightCols.forEach(function (col) { return utils_1._.removeFromArray(colIdsToRemove, col.getId()); });\n // we never remove editing cells, as this would cause the cells to loose their values while editing\n // as the grid is scrolling horizontally.\n var eligibleToBeRemoved = utils_1._.filter(colIdsToRemove, this.isCellEligibleToBeRemoved.bind(this));\n // remove old cells from gui, but we don't destroy them, we might use them again\n this.removeRenderedCells(eligibleToBeRemoved);\n };\n RowComp.prototype.removeRenderedCells = function (colIds) {\n var _this = this;\n colIds.forEach(function (key) {\n var cellComp = _this.cellComps[key];\n // could be old reference, ie removed cell\n if (utils_1._.missing(cellComp)) {\n return;\n }\n cellComp.detach();\n cellComp.destroy();\n _this.cellComps[key] = null;\n });\n };\n RowComp.prototype.isCellEligibleToBeRemoved = function (indexStr) {\n var displayedColumns = this.beans.columnController.getAllDisplayedColumns();\n var REMOVE_CELL = true;\n var KEEP_CELL = false;\n var renderedCell = this.cellComps[indexStr];\n if (!renderedCell) {\n return REMOVE_CELL;\n }\n // always remove the cell if it's in the wrong pinned location\n if (this.isCellInWrongRow(renderedCell)) {\n return REMOVE_CELL;\n }\n // we want to try and keep editing and focused cells\n var editing = renderedCell.isEditing();\n var focused = this.beans.focusedCellController.isCellFocused(renderedCell.getGridCell());\n var mightWantToKeepCell = editing || focused;\n if (mightWantToKeepCell) {\n var column = renderedCell.getColumn();\n var cellStillDisplayed = displayedColumns.indexOf(column) >= 0;\n return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;\n }\n return REMOVE_CELL;\n };\n RowComp.prototype.ensureCellInCorrectContainer = function (cellComp) {\n // for print layout, we always put cells into centre, otherwise we put in correct pinned section\n if (this.printLayout) {\n return;\n }\n var element = cellComp.getGui();\n var column = cellComp.getColumn();\n var pinnedType = column.getPinned();\n var eContainer = this.getContainerForCell(pinnedType);\n // if in wrong container, remove it\n var eOldContainer = cellComp.getParentRow();\n var inWrongRow = eOldContainer !== eContainer;\n if (inWrongRow) {\n // take out from old row\n if (eOldContainer) {\n eOldContainer.removeChild(element);\n }\n eContainer.appendChild(element);\n cellComp.setParentRow(eContainer);\n }\n };\n RowComp.prototype.isCellInWrongRow = function (cellComp) {\n var column = cellComp.getColumn();\n var rowWeWant = this.getContainerForCell(column.getPinned());\n // if in wrong container, remove it\n var oldRow = cellComp.getParentRow();\n return oldRow !== rowWeWant;\n };\n RowComp.prototype.insertCellsIntoContainer = function (eRow, cols) {\n var _this = this;\n if (!eRow) {\n return;\n }\n var cellTemplates = [];\n var newCellComps = [];\n cols.forEach(function (col) {\n var colId = col.getId();\n var existingCell = _this.cellComps[colId];\n if (existingCell) {\n _this.ensureCellInCorrectContainer(existingCell);\n }\n else {\n _this.createNewCell(col, eRow, cellTemplates, newCellComps);\n }\n });\n if (cellTemplates.length > 0) {\n utils_1._.appendHtml(eRow, cellTemplates.join(''));\n this.callAfterRowAttachedOnCells(newCellComps, eRow);\n }\n };\n RowComp.prototype.addDomData = function (eRowContainer) {\n var gow = this.beans.gridOptionsWrapper;\n gow.setDomData(eRowContainer, RowComp.DOM_DATA_KEY_RENDERED_ROW, this);\n this.addDestroyFunc(function () {\n gow.setDomData(eRowContainer, RowComp.DOM_DATA_KEY_RENDERED_ROW, null);\n });\n };\n RowComp.prototype.createNewCell = function (col, eContainer, cellTemplates, newCellComps) {\n var newCellComp = new cellComp_1.CellComp(this.scope, this.beans, col, this.rowNode, this, false, this.printLayout);\n var cellTemplate = newCellComp.getCreateTemplate();\n cellTemplates.push(cellTemplate);\n newCellComps.push(newCellComp);\n this.cellComps[col.getId()] = newCellComp;\n newCellComp.setParentRow(eContainer);\n };\n RowComp.prototype.onMouseEvent = function (eventName, mouseEvent) {\n switch (eventName) {\n case 'dblclick':\n this.onRowDblClick(mouseEvent);\n break;\n case 'click':\n this.onRowClick(mouseEvent);\n break;\n }\n };\n RowComp.prototype.createRowEvent = function (type, domEvent) {\n return {\n type: type,\n node: this.rowNode,\n data: this.rowNode.data,\n rowIndex: this.rowNode.rowIndex,\n rowPinned: this.rowNode.rowPinned,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n event: domEvent\n };\n };\n RowComp.prototype.createRowEventWithSource = function (type, domEvent) {\n var event = this.createRowEvent(type, domEvent);\n // when first developing this, we included the rowComp in the event.\n // this seems very weird. so when introducing the event types, i left the 'source'\n // out of the type, and just include the source in the two places where this event\n // was fired (rowClicked and rowDoubleClicked). it doesn't make sense for any\n // users to be using this, as the rowComp isn't an object we expose, so would be\n // very surprising if a user was using it.\n event.source = this;\n return event;\n };\n RowComp.prototype.onRowDblClick = function (mouseEvent) {\n if (utils_1._.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var agEvent = this.createRowEventWithSource(events_1.Events.EVENT_ROW_DOUBLE_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n };\n RowComp.prototype.onRowClick = function (mouseEvent) {\n var stop = utils_1._.isStopPropagationForAgGrid(mouseEvent);\n if (stop) {\n return;\n }\n var agEvent = this.createRowEventWithSource(events_1.Events.EVENT_ROW_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n // ctrlKey for windows, metaKey for Apple\n var multiSelectKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n var shiftKeyPressed = mouseEvent.shiftKey;\n if (\n // we do not allow selecting groups by clicking (as the click here expands the group), or if it's a detail row,\n // so return if it's a group row\n this.rowNode.group ||\n // this is needed so we don't unselect other rows when we click this row, eg if this row is not selectable,\n // and we click it, the selection should not change (ie any currently selected row should stay selected)\n !this.rowNode.selectable ||\n // we also don't allow selection of pinned rows\n this.rowNode.rowPinned ||\n // if no selection method enabled, do nothing\n !this.beans.gridOptionsWrapper.isRowSelection() ||\n // if click selection suppressed, do nothing\n this.beans.gridOptionsWrapper.isSuppressRowClickSelection()) {\n return;\n }\n var multiSelectOnClick = this.beans.gridOptionsWrapper.isRowMultiSelectWithClick();\n var rowDeselectionWithCtrl = this.beans.gridOptionsWrapper.isRowDeselection();\n if (this.rowNode.isSelected()) {\n if (multiSelectOnClick) {\n this.rowNode.setSelectedParams({ newValue: false });\n }\n else if (multiSelectKeyPressed) {\n if (rowDeselectionWithCtrl) {\n this.rowNode.setSelectedParams({ newValue: false });\n }\n }\n else {\n // selected with no multi key, must make sure anything else is unselected\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: true });\n }\n }\n else {\n var clearSelection = multiSelectOnClick ? false : !multiSelectKeyPressed;\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: clearSelection, rangeSelect: shiftKeyPressed });\n }\n };\n RowComp.prototype.createFullWidthRowContainer = function (rowContainerComp, pinned, extraCssClass, cellRendererType, cellRendererName, eRowCallback, cellRendererCallback) {\n var _this = this;\n var rowTemplate = this.createTemplate('', extraCssClass);\n rowContainerComp.appendRowTemplate(rowTemplate, function () {\n var eRow = rowContainerComp.getRowElement(_this.getCompId());\n var params = _this.createFullWidthParams(eRow, pinned);\n var callback = function (cellRenderer) {\n if (_this.isAlive()) {\n var gui = cellRenderer.getGui();\n eRow.appendChild(gui);\n cellRendererCallback(cellRenderer);\n }\n else {\n if (cellRenderer.destroy) {\n cellRenderer.destroy();\n }\n }\n };\n var res = _this.beans.userComponentFactory.newFullWidthCellRenderer(params, cellRendererType, cellRendererName);\n if (!res) {\n console.error('ag-Grid: fullWidthCellRenderer not defined');\n return;\n }\n res.then(callback);\n _this.afterRowAttached(rowContainerComp, eRow);\n eRowCallback(eRow);\n var isDetailRow = _this.beans.doingMasterDetail && _this.rowNode.detail;\n if (!isDetailRow) {\n _this.angular1Compile(eRow);\n }\n });\n };\n RowComp.prototype.angular1Compile = function (element) {\n if (!this.scope) {\n return;\n }\n this.beans.$compile(element)(this.scope);\n };\n RowComp.prototype.createFullWidthParams = function (eRow, pinned) {\n var params = {\n fullWidth: true,\n data: this.rowNode.data,\n node: this.rowNode,\n value: this.rowNode.key,\n $scope: this.scope ? this.scope : this.parentScope,\n $compile: this.beans.$compile,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n // these need to be taken out, as part of 'afterAttached' now\n eGridCell: eRow,\n eParentOfValue: eRow,\n pinned: pinned,\n addRenderedRowListener: this.addEventListener.bind(this)\n };\n return params;\n };\n RowComp.prototype.getInitialRowClasses = function (extraCssClass) {\n var classes = [];\n var isTreeData = this.beans.gridOptionsWrapper.isTreeData();\n var rowNode = this.rowNode;\n if (utils_1._.exists(extraCssClass)) {\n classes.push(extraCssClass);\n }\n classes.push('ag-row');\n classes.push(this.rowFocused ? 'ag-row-focus' : 'ag-row-no-focus');\n if (this.fadeRowIn) {\n classes.push('ag-opacity-zero');\n }\n classes.push(this.rowIsEven ? 'ag-row-even' : 'ag-row-odd');\n if (rowNode.isSelected()) {\n classes.push('ag-row-selected');\n }\n if (rowNode.group) {\n classes.push('ag-row-group');\n // if a group, put the level of the group in\n classes.push('ag-row-level-' + rowNode.level);\n if (rowNode.footer) {\n classes.push('ag-row-footer');\n }\n }\n else {\n // if a leaf, and a parent exists, put a level of the parent, else put level of 0 for top level item\n classes.push('ag-row-level-' + (rowNode.parent ? (rowNode.parent.level + 1) : '0'));\n }\n if (rowNode.stub) {\n classes.push('ag-row-stub');\n }\n if (this.fullWidthRow) {\n classes.push('ag-full-width-row');\n }\n var addExpandedClass = isTreeData ?\n // if doing tree data, we add the expanded classes if any children, as any node can be a parent\n rowNode.allChildrenCount :\n // if normal row grouping, we add expanded classes to groups only\n rowNode.group && !rowNode.footer;\n if (addExpandedClass) {\n classes.push(rowNode.expanded ? 'ag-row-group-expanded' : 'ag-row-group-contracted');\n }\n if (rowNode.dragging) {\n classes.push('ag-row-dragging');\n }\n utils_1._.pushAll(classes, this.processClassesFromGridOptions());\n utils_1._.pushAll(classes, this.preProcessRowClassRules());\n // we use absolute position unless we are doing print layout\n classes.push(this.printLayout ? 'ag-row-position-relative' : 'ag-row-position-absolute');\n this.firstRowOnPage = this.isFirstRowOnPage();\n this.lastRowOnPage = this.isLastRowOnPage();\n if (this.firstRowOnPage) {\n classes.push('ag-row-first');\n }\n if (this.lastRowOnPage) {\n classes.push('ag-row-last');\n }\n return classes;\n };\n RowComp.prototype.isFirstRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageFirstRow();\n };\n RowComp.prototype.isLastRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageLastRow();\n };\n RowComp.prototype.onModelUpdated = function () {\n var newFirst = this.isFirstRowOnPage();\n var newLast = this.isLastRowOnPage();\n if (this.firstRowOnPage !== newFirst) {\n this.firstRowOnPage = newFirst;\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-first', newFirst); });\n }\n if (this.lastRowOnPage !== newLast) {\n this.lastRowOnPage = newLast;\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-last', newLast); });\n }\n };\n RowComp.prototype.preProcessRowClassRules = function () {\n var res = [];\n this.processRowClassRules(function (className) {\n res.push(className);\n }, function (className) {\n // not catered for, if creating, no need\n // to remove class as it was never there\n });\n return res;\n };\n RowComp.prototype.processRowClassRules = function (onApplicableClass, onNotApplicableClass) {\n this.beans.stylingService.processClassRules(this.beans.gridOptionsWrapper.rowClassRules(), {\n value: undefined,\n colDef: undefined,\n data: this.rowNode.data,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass, onNotApplicableClass);\n };\n RowComp.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.forEachCellComp(function (renderedCell) {\n renderedCell.stopEditing(cancel);\n });\n if (!this.editingRow) {\n return;\n }\n if (!cancel) {\n var event_1 = this.createRowEvent(events_1.Events.EVENT_ROW_VALUE_CHANGED);\n this.beans.eventService.dispatchEvent(event_1);\n }\n this.setEditingRow(false);\n };\n RowComp.prototype.setEditingRow = function (value) {\n this.editingRow = value;\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-editing', value); });\n var event = value ?\n this.createRowEvent(events_1.Events.EVENT_ROW_EDITING_STARTED)\n : this.createRowEvent(events_1.Events.EVENT_ROW_EDITING_STOPPED);\n this.beans.eventService.dispatchEvent(event);\n };\n RowComp.prototype.startRowEditing = function (keyPress, charPress, sourceRenderedCell) {\n if (keyPress === void 0) { keyPress = null; }\n if (charPress === void 0) { charPress = null; }\n if (sourceRenderedCell === void 0) { sourceRenderedCell = null; }\n // don't do it if already editing\n if (this.editingRow) {\n return;\n }\n this.forEachCellComp(function (renderedCell) {\n var cellStartedEdit = renderedCell === sourceRenderedCell;\n if (cellStartedEdit) {\n renderedCell.startEditingIfEnabled(keyPress, charPress, cellStartedEdit);\n }\n else {\n renderedCell.startEditingIfEnabled(null, null, cellStartedEdit);\n }\n });\n this.setEditingRow(true);\n };\n RowComp.prototype.forEachCellComp = function (callback) {\n utils_1._.iterateObject(this.cellComps, function (key, cellComp) {\n if (!cellComp) {\n return;\n }\n callback(cellComp);\n });\n };\n RowComp.prototype.postProcessClassesFromGridOptions = function () {\n var _this = this;\n var cssClasses = this.processClassesFromGridOptions();\n if (!cssClasses || !cssClasses.length) {\n return;\n }\n cssClasses.forEach(function (classStr) {\n _this.eAllRowContainers.forEach(function (row) { return utils_1._.addCssClass(row, classStr); });\n });\n };\n RowComp.prototype.postProcessRowClassRules = function () {\n var _this = this;\n this.processRowClassRules(function (className) {\n _this.eAllRowContainers.forEach(function (row) { return utils_1._.addCssClass(row, className); });\n }, function (className) {\n _this.eAllRowContainers.forEach(function (row) { return utils_1._.removeCssClass(row, className); });\n });\n };\n RowComp.prototype.processClassesFromGridOptions = function () {\n var res = [];\n var process = function (rowCls) {\n if (typeof rowCls === 'string') {\n res.push(rowCls);\n }\n else if (Array.isArray(rowCls)) {\n rowCls.forEach(function (e) { return res.push(e); });\n }\n };\n // part 1 - rowClass\n var rowClass = this.beans.gridOptionsWrapper.getRowClass();\n if (rowClass) {\n if (typeof rowClass === 'function') {\n console.warn('ag-Grid: rowClass should not be a function, please use getRowClass instead');\n return;\n }\n process(rowClass);\n }\n // part 2 - rowClassFunc\n var rowClassFunc = this.beans.gridOptionsWrapper.getRowClassFunc();\n if (rowClassFunc) {\n var params = {\n node: this.rowNode,\n data: this.rowNode.data,\n rowIndex: this.rowNode.rowIndex,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi()\n };\n var rowClassFuncResult = rowClassFunc(params);\n process(rowClassFuncResult);\n }\n return res;\n };\n RowComp.prototype.preProcessStylesFromGridOptions = function () {\n var rowStyles = this.processStylesFromGridOptions();\n return utils_1._.cssStyleObjectToMarkup(rowStyles);\n };\n RowComp.prototype.postProcessStylesFromGridOptions = function () {\n var rowStyles = this.processStylesFromGridOptions();\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addStylesToElement(row, rowStyles); });\n };\n RowComp.prototype.processStylesFromGridOptions = function () {\n // part 1 - rowStyle\n var rowStyle = this.beans.gridOptionsWrapper.getRowStyle();\n if (rowStyle && typeof rowStyle === 'function') {\n console.warn('ag-Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead');\n return;\n }\n // part 1 - rowStyleFunc\n var rowStyleFunc = this.beans.gridOptionsWrapper.getRowStyleFunc();\n var rowStyleFuncResult;\n if (rowStyleFunc) {\n var params = {\n data: this.rowNode.data,\n node: this.rowNode,\n api: this.beans.gridOptionsWrapper.getApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n $scope: this.scope\n };\n rowStyleFuncResult = rowStyleFunc(params);\n }\n return utils_1._.assign({}, rowStyle, rowStyleFuncResult);\n };\n RowComp.prototype.createCells = function (cols) {\n var _this = this;\n var templateParts = [];\n var newCellComps = [];\n cols.forEach(function (col) {\n var newCellComp = new cellComp_1.CellComp(_this.scope, _this.beans, col, _this.rowNode, _this, false, _this.printLayout);\n var cellTemplate = newCellComp.getCreateTemplate();\n templateParts.push(cellTemplate);\n newCellComps.push(newCellComp);\n _this.cellComps[col.getId()] = newCellComp;\n });\n var templateAndComps = {\n template: templateParts.join(''),\n cellComps: newCellComps\n };\n return templateAndComps;\n };\n RowComp.prototype.onRowSelected = function () {\n var selected = this.rowNode.isSelected();\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-selected', selected); });\n };\n // called:\n // + after row created for first time\n // + after horizontal scroll, so new cells due to column virtualisation\n RowComp.prototype.callAfterRowAttachedOnCells = function (newCellComps, eRow) {\n var _this = this;\n newCellComps.forEach(function (cellComp) {\n cellComp.setParentRow(eRow);\n cellComp.afterAttached();\n // if we are editing the row, then the cell needs to turn\n // into edit mode\n if (_this.editingRow) {\n cellComp.startEditingIfEnabled();\n }\n });\n };\n RowComp.prototype.afterRowAttached = function (rowContainerComp, eRow) {\n var _this = this;\n this.addDomData(eRow);\n this.removeSecondPassFuncs.push(function () {\n // console.log(eRow);\n rowContainerComp.removeRowElement(eRow);\n });\n this.removeFirstPassFuncs.push(function () {\n if (utils_1._.exists(_this.rowNode.rowTop)) {\n // the row top is updated anyway, however we set it here again\n // to something more reasonable for the animation - ie if the\n // row top is 10000px away, the row will flash out, so this\n // gives it a rounded value, so row animates out more slowly\n var rowTop = _this.roundRowTopToBounds(_this.rowNode.rowTop);\n _this.setRowTop(rowTop);\n }\n else {\n utils_1._.addCssClass(eRow, 'ag-opacity-zero');\n }\n });\n this.eAllRowContainers.push(eRow);\n // adding hover functionality adds listener to this row, so we\n // do it lazily in an animation frame\n if (this.useAnimationFrameForCreate) {\n this.beans.taskQueue.addP2Task(this.addHoverFunctionality.bind(this, eRow));\n }\n else {\n this.addHoverFunctionality(eRow);\n }\n };\n RowComp.prototype.addHoverFunctionality = function (eRow) {\n var _this = this;\n // because we use animation frames to do this, it's possible the row no longer exists\n // by the time we get to add it\n if (!this.active) {\n return;\n }\n // because mouseenter and mouseleave do not propagate, we cannot listen on the gridPanel\n // like we do for all the other mouse events.\n // because of the pinning, we cannot simply add / remove the class based on the eRow. we\n // have to check all eRow's (body & pinned). so the trick is if any of the rows gets a\n // mouse hover, it sets such in the rowNode, and then all three reflect the change as\n // all are listening for event on the row node.\n // step 1 - add listener, to set flag on row node\n this.addDestroyableEventListener(eRow, 'mouseenter', function () { return _this.rowNode.onMouseEnter(); });\n this.addDestroyableEventListener(eRow, 'mouseleave', function () { return _this.rowNode.onMouseLeave(); });\n // step 2 - listen for changes on row node (which any eRow can trigger)\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_MOUSE_ENTER, function () {\n // if hover turned off, we don't add the class. we do this here so that if the application\n // toggles this property mid way, we remove the hover form the last row, but we stop\n // adding hovers from that point onwards.\n if (!_this.beans.gridOptionsWrapper.isSuppressRowHoverHighlight()) {\n utils_1._.addCssClass(eRow, 'ag-row-hover');\n }\n });\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_MOUSE_LEAVE, function () {\n utils_1._.removeCssClass(eRow, 'ag-row-hover');\n });\n };\n // for animation, we don't want to animate entry or exit to a very far away pixel,\n // otherwise the row would move so fast, it would appear to disappear. so this method\n // moves the row closer to the viewport if it is far away, so the row slide in / out\n // at a speed the user can see.\n RowComp.prototype.roundRowTopToBounds = function (rowTop) {\n var range = this.beans.gridPanel.getVScrollPosition();\n var minPixel = this.applyPaginationOffset(range.top, true) - 100;\n var maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;\n return Math.min(Math.max(minPixel, rowTop), maxPixel);\n };\n RowComp.prototype.onRowHeightChanged = function () {\n // check for exists first - if the user is resetting the row height, then\n // it will be null (or undefined) momentarily until the next time the flatten\n // stage is called where the row will then update again with a new height\n if (utils_1._.exists(this.rowNode.rowHeight)) {\n var heightPx_1 = this.rowNode.rowHeight + \"px\";\n this.eAllRowContainers.forEach(function (row) { return row.style.height = heightPx_1; });\n }\n };\n RowComp.prototype.addEventListener = function (eventType, listener) {\n if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n eventType = events_1.Events.EVENT_VIRTUAL_ROW_REMOVED;\n console.warn('ag-Grid: Since version 11, event renderedRowRemoved is now called ' + events_1.Events.EVENT_VIRTUAL_ROW_REMOVED);\n }\n _super.prototype.addEventListener.call(this, eventType, listener);\n };\n RowComp.prototype.removeEventListener = function (eventType, listener) {\n if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n eventType = events_1.Events.EVENT_VIRTUAL_ROW_REMOVED;\n console.warn('ag-Grid: Since version 11, event renderedRowRemoved and rowRemoved is now called ' + events_1.Events.EVENT_VIRTUAL_ROW_REMOVED);\n }\n _super.prototype.removeEventListener.call(this, eventType, listener);\n };\n RowComp.prototype.destroy = function (animate) {\n if (animate === void 0) { animate = false; }\n _super.prototype.destroy.call(this);\n this.active = false;\n // why do we have this method? shouldn't everything below be added as a destroy func beside\n // the corresponding create logic?\n this.destroyFullWidthComponents();\n if (animate) {\n this.removeFirstPassFuncs.forEach(function (func) { return func(); });\n this.removeSecondPassFuncs.push(this.destroyContainingCells.bind(this));\n }\n else {\n this.destroyContainingCells();\n // we are not animating, so execute the second stage of removal now.\n // we call getAndClear, so that they are only called once\n var delayedDestroyFunctions = this.getAndClearDelayedDestroyFunctions();\n delayedDestroyFunctions.forEach(function (func) { return func(); });\n }\n var event = this.createRowEvent(events_1.Events.EVENT_VIRTUAL_ROW_REMOVED);\n this.dispatchEvent(event);\n this.beans.eventService.dispatchEvent(event);\n };\n RowComp.prototype.destroyContainingCells = function () {\n this.forEachCellComp(function (renderedCell) { return renderedCell.destroy(); });\n this.destroyFullWidthComponents();\n };\n // we clear so that the functions are never executed twice\n RowComp.prototype.getAndClearDelayedDestroyFunctions = function () {\n var result = this.removeSecondPassFuncs;\n this.removeSecondPassFuncs = [];\n return result;\n };\n RowComp.prototype.onCellFocusChanged = function () {\n var rowFocused = this.beans.focusedCellController.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n if (rowFocused !== this.rowFocused) {\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-focus', rowFocused); });\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-no-focus', !rowFocused); });\n this.rowFocused = rowFocused;\n }\n // if we are editing, then moving the focus out of a row will stop editing\n if (!rowFocused && this.editingRow) {\n this.stopEditing(false);\n }\n };\n RowComp.prototype.onPaginationChanged = function () {\n var currentPage = this.beans.paginationProxy.getCurrentPage();\n // it is possible this row is in the new page, but the page number has changed, which means\n // it needs to reposition itself relative to the new page\n if (this.paginationPage !== currentPage) {\n this.paginationPage = currentPage;\n this.onTopChanged();\n }\n };\n RowComp.prototype.onTopChanged = function () {\n this.setRowTop(this.rowNode.rowTop);\n };\n // applies pagination offset, eg if on second page, and page height is 500px, then removes\n // 500px from the top position, so a row with rowTop 600px is displayed at location 100px.\n // reverse will take the offset away rather than add.\n RowComp.prototype.applyPaginationOffset = function (topPx, reverse) {\n if (reverse === void 0) { reverse = false; }\n if (this.rowNode.isRowPinned()) {\n return topPx;\n }\n var pixelOffset = this.beans.paginationProxy.getPixelOffset();\n var multiplier = reverse ? 1 : -1;\n return topPx + (pixelOffset * multiplier);\n };\n RowComp.prototype.setRowTop = function (pixels) {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return;\n }\n // need to make sure rowTop is not null, as this can happen if the node was once\n // visible (ie parent group was expanded) but is now not visible\n if (utils_1._.exists(pixels)) {\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n var afterScalingPixels = this.beans.maxDivHeightScaler.getRealPixelPosition(afterPaginationPixels);\n var topPx_1 = afterScalingPixels + \"px\";\n if (this.beans.gridOptionsWrapper.isSuppressRowTransform()) {\n this.eAllRowContainers.forEach(function (row) { return row.style.top = topPx_1; });\n }\n else {\n this.eAllRowContainers.forEach(function (row) { return row.style.transform = \"translateY(\" + topPx_1 + \")\"; });\n }\n }\n };\n // we clear so that the functions are never executed twice\n RowComp.prototype.getAndClearNextVMTurnFunctions = function () {\n var result = this.createSecondPassFuncs;\n this.createSecondPassFuncs = [];\n return result;\n };\n RowComp.prototype.getRowNode = function () {\n return this.rowNode;\n };\n RowComp.prototype.getRenderedCellForColumn = function (column) {\n var _this = this;\n var cellComp = this.cellComps[column.getColId()];\n if (cellComp) {\n return cellComp;\n }\n var spanList = Object.keys(this.cellComps)\n .map(function (name) { return _this.cellComps[name]; })\n .filter(function (cmp) { return cmp.getColSpanningList().indexOf(column) !== -1; });\n return spanList.length ? spanList[0] : undefined;\n };\n RowComp.prototype.onRowIndexChanged = function () {\n this.onCellFocusChanged();\n this.updateRowIndexes();\n };\n RowComp.prototype.updateRowIndexes = function () {\n var rowIndexStr = this.rowNode.getRowIndexString();\n var rowIsEven = this.rowNode.rowIndex % 2 === 0;\n var rowIsEvenChanged = this.rowIsEven !== rowIsEven;\n if (rowIsEvenChanged) {\n this.rowIsEven = rowIsEven;\n }\n this.eAllRowContainers.forEach(function (eRow) {\n eRow.setAttribute('row-index', rowIndexStr);\n if (!rowIsEvenChanged) {\n return;\n }\n utils_1._.addOrRemoveCssClass(eRow, 'ag-row-even', rowIsEven);\n utils_1._.addOrRemoveCssClass(eRow, 'ag-row-odd', !rowIsEven);\n });\n };\n RowComp.prototype.ensureDomOrder = function () {\n var sides = [\n {\n el: this.getBodyRowElement(),\n ct: this.bodyContainerComp\n },\n {\n el: this.getPinnedLeftRowElement(),\n ct: this.pinnedLeftContainerComp\n }, {\n el: this.getPinnedRightRowElement(),\n ct: this.pinnedRightContainerComp\n }, {\n el: this.getFullWidthRowElement(),\n ct: this.fullWidthContainerComp\n }\n ];\n sides.forEach(function (side) {\n if (!side.el) {\n return;\n }\n side.ct.ensureDomOrder(side.el);\n });\n };\n // returns the pinned left container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getPinnedLeftRowElement = function () {\n return this.ePinnedLeftRow ? this.ePinnedLeftRow : this.eFullWidthRowLeft;\n };\n // returns the pinned right container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getPinnedRightRowElement = function () {\n return this.ePinnedRightRow ? this.ePinnedRightRow : this.eFullWidthRowRight;\n };\n // returns the body container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getBodyRowElement = function () {\n return this.eBodyRow ? this.eBodyRow : this.eFullWidthRowBody;\n };\n // returns the full width container\n RowComp.prototype.getFullWidthRowElement = function () {\n return this.eFullWidthRow;\n };\n RowComp.DOM_DATA_KEY_RENDERED_ROW = 'renderedRow';\n RowComp.FULL_WIDTH_CELL_RENDERER = 'fullWidthCellRenderer';\n RowComp.GROUP_ROW_RENDERER = 'groupRowRenderer';\n RowComp.GROUP_ROW_RENDERER_COMP_NAME = 'agGroupRowRenderer';\n RowComp.LOADING_CELL_RENDERER = 'loadingCellRenderer';\n RowComp.LOADING_CELL_RENDERER_COMP_NAME = 'agLoadingCellRenderer';\n RowComp.DETAIL_CELL_RENDERER = 'detailCellRenderer';\n RowComp.DETAIL_CELL_RENDERER_COMP_NAME = 'agDetailCellRenderer';\n return RowComp;\n}(component_1.Component));\nexports.RowComp = RowComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar rowNode_1 = require(\"../entities/rowNode\");\nvar context_1 = require(\"../context/context\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar constants_1 = require(\"../constants\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar utils_1 = require(\"../utils\");\nvar PinnedRowModel = /** @class */ (function () {\n function PinnedRowModel() {\n }\n PinnedRowModel.prototype.init = function () {\n this.setPinnedTopRowData(this.gridOptionsWrapper.getPinnedTopRowData());\n this.setPinnedBottomRowData(this.gridOptionsWrapper.getPinnedBottomRowData());\n };\n PinnedRowModel.prototype.isEmpty = function (floating) {\n var rows = floating === constants_1.Constants.PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;\n return utils_1._.missingOrEmpty(rows);\n };\n PinnedRowModel.prototype.isRowsToRender = function (floating) {\n return !this.isEmpty(floating);\n };\n PinnedRowModel.prototype.getRowAtPixel = function (pixel, floating) {\n var rows = floating === constants_1.Constants.PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;\n if (utils_1._.missingOrEmpty(rows)) {\n return 0; // this should never happen, just in case, 0 is graceful failure\n }\n for (var i = 0; i < rows.length; i++) {\n var rowNode = rows[i];\n var rowTopPixel = rowNode.rowTop + rowNode.rowHeight - 1;\n // only need to range check against the top pixel, as we are going through the list\n // in order, first row to hit the pixel wins\n if (rowTopPixel >= pixel) {\n return i;\n }\n }\n return rows.length - 1;\n };\n PinnedRowModel.prototype.setPinnedTopRowData = function (rowData) {\n this.pinnedTopRows = this.createNodesFromData(rowData, true);\n var event = {\n type: events_1.Events.EVENT_PINNED_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n PinnedRowModel.prototype.setPinnedBottomRowData = function (rowData) {\n this.pinnedBottomRows = this.createNodesFromData(rowData, false);\n var event = {\n type: events_1.Events.EVENT_PINNED_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n PinnedRowModel.prototype.createNodesFromData = function (allData, isTop) {\n var _this = this;\n var rowNodes = [];\n if (allData) {\n var nextRowTop_1 = 0;\n allData.forEach(function (dataItem, index) {\n var rowNode = new rowNode_1.RowNode();\n _this.context.wireBean(rowNode);\n rowNode.data = dataItem;\n rowNode.rowPinned = isTop ? constants_1.Constants.PINNED_TOP : constants_1.Constants.PINNED_BOTTOM;\n rowNode.setRowTop(nextRowTop_1);\n rowNode.setRowHeight(_this.gridOptionsWrapper.getRowHeightForNode(rowNode).height);\n rowNode.setRowIndex(index);\n nextRowTop_1 += rowNode.rowHeight;\n rowNodes.push(rowNode);\n });\n }\n return rowNodes;\n };\n PinnedRowModel.prototype.getPinnedTopRowData = function () {\n return this.pinnedTopRows;\n };\n PinnedRowModel.prototype.getPinnedBottomRowData = function () {\n return this.pinnedBottomRows;\n };\n PinnedRowModel.prototype.getPinnedTopTotalHeight = function () {\n return this.getTotalHeight(this.pinnedTopRows);\n };\n PinnedRowModel.prototype.getPinnedTopRowCount = function () {\n return this.pinnedTopRows ? this.pinnedTopRows.length : 0;\n };\n PinnedRowModel.prototype.getPinnedBottomRowCount = function () {\n return this.pinnedBottomRows ? this.pinnedBottomRows.length : 0;\n };\n PinnedRowModel.prototype.getPinnedTopRow = function (index) {\n return this.pinnedTopRows[index];\n };\n PinnedRowModel.prototype.getPinnedBottomRow = function (index) {\n return this.pinnedBottomRows[index];\n };\n PinnedRowModel.prototype.forEachPinnedTopRow = function (callback) {\n if (utils_1._.missingOrEmpty(this.pinnedTopRows)) {\n return;\n }\n this.pinnedTopRows.forEach(callback);\n };\n PinnedRowModel.prototype.forEachPinnedBottomRow = function (callback) {\n if (utils_1._.missingOrEmpty(this.pinnedBottomRows)) {\n return;\n }\n this.pinnedBottomRows.forEach(callback);\n };\n PinnedRowModel.prototype.getPinnedBottomTotalHeight = function () {\n return this.getTotalHeight(this.pinnedBottomRows);\n };\n PinnedRowModel.prototype.getTotalHeight = function (rowNodes) {\n if (!rowNodes || rowNodes.length === 0) {\n return 0;\n }\n else {\n var lastNode = rowNodes[rowNodes.length - 1];\n return lastNode.rowTop + lastNode.rowHeight;\n }\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], PinnedRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], PinnedRowModel.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], PinnedRowModel.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], PinnedRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], PinnedRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], PinnedRowModel.prototype, \"init\", null);\n PinnedRowModel = __decorate([\n context_1.Bean('pinnedRowModel')\n ], PinnedRowModel);\n return PinnedRowModel;\n}());\nexports.PinnedRowModel = PinnedRowModel;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar componentUtil_1 = require(\"./componentUtil\");\nvar grid_1 = require(\"../grid\");\nvar registered = false;\nfunction initialiseAgGridWithWebComponents() {\n console.warn('ag-grid: initialiseAgGridWithWebComponents is deprecated. Please use the ag-grid-webcomponent dependency instead. ');\n // only register to WebComponents once\n if (registered) {\n return;\n }\n registered = true;\n if (typeof document === 'undefined' || !document.registerElement) {\n console.error('ag-Grid: unable to find document.registerElement() function, unable to initialise ag-Grid as a Web Component');\n }\n // i don't think this type of extension is possible in TypeScript, so back to\n // plain Javascript to create this object\n var AgileGridProto = Object.create(HTMLElement.prototype);\n // wrap each property with a get and set method, so we can track when changes are done\n componentUtil_1.ComponentUtil.ALL_PROPERTIES.forEach(function (key) {\n Object.defineProperty(AgileGridProto, key, {\n set: function (v) {\n this.__agGridSetProperty(key, v);\n },\n get: function () {\n return this.__agGridGetProperty(key);\n },\n enumerable: true,\n configurable: true\n });\n });\n var agGridProtoNoType = AgileGridProto;\n agGridProtoNoType.__agGridSetProperty = function (key, value) {\n if (!this.__attributes) {\n this.__attributes = {};\n }\n this.__attributes[key] = value;\n // keeping this consistent with the ng2 onChange, so I can reuse the handling code\n var changeObject = {};\n changeObject[key] = { currentValue: value };\n this.onChange(changeObject);\n };\n agGridProtoNoType.onChange = function (changes) {\n if (this._initialised) {\n componentUtil_1.ComponentUtil.processOnChange(changes, this._gridOptions, this.api, this.columnApi);\n }\n };\n agGridProtoNoType.__agGridGetProperty = function (key) {\n if (!this.__attributes) {\n this.__attributes = {};\n }\n return this.__attributes[key];\n };\n agGridProtoNoType.setGridOptions = function (options) {\n var globalEventListener = this.globalEventListener.bind(this);\n this._gridOptions = componentUtil_1.ComponentUtil.copyAttributesToGridOptions(options, this);\n var gridParams = {\n globalEventListener: globalEventListener\n };\n this._agGrid = new grid_1.Grid(this, this._gridOptions, gridParams);\n this.api = options.api;\n this.columnApi = options.columnApi;\n this._initialised = true;\n };\n // copies all the attributes into this object\n agGridProtoNoType.createdCallback = function () {\n for (var i = 0; i < this.attributes.length; i++) {\n var attribute = this.attributes[i];\n this.setPropertyFromAttribute(attribute);\n }\n };\n agGridProtoNoType.setPropertyFromAttribute = function (attribute) {\n var name = toCamelCase(attribute.nodeName);\n var value = attribute.nodeValue;\n if (componentUtil_1.ComponentUtil.ALL_PROPERTIES.indexOf(name) >= 0) {\n this[name] = value;\n }\n };\n agGridProtoNoType.attachedCallback = function (params) { };\n agGridProtoNoType.detachedCallback = function (params) { };\n agGridProtoNoType.attributeChangedCallback = function (attributeName) {\n var attribute = this.attributes[attributeName];\n this.setPropertyFromAttribute(attribute);\n };\n agGridProtoNoType.globalEventListener = function (eventType, event) {\n var eventLowerCase = eventType.toLowerCase();\n var browserEvent = new Event(eventLowerCase);\n var browserEventNoType = browserEvent;\n browserEventNoType.agGridDetails = event;\n this.dispatchEvent(browserEvent);\n var callbackMethod = 'on' + eventLowerCase;\n if (typeof this[callbackMethod] === 'function') {\n this[callbackMethod](browserEvent);\n }\n };\n // finally, register\n document.registerElement('ag-grid', { prototype: AgileGridProto });\n}\nexports.initialiseAgGridWithWebComponents = initialiseAgGridWithWebComponents;\nfunction toCamelCase(myString) {\n if (typeof myString === 'string') {\n var result = myString.replace(/-([a-z])/g, function (g) {\n return g[1].toUpperCase();\n });\n return result;\n }\n else {\n return myString;\n }\n}\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar TabbedLayout = /** @class */ (function () {\n function TabbedLayout(params) {\n var _this = this;\n this.items = [];\n this.params = params;\n this.eGui = document.createElement('div');\n this.eGui.innerHTML = TabbedLayout.TEMPLATE;\n this.eHeader = this.eGui.querySelector('[ref=\"tabHeader\"]');\n this.eBody = this.eGui.querySelector('[ref=\"tabBody\"]');\n utils_1._.addCssClass(this.eGui, params.cssClass);\n if (params.items) {\n params.items.forEach(function (item) { return _this.addItem(item); });\n }\n }\n TabbedLayout.prototype.setAfterAttachedParams = function (params) {\n this.afterAttachedParams = params;\n };\n TabbedLayout.prototype.getMinDimensions = function () {\n var eDummyContainer = this.eGui.cloneNode(true);\n var eDummyBody = eDummyContainer.querySelector('[ref=\"tabBody\"]');\n // position fixed, so it isn't restricted to the boundaries of the parent\n eDummyContainer.style.position = 'fixed';\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n this.eGui.appendChild(eDummyContainer);\n var minWidth = 0;\n var minHeight = 0;\n this.items.forEach(function (itemWrapper) {\n utils_1._.clearElement(eDummyBody);\n var eClone = itemWrapper.tabbedItem.bodyPromise.resolveNow(null, function (body) { return body.cloneNode(true); });\n if (eClone == null) {\n return;\n }\n eDummyBody.appendChild(eClone);\n if (minWidth < eDummyContainer.offsetWidth) {\n minWidth = eDummyContainer.offsetWidth;\n }\n if (minHeight < eDummyContainer.offsetHeight) {\n minHeight = eDummyContainer.offsetHeight;\n }\n });\n // finally check the parent tabs are no wider, as if they\n // are, then these are the min width and not the child tabs\n // if (minWidth 0) {\n this.showItemWrapper(this.items[0]);\n }\n };\n TabbedLayout.prototype.addItem = function (item) {\n var eHeaderButton = document.createElement('span');\n eHeaderButton.appendChild(item.title);\n utils_1._.addCssClass(eHeaderButton, 'ag-tab');\n this.eHeader.appendChild(eHeaderButton);\n var wrapper = {\n tabbedItem: item,\n eHeaderButton: eHeaderButton\n };\n this.items.push(wrapper);\n eHeaderButton.addEventListener('click', this.showItemWrapper.bind(this, wrapper));\n };\n TabbedLayout.prototype.showItem = function (tabbedItem) {\n var itemWrapper = utils_1._.find(this.items, function (wrapper) {\n return wrapper.tabbedItem === tabbedItem;\n });\n if (itemWrapper) {\n this.showItemWrapper(itemWrapper);\n }\n };\n TabbedLayout.prototype.showItemWrapper = function (wrapper) {\n var _this = this;\n if (this.params.onItemClicked) {\n this.params.onItemClicked({ item: wrapper.tabbedItem });\n }\n if (this.activeItem === wrapper) {\n utils_1._.callIfPresent(this.params.onActiveItemClicked);\n return;\n }\n utils_1._.clearElement(this.eBody);\n wrapper.tabbedItem.bodyPromise.then(function (body) {\n _this.eBody.appendChild(body);\n });\n if (this.activeItem) {\n utils_1._.removeCssClass(this.activeItem.eHeaderButton, 'ag-tab-selected');\n }\n utils_1._.addCssClass(wrapper.eHeaderButton, 'ag-tab-selected');\n this.activeItem = wrapper;\n if (wrapper.tabbedItem.afterAttachedCallback) {\n wrapper.tabbedItem.afterAttachedCallback(this.afterAttachedParams);\n }\n };\n TabbedLayout.prototype.getGui = function () {\n return this.eGui;\n };\n TabbedLayout.TEMPLATE = '
' +\n '
' +\n '
' +\n '
';\n return TabbedLayout;\n}());\nexports.TabbedLayout = TabbedLayout;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar ValueCache = /** @class */ (function () {\n function ValueCache() {\n this.cacheVersion = 0;\n }\n ValueCache.prototype.init = function () {\n this.active = this.gridOptionsWrapper.isValueCache();\n this.neverExpires = this.gridOptionsWrapper.isValueCacheNeverExpires();\n };\n ValueCache.prototype.onDataChanged = function () {\n if (this.neverExpires) {\n return;\n }\n this.expire();\n };\n ValueCache.prototype.expire = function () {\n this.cacheVersion++;\n };\n ValueCache.prototype.setValue = function (rowNode, colId, value) {\n if (this.active) {\n if (rowNode.__cacheVersion !== this.cacheVersion) {\n rowNode.__cacheVersion = this.cacheVersion;\n rowNode.__cacheData = {};\n }\n rowNode.__cacheData[colId] = value;\n }\n };\n ValueCache.prototype.getValue = function (rowNode, colId) {\n var valueInCache = this.active\n && rowNode.__cacheVersion === this.cacheVersion\n && rowNode.__cacheData[colId] !== undefined;\n if (valueInCache) {\n return rowNode.__cacheData[colId];\n }\n else {\n return undefined;\n }\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ValueCache.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ValueCache.prototype, \"init\", null);\n ValueCache = __decorate([\n context_1.Bean('valueCache')\n ], ValueCache);\n return ValueCache;\n}());\nexports.ValueCache = ValueCache;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar rowRenderer_1 = require(\"../rendering/rowRenderer\");\nvar context_1 = require(\"../context/context\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar dragService_1 = require(\"../dragAndDrop/dragService\");\nvar constants_1 = require(\"../constants\");\nvar mouseEventService_1 = require(\"./mouseEventService\");\nvar focusedCellController_1 = require(\"../focusedCellController\");\nvar scrollVisibleService_1 = require(\"./scrollVisibleService\");\nvar rowContainerComponent_1 = require(\"../rendering/rowContainerComponent\");\nvar paginationProxy_1 = require(\"../rowModels/paginationProxy\");\nvar popupEditorWrapper_1 = require(\"../rendering/cellEditors/popupEditorWrapper\");\nvar alignedGridsService_1 = require(\"../alignedGridsService\");\nvar pinnedRowModel_1 = require(\"../rowModels/pinnedRowModel\");\nvar gridApi_1 = require(\"../gridApi\");\nvar animationFrameService_1 = require(\"../misc/animationFrameService\");\nvar rowComp_1 = require(\"../rendering/rowComp\");\nvar navigationService_1 = require(\"./navigationService\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar touchListener_1 = require(\"../widgets/touchListener\");\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar rowDragFeature_1 = require(\"./rowDragFeature\");\nvar maxDivHeightScaler_1 = require(\"../rendering/maxDivHeightScaler\");\nvar overlayWrapperComponent_1 = require(\"../rendering/overlays/overlayWrapperComponent\");\nvar component_1 = require(\"../widgets/component\");\nvar autoHeightCalculator_1 = require(\"../rendering/autoHeightCalculator\");\nvar columnAnimationService_1 = require(\"../rendering/columnAnimationService\");\nvar autoWidthCalculator_1 = require(\"../rendering/autoWidthCalculator\");\nvar beans_1 = require(\"../rendering/beans\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar headerRootComp_1 = require(\"../headerRendering/headerRootComp\");\nvar resizeObserverService_1 = require(\"../misc/resizeObserverService\");\nvar utils_1 = require(\"../utils\");\n// in the html below, it is important that there are no white space between some of the divs, as if there is white space,\n// it won't render correctly in safari, as safari renders white space as a gap\nvar GRID_PANEL_NORMAL_TEMPLATE = \"
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\";\nvar GridPanel = /** @class */ (function (_super) {\n __extends(GridPanel, _super);\n function GridPanel() {\n var _this = _super.call(this, GRID_PANEL_NORMAL_TEMPLATE) || this;\n _this.scrollLeft = -1;\n _this.scrollTop = -1;\n _this.resetLastHorizontalScrollElementDebounce = utils_1._.debounce(_this.resetLastHorizontalScrollElement.bind(_this), 500);\n return _this;\n }\n GridPanel.prototype.getVScrollPosition = function () {\n var result = {\n top: this.eBodyViewport.scrollTop,\n bottom: this.eBodyViewport.scrollTop + this.eBodyViewport.offsetHeight\n };\n return result;\n };\n GridPanel.prototype.getHScrollPosition = function () {\n var result = {\n left: this.eCenterViewport.scrollLeft,\n right: this.eCenterViewport.scrollLeft + this.eCenterViewport.offsetWidth\n };\n return result;\n };\n GridPanel.prototype.onRowDataChanged = function () {\n this.showOrHideOverlay();\n };\n GridPanel.prototype.showOrHideOverlay = function () {\n var isEmpty = this.paginationProxy.isEmpty();\n var isSuppressNoRowsOverlay = this.gridOptionsWrapper.isSuppressNoRowsOverlay();\n var method = isEmpty && !isSuppressNoRowsOverlay ? 'showNoRowsOverlay' : 'hideOverlay';\n this[method]();\n };\n GridPanel.prototype.onNewColumnsLoaded = function () {\n // hide overlay if columns and rows exist, this can happen if columns are loaded after data.\n // this problem exists before of the race condition between the services (column controller in this case)\n // and the view (grid panel). if the model beans were all initialised first, and then the view beans second,\n // this race condition would not happen.\n if (this.columnController.isReady() && !this.paginationProxy.isEmpty()) {\n this.hideOverlay();\n }\n };\n GridPanel.prototype.init = function () {\n var _this = this;\n this.scrollWidth = this.gridOptionsWrapper.getScrollbarWidth();\n this.enableRtl = this.gridOptionsWrapper.isEnableRtl();\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n // these elements have different CSS when layout changes\n this.gridOptionsWrapper.addLayoutElement(this.getGui());\n this.gridOptionsWrapper.addLayoutElement(this.eBodyViewport);\n this.suppressScrollOnFloatingRow();\n this.setupRowAnimationCssClass();\n this.buildRowContainerComponents();\n this.addEventListeners();\n this.addDragListeners();\n this.addScrollListener();\n if (this.gridOptionsWrapper.isRowModelDefault() && !this.gridOptionsWrapper.getRowData()) {\n this.showLoadingOverlay();\n }\n this.setCellTextSelection(this.gridOptionsWrapper.isEnableCellTextSelect());\n this.setPinnedContainerSize();\n this.setHeaderAndFloatingHeights();\n this.disableBrowserDragging();\n this.addMouseListeners();\n this.addKeyboardEvents();\n this.addBodyViewportListener();\n this.addStopEditingWhenGridLosesFocus();\n this.mockContextMenuForIPad();\n this.addRowDragListener();\n if (this.$scope) {\n this.addAngularApplyCheck();\n }\n this.onDisplayedColumnsWidthChanged();\n this.gridApi.registerGridComp(this);\n this.alignedGridsService.registerGridComp(this);\n this.headerRootComp.registerGridComp(this);\n this.navigationService.registerGridComp(this);\n this.heightScaler.registerGridComp(this);\n this.autoHeightCalculator.registerGridComp(this);\n this.columnAnimationService.registerGridComp(this);\n this.autoWidthCalculator.registerGridComp(this);\n this.paginationAutoPageSizeService.registerGridComp(this);\n this.beans.registerGridComp(this);\n this.rowRenderer.registerGridComp(this);\n if (this.rangeController) {\n this.rangeController.registerGridComp(this);\n }\n [this.eCenterViewport, this.eBodyViewport].forEach(function (viewport) {\n var unsubscribeFromResize = _this.resizeObserverService.observeResize(viewport, _this.onCenterViewportResized.bind(_this));\n _this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n });\n };\n GridPanel.prototype.onDomLayoutChanged = function () {\n var newPrintLayout = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n if (this.printLayout !== newPrintLayout) {\n this.printLayout = newPrintLayout;\n this.setWidthsOfContainers();\n // pinned containers are always hidden for print layout\n this.setPinnedContainerSize();\n }\n };\n GridPanel.prototype.onCenterViewportResized = function () {\n this.checkViewportAndScrolls();\n };\n // used by ColumnAnimationService\n GridPanel.prototype.setColumnMovingCss = function (moving) {\n this.addOrRemoveCssClass('ag-column-moving', moving);\n };\n GridPanel.prototype.setCellTextSelection = function (selectable) {\n if (selectable === void 0) { selectable = false; }\n [this.eTop, this.eCenterContainer, this.eBottom]\n .forEach(function (ct) { return utils_1._.addOrRemoveCssClass(ct, 'ag-selectable', selectable); });\n };\n GridPanel.prototype.addRowDragListener = function () {\n var rowDragFeature = new rowDragFeature_1.RowDragFeature(this.eBodyViewport, this);\n this.getContext().wireBean(rowDragFeature);\n this.dragAndDropService.addDropTarget(rowDragFeature);\n };\n GridPanel.prototype.addStopEditingWhenGridLosesFocus = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isStopEditingWhenGridLosesFocus()) {\n return;\n }\n var focusOutListener = function (event) {\n // this is the element the focus is moving to\n var elementWithFocus = event.relatedTarget;\n // see if the element the focus is going to is part of the grid\n var clickInsideGrid = false;\n var pointer = elementWithFocus;\n while (utils_1._.exists(pointer) && !clickInsideGrid) {\n var isPopup = !!_this.gridOptionsWrapper.getDomData(pointer, popupEditorWrapper_1.PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER);\n var isBody = _this.eBodyViewport === pointer || _this.eBottom === pointer || _this.eTop === pointer;\n clickInsideGrid = isPopup || isBody;\n pointer = pointer.parentNode;\n }\n if (!clickInsideGrid) {\n _this.rowRenderer.stopEditing();\n }\n };\n this.addDestroyableEventListener(this.eBodyViewport, 'focusout', focusOutListener);\n this.addDestroyableEventListener(this.eTop, 'focusout', focusOutListener);\n this.addDestroyableEventListener(this.eBottom, 'focusout', focusOutListener);\n };\n GridPanel.prototype.addAngularApplyCheck = function () {\n var _this = this;\n // this makes sure if we queue up requests, we only execute oe\n var applyTriggered = false;\n var listener = function () {\n // only need to do one apply at a time\n if (applyTriggered) {\n return;\n }\n applyTriggered = true; // mark 'need apply' to true\n window.setTimeout(function () {\n applyTriggered = false;\n _this.$scope.$apply();\n }, 0);\n };\n // these are the events we need to do an apply after - these are the ones that can end up\n // with columns added or removed\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_VIRTUAL_COLUMNS_CHANGED, listener);\n };\n // if we do not do this, then the user can select a pic in the grid (eg an image in a custom cell renderer)\n // and then that will start the browser native drag n' drop, which messes up with our own drag and drop.\n GridPanel.prototype.disableBrowserDragging = function () {\n this.addGuiEventListener('dragstart', function (event) {\n if (event.target instanceof HTMLImageElement) {\n event.preventDefault();\n return false;\n }\n });\n };\n GridPanel.prototype.addEventListeners = function () {\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_PINNED_ROW_DATA_CHANGED, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_ROW_DATA_CHANGED, this.onRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_ROW_DATA_UPDATED, this.onRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n };\n GridPanel.prototype.addDragListeners = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isEnableRangeSelection() || // no range selection if no property\n utils_1._.missing(this.rangeController) // no range selection if not enterprise version\n ) {\n return;\n }\n var containers = [\n this.eLeftContainer,\n this.eRightContainer,\n this.eCenterContainer,\n this.eTop,\n this.eBottom\n ];\n containers.forEach(function (container) {\n var params = {\n eElement: container,\n onDragStart: _this.rangeController.onDragStart.bind(_this.rangeController),\n onDragStop: _this.rangeController.onDragStop.bind(_this.rangeController),\n onDragging: _this.rangeController.onDragging.bind(_this.rangeController),\n // for range selection by dragging the mouse, we want to ignore the event if shift key is pressed,\n // as shift key click is another type of range selection\n skipMouseEvent: function (mouseEvent) { return mouseEvent.shiftKey; }\n };\n _this.dragService.addDragSource(params);\n _this.addDestroyFunc(function () { return _this.dragService.removeDragSource(params); });\n });\n };\n GridPanel.prototype.addMouseListeners = function () {\n var _this = this;\n var eventNames = ['click', 'mousedown', 'dblclick', 'contextmenu', 'mouseover', 'mouseout'];\n eventNames.forEach(function (eventName) {\n var listener = _this.processMouseEvent.bind(_this, eventName);\n _this.eAllCellContainers.forEach(function (container) {\n return _this.addDestroyableEventListener(container, eventName, listener);\n });\n });\n };\n GridPanel.prototype.addKeyboardEvents = function () {\n var _this = this;\n var eventNames = ['keydown', 'keypress'];\n eventNames.forEach(function (eventName) {\n var listener = _this.processKeyboardEvent.bind(_this, eventName);\n _this.eAllCellContainers.forEach(function (container) {\n _this.addDestroyableEventListener(container, eventName, listener, true);\n });\n });\n };\n GridPanel.prototype.addBodyViewportListener = function () {\n var _this = this;\n // we want to listen for clicks directly on the eBodyViewport, so the user has a way of showing\n // the context menu if no rows or columns are displayed, or user simply clicks outside of a cell\n var listener = function (mouseEvent) {\n var target = utils_1._.getTarget(mouseEvent);\n if (target === _this.eBodyViewport || target === _this.eCenterViewport) {\n // show it\n _this.onContextMenu(mouseEvent, null, null, null, null);\n _this.preventDefaultOnContextMenu(mouseEvent);\n }\n };\n //For some reason listening only to this.eBody doesn't work... Maybe because the event is consumed somewhere else?\n //In any case, not expending much time on this, if anyone comes across this and knows how to make this work with\n //one listener please go ahead and change it...\n this.addDestroyableEventListener(this.eBodyViewport, 'contextmenu', listener);\n };\n // + rangeController - used to know when to scroll when user is dragging outside the\n // main viewport while doing a range selection\n GridPanel.prototype.getBodyClientRect = function () {\n if (!this.eBodyViewport) {\n return;\n }\n return this.eBodyViewport.getBoundingClientRect();\n };\n GridPanel.prototype.getRowForEvent = function (event) {\n var sourceElement = utils_1._.getTarget(event);\n while (sourceElement) {\n var renderedRow = this.gridOptionsWrapper.getDomData(sourceElement, rowComp_1.RowComp.DOM_DATA_KEY_RENDERED_ROW);\n if (renderedRow) {\n return renderedRow;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n };\n GridPanel.prototype.processKeyboardEvent = function (eventName, keyboardEvent) {\n var cellComp = utils_1._.getCellCompForEvent(this.gridOptionsWrapper, keyboardEvent);\n var rowNode = cellComp.getRenderedRow().getRowNode();\n var column = cellComp.getColumn();\n var editing = cellComp.isEditing();\n if (!cellComp) {\n return;\n }\n var gridProcessingAllowed = !utils_1._.isUserSuppressingKeyboardEvent(this.gridOptionsWrapper, keyboardEvent, rowNode, column, editing);\n if (gridProcessingAllowed) {\n switch (eventName) {\n case 'keydown':\n // first see if it's a scroll key, page up / down, home / end etc\n var wasScrollKey = this.navigationService.handlePageScrollingKey(keyboardEvent);\n // if not a scroll key, then we pass onto cell\n if (!wasScrollKey) {\n cellComp.onKeyDown(keyboardEvent);\n }\n this.doClipboardOperations(keyboardEvent, cellComp);\n break;\n case 'keypress':\n cellComp.onKeyPress(keyboardEvent);\n break;\n }\n }\n else {\n keyboardEvent.preventDefault();\n }\n if (eventName === 'keydown') {\n var cellKeyDownEvent = cellComp.createEvent(keyboardEvent, events_1.Events.EVENT_CELL_KEY_DOWN);\n this.beans.eventService.dispatchEvent(cellKeyDownEvent);\n }\n if (eventName === 'keypress') {\n var cellKeyPressEvent = cellComp.createEvent(keyboardEvent, events_1.Events.EVENT_CELL_KEY_PRESS);\n this.beans.eventService.dispatchEvent(cellKeyPressEvent);\n }\n };\n GridPanel.prototype.doClipboardOperations = function (keyboardEvent, cellComp) {\n // check if ctrl or meta key pressed\n if (!keyboardEvent.ctrlKey && !keyboardEvent.metaKey) {\n return;\n }\n // if the cell the event came from is editing, then we do not\n // want to do the default shortcut keys, otherwise the editor\n // (eg a text field) would not be able to do the normal cut/copy/paste\n if (cellComp.isEditing()) {\n return;\n }\n // for copy / paste, we don't want to execute when the event\n // was from a child grid (happens in master detail)\n if (!this.mouseEventService.isEventFromThisGrid(keyboardEvent)) {\n return;\n }\n switch (keyboardEvent.which) {\n case constants_1.Constants.KEY_A:\n return this.onCtrlAndA(keyboardEvent);\n case constants_1.Constants.KEY_C:\n return this.onCtrlAndC(keyboardEvent);\n case constants_1.Constants.KEY_V:\n return this.onCtrlAndV();\n case constants_1.Constants.KEY_D:\n return this.onCtrlAndD(keyboardEvent);\n }\n };\n // gets called by rowRenderer when new data loaded, as it will want to scroll to the top\n GridPanel.prototype.scrollToTop = function () {\n this.eBodyViewport.scrollTop = 0;\n };\n GridPanel.prototype.processMouseEvent = function (eventName, mouseEvent) {\n if (!this.mouseEventService.isEventFromThisGrid(mouseEvent) ||\n utils_1._.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var rowComp = this.getRowForEvent(mouseEvent);\n var cellComp = this.mouseEventService.getRenderedCellForEvent(mouseEvent);\n if (eventName === \"contextmenu\") {\n this.handleContextMenuMouseEvent(mouseEvent, null, rowComp, cellComp);\n }\n else {\n if (cellComp) {\n cellComp.onMouseEvent(eventName, mouseEvent);\n }\n if (rowComp) {\n rowComp.onMouseEvent(eventName, mouseEvent);\n }\n }\n this.preventDefaultOnContextMenu(mouseEvent);\n };\n GridPanel.prototype.mockContextMenuForIPad = function () {\n var _this = this;\n // we do NOT want this when not in iPad, otherwise we will be doing\n if (!utils_1._.isUserAgentIPad()) {\n return;\n }\n this.eAllCellContainers.forEach(function (container) {\n var touchListener = new touchListener_1.TouchListener(container);\n var longTapListener = function (event) {\n var rowComp = _this.getRowForEvent(event.touchEvent);\n var cellComp = _this.mouseEventService.getRenderedCellForEvent(event.touchEvent);\n _this.handleContextMenuMouseEvent(null, event.touchEvent, rowComp, cellComp);\n };\n _this.addDestroyableEventListener(touchListener, touchListener_1.TouchListener.EVENT_LONG_TAP, longTapListener);\n _this.addDestroyFunc(function () { return touchListener.destroy(); });\n });\n };\n GridPanel.prototype.handleContextMenuMouseEvent = function (mouseEvent, touchEvent, rowComp, cellComp) {\n var rowNode = rowComp ? rowComp.getRowNode() : null;\n var column = cellComp ? cellComp.getColumn() : null;\n var value = null;\n if (column) {\n var event_1 = mouseEvent ? mouseEvent : touchEvent;\n cellComp.dispatchCellContextMenuEvent(event_1);\n value = this.valueService.getValue(column, rowNode);\n }\n this.onContextMenu(mouseEvent, touchEvent, rowNode, column, value);\n };\n GridPanel.prototype.onContextMenu = function (mouseEvent, touchEvent, rowNode, column, value) {\n // to allow us to debug in chrome, we ignore the event if ctrl is pressed.\n // not everyone wants this, so first 'if' below allows to turn this hack off.\n if (!this.gridOptionsWrapper.isAllowContextMenuWithControlKey()) {\n // then do the check\n if (mouseEvent && (mouseEvent.ctrlKey || mouseEvent.metaKey)) {\n return;\n }\n }\n if (this.contextMenuFactory && !this.gridOptionsWrapper.isSuppressContextMenu()) {\n var eventOrTouch = mouseEvent ? mouseEvent : touchEvent.touches[0];\n this.contextMenuFactory.showMenu(rowNode, column, value, eventOrTouch);\n var event_2 = mouseEvent ? mouseEvent : touchEvent;\n event_2.preventDefault();\n }\n };\n GridPanel.prototype.preventDefaultOnContextMenu = function (mouseEvent) {\n // if we don't do this, then middle click will never result in a 'click' event, as 'mousedown'\n // will be consumed by the browser to mean 'scroll' (as you can scroll with the middle mouse\n // button in the browser). so this property allows the user to receive middle button clicks if\n // they want.\n if (this.gridOptionsWrapper.isSuppressMiddleClickScrolls() && mouseEvent.which === 2) {\n mouseEvent.preventDefault();\n }\n };\n GridPanel.prototype.onCtrlAndA = function (event) {\n var _a = this, columnController = _a.columnController, pinnedRowModel = _a.pinnedRowModel, paginationProxy = _a.paginationProxy, rangeController = _a.rangeController;\n var PINNED_BOTTOM = constants_1.Constants.PINNED_BOTTOM, PINNED_TOP = constants_1.Constants.PINNED_TOP;\n if (rangeController && paginationProxy.isRowsToRender()) {\n var _b = [\n pinnedRowModel.isEmpty(PINNED_TOP),\n pinnedRowModel.isEmpty(PINNED_BOTTOM)\n ], isEmptyPinnedTop = _b[0], isEmptyPinnedBottom = _b[1];\n var floatingStart = isEmptyPinnedTop ? null : PINNED_TOP;\n var floatingEnd = void 0;\n var rowEnd = void 0;\n if (isEmptyPinnedBottom) {\n floatingEnd = null;\n rowEnd = this.paginationProxy.getTotalRowCount() - 1;\n }\n else {\n floatingEnd = PINNED_BOTTOM;\n rowEnd = pinnedRowModel.getPinnedBottomRowData().length - 1;\n }\n var allDisplayedColumns = columnController.getAllDisplayedColumns();\n if (utils_1._.missingOrEmpty(allDisplayedColumns)) {\n return;\n }\n rangeController.setRange({\n rowStart: 0,\n floatingStart: floatingStart,\n rowEnd: rowEnd,\n floatingEnd: floatingEnd,\n columnStart: allDisplayedColumns[0],\n columnEnd: allDisplayedColumns[allDisplayedColumns.length - 1]\n });\n }\n event.preventDefault();\n };\n GridPanel.prototype.onCtrlAndC = function (event) {\n if (!this.clipboardService || this.gridOptionsWrapper.isEnableCellTextSelection()) {\n return;\n }\n var focusedCell = this.focusedCellController.getFocusedCell();\n this.clipboardService.copyToClipboard();\n event.preventDefault();\n // the copy operation results in loosing focus on the cell,\n // because of the trickery the copy logic uses with a temporary\n // widget. so we set it back again.\n if (focusedCell) {\n this.focusedCellController.setFocusedCell(focusedCell.rowIndex, focusedCell.column, focusedCell.floating, true);\n }\n };\n GridPanel.prototype.onCtrlAndV = function () {\n if (!this.enterprise || this.gridOptionsWrapper.isSuppressClipboardPaste()) {\n return;\n }\n this.clipboardService.pasteFromClipboard();\n };\n GridPanel.prototype.onCtrlAndD = function (event) {\n if (!this.enterprise) {\n return;\n }\n this.clipboardService.copyRangeDown();\n event.preventDefault();\n };\n // Valid values for position are bottom, middle and top\n // position should be {'top','middle','bottom', or undefined/null}.\n // if undefined/null, then the grid will to the minimal amount of scrolling,\n // eg if grid needs to scroll up, it scrolls until row is on top,\n // if grid needs to scroll down, it scrolls until row is on bottom,\n // if row is already in view, grid does not scroll\n // fixme - how does this work in the new way\n GridPanel.prototype.ensureIndexVisible = function (index, position) {\n // if for print or auto height, everything is always visible\n if (this.printLayout) {\n return;\n }\n var rowCount = this.paginationProxy.getTotalRowCount();\n if (typeof index !== 'number' || index < 0 || index >= rowCount) {\n console.warn('invalid row index for ensureIndexVisible: ' + index);\n return;\n }\n this.paginationProxy.goToPageWithIndex(index);\n var rowNode = this.paginationProxy.getRow(index);\n var rowGotShiftedDuringOperation;\n do {\n var startingRowTop = rowNode.rowTop;\n var startingRowHeight = rowNode.rowHeight;\n var paginationOffset = this.paginationProxy.getPixelOffset();\n var rowTopPixel = rowNode.rowTop - paginationOffset;\n var rowBottomPixel = rowTopPixel + rowNode.rowHeight;\n var scrollPosition = this.getVScrollPosition();\n var heightOffset = this.heightScaler.getOffset();\n var vScrollTop = scrollPosition.top + heightOffset;\n var vScrollBottom = scrollPosition.bottom + heightOffset;\n var viewportHeight = vScrollBottom - vScrollTop;\n // work out the pixels for top, middle and bottom up front,\n // make the if/else below easier to read\n var pxTop = this.heightScaler.getScrollPositionForPixel(rowTopPixel);\n var pxBottom = this.heightScaler.getScrollPositionForPixel(rowBottomPixel - viewportHeight);\n // make sure if middle, the row is not outside the top of the grid\n var pxMiddle = Math.min((pxTop + pxBottom) / 2, rowTopPixel);\n var rowBelowViewport = vScrollTop > rowTopPixel;\n var rowAboveViewport = vScrollBottom < rowBottomPixel;\n var newScrollPosition = null;\n if (position === 'top') {\n newScrollPosition = pxTop;\n }\n else if (position === 'bottom') {\n newScrollPosition = pxBottom;\n }\n else if (position === 'middle') {\n newScrollPosition = pxMiddle;\n }\n else if (rowBelowViewport) {\n // if row is before, scroll up with row at top\n newScrollPosition = pxTop;\n }\n else if (rowAboveViewport) {\n // if row is below, scroll down with row at bottom\n newScrollPosition = pxBottom;\n }\n if (newScrollPosition !== null) {\n this.eBodyViewport.scrollTop = newScrollPosition;\n this.rowRenderer.redrawAfterScroll();\n }\n // the row can get shifted if during the rendering (during rowRenderer.redrawAfterScroll()),\n // the height of a row changes due to lazy calculation of row heights when using\n // colDef.autoHeight or gridOptions.getRowHeight.\n // if row was shifted, then the position we scrolled to is incorrect.\n rowGotShiftedDuringOperation = (startingRowTop !== rowNode.rowTop)\n || (startingRowHeight !== rowNode.rowHeight);\n } while (rowGotShiftedDuringOperation);\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n };\n // + moveColumnController\n GridPanel.prototype.getCenterWidth = function () {\n return this.eCenterViewport.clientWidth;\n };\n GridPanel.prototype.isVerticalScrollShowing = function () {\n var isAlwaysShowVerticalScroll = this.gridOptionsWrapper.isAlwaysShowVerticalScroll();\n utils_1._.addOrRemoveCssClass(this.eBodyViewport, 'ag-force-vertical-scroll', isAlwaysShowVerticalScroll);\n return isAlwaysShowVerticalScroll || utils_1._.isVerticalScrollShowing(this.eBodyViewport);\n };\n GridPanel.prototype.isHorizontalScrollShowing = function () {\n return utils_1._.isHorizontalScrollShowing(this.eCenterViewport);\n };\n // gets called every time the viewport size changes. we use this to check visibility of scrollbars\n // in the grid panel, and also to check size and position of viewport for row and column virtualisation.\n GridPanel.prototype.checkViewportAndScrolls = function () {\n // results in updating anything that depends on scroll showing\n this.updateScrollVisibleService();\n // fires event if height changes, used by PaginationService, HeightScalerService, RowRenderer\n this.checkBodyHeight();\n // check for virtual columns for ColumnController\n this.onHorizontalViewportChanged();\n this.setPinnedContainerSize();\n };\n GridPanel.prototype.updateScrollVisibleService = function () {\n // because of column animation (which takes 200ms), we have to do this twice.\n // eg if user removes cols anywhere except at the RHS, then the cols on the RHS\n // will animate to the left to fill the gap. this animation means just after\n // the cols are removed, the remaining cols are still in the original location\n // at the start of the animation, so pre animation the H scrollbar is still needed,\n // but post animation it is not.\n this.updateScrollVisibleServiceImpl();\n setTimeout(this.updateScrollVisibleServiceImpl.bind(this), 500);\n };\n GridPanel.prototype.updateScrollVisibleServiceImpl = function () {\n var params = {\n horizontalScrollShowing: false,\n verticalScrollShowing: false\n };\n params.verticalScrollShowing = this.isVerticalScrollShowing();\n params.horizontalScrollShowing = this.isHorizontalScrollShowing();\n this.scrollVisibleService.setScrollsVisible(params);\n this.setHorizontalScrollVisible(params.horizontalScrollShowing);\n this.setVerticalScrollPaddingVisible(params.verticalScrollShowing);\n };\n GridPanel.prototype.setHorizontalScrollVisible = function (visible) {\n var isSuppressHorizontalScroll = this.gridOptionsWrapper.isSuppressHorizontalScroll();\n var scrollSize = visible ? (this.gridOptionsWrapper.getScrollbarWidth() || 0) : 0;\n var scrollContainerSize = !isSuppressHorizontalScroll ? scrollSize : 0;\n var addIEPadding = utils_1._.isBrowserIE() && visible;\n this.eCenterViewport.style.height = \"calc(100% + \" + scrollSize + \"px)\";\n utils_1._.setFixedHeight(this.eHorizontalScrollBody, scrollContainerSize);\n // we have to add an extra pixel to the scroller viewport on IE because\n // if the container has the same size as the scrollbar, the scroll button won't work\n utils_1._.setFixedHeight(this.eBodyHorizontalScrollViewport, scrollContainerSize + (addIEPadding ? 1 : 0));\n if (addIEPadding) {\n this.eBodyHorizontalScrollViewport.style.bottom = '1px';\n }\n utils_1._.setFixedHeight(this.eBodyHorizontalScrollContainer, scrollContainerSize);\n };\n GridPanel.prototype.setVerticalScrollPaddingVisible = function (show) {\n var scroller = show ? \"scroll\" : \"hidden\";\n this.eTop.style.overflowY = this.eBottom.style.overflowY = scroller;\n this.setFakeHScrollSpacerWidths();\n };\n GridPanel.prototype.ensureColumnVisible = function (key) {\n var column = this.columnController.getGridColumn(key);\n if (!column) {\n return;\n }\n if (column.isPinned()) {\n console.warn('calling ensureIndexVisible on a ' + column.getPinned() + ' pinned column doesn\\'t make sense for column ' + column.getColId());\n return;\n }\n if (!this.columnController.isColumnDisplayed(column)) {\n console.warn('column is not currently visible');\n return;\n }\n var colLeftPixel = column.getLeft();\n var colRightPixel = colLeftPixel + column.getActualWidth();\n var viewportWidth = this.eCenterViewport.clientWidth;\n var scrollPosition = this.getCenterViewportScrollLeft();\n var bodyWidth = this.columnController.getBodyContainerWidth();\n var viewportLeftPixel;\n var viewportRightPixel;\n // the logic of working out left and right viewport px is both here and in the ColumnController,\n // need to refactor it out to one place\n if (this.enableRtl) {\n viewportLeftPixel = bodyWidth - scrollPosition - viewportWidth;\n viewportRightPixel = bodyWidth - scrollPosition;\n }\n else {\n viewportLeftPixel = scrollPosition;\n viewportRightPixel = viewportWidth + scrollPosition;\n }\n var viewportScrolledPastCol = viewportLeftPixel > colLeftPixel;\n var viewportScrolledBeforeCol = viewportRightPixel < colRightPixel;\n var colToSmallForViewport = viewportWidth < column.getActualWidth();\n var alignColToLeft = viewportScrolledPastCol || colToSmallForViewport;\n var alignColToRight = viewportScrolledBeforeCol;\n var newScrollPosition = this.getCenterViewportScrollLeft();\n if (alignColToLeft || alignColToRight) {\n if (this.enableRtl) {\n newScrollPosition = alignColToLeft ? (bodyWidth - viewportWidth - colLeftPixel) : (bodyWidth - colRightPixel);\n }\n else {\n newScrollPosition = alignColToLeft ? colLeftPixel : (colRightPixel - viewportWidth);\n }\n this.setCenterViewportScrollLeft(newScrollPosition);\n }\n else {\n // otherwise, col is already in view, so do nothing\n }\n // this will happen anyway, as the move will cause a 'scroll' event on the body, however\n // it is possible that the ensureColumnVisible method is called from within ag-Grid and\n // the caller will need to have the columns rendered to continue, which will be before\n // the event has been worked on (which is the case for cell navigation).\n this.onHorizontalViewportChanged();\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n };\n GridPanel.prototype.showLoadingOverlay = function () {\n if (!this.gridOptionsWrapper.isSuppressLoadingOverlay()) {\n this.overlayWrapper.showLoadingOverlay();\n }\n };\n GridPanel.prototype.showNoRowsOverlay = function () {\n if (!this.gridOptionsWrapper.isSuppressNoRowsOverlay()) {\n this.overlayWrapper.showNoRowsOverlay();\n }\n };\n GridPanel.prototype.hideOverlay = function () {\n this.overlayWrapper.hideOverlay();\n };\n // method will call itself if no available width. this covers if the grid\n // isn't visible, but is just about to be visible.\n GridPanel.prototype.sizeColumnsToFit = function (nextTimeout) {\n var _this = this;\n var availableWidth = this.eBodyViewport.clientWidth;\n if (availableWidth > 0) {\n this.columnController.sizeColumnsToFit(availableWidth, \"sizeColumnsToFit\");\n return;\n }\n if (nextTimeout === undefined) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(100);\n }, 0);\n }\n else if (nextTimeout === 100) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(500);\n }, 100);\n }\n else if (nextTimeout === 500) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(-1);\n }, 500);\n }\n else {\n console.warn('ag-Grid: tried to call sizeColumnsToFit() but the grid is coming back with ' +\n 'zero width, maybe the grid is not visible yet on the screen?');\n }\n };\n // used by autoWidthCalculator and autoHeightCalculator\n GridPanel.prototype.getCenterContainer = function () {\n return this.eCenterContainer;\n };\n GridPanel.prototype.getDropTargetBodyContainers = function () {\n return [this.eCenterViewport, this.eTopViewport, this.eBottomViewport];\n };\n GridPanel.prototype.getDropTargetLeftContainers = function () {\n return [this.eLeftContainer, this.eLeftBottom, this.eLeftTop];\n };\n GridPanel.prototype.getDropTargetRightContainers = function () {\n return [this.eRightContainer, this.eRightBottom, this.eRightTop];\n };\n GridPanel.prototype.buildRowContainerComponents = function () {\n var _this = this;\n this.eAllCellContainers = [\n this.eLeftContainer, this.eRightContainer, this.eCenterContainer,\n this.eTop, this.eBottom, this.eFullWidthContainer\n ];\n this.rowContainerComponents = {\n body: new rowContainerComponent_1.RowContainerComponent({\n eContainer: this.eCenterContainer,\n eWrapper: this.eCenterColsClipper,\n eViewport: this.eBodyViewport\n }),\n fullWidth: new rowContainerComponent_1.RowContainerComponent({\n eContainer: this.eFullWidthContainer\n }),\n pinnedLeft: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eLeftContainer }),\n pinnedRight: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eRightContainer }),\n floatingTop: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eTopContainer }),\n floatingTopPinnedLeft: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eLeftTop }),\n floatingTopPinnedRight: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eRightTop }),\n floatingTopFullWidth: new rowContainerComponent_1.RowContainerComponent({\n eContainer: this.eTopFullWidthContainer,\n hideWhenNoChildren: true\n }),\n floatingBottom: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eBottomContainer }),\n floatingBottomPinnedLeft: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eLeftBottom }),\n floatingBottomPinnedRight: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eRightBottom }),\n floatingBottomFullWith: new rowContainerComponent_1.RowContainerComponent({\n eContainer: this.eBottomFullWidthContainer,\n hideWhenNoChildren: true\n }),\n };\n utils_1._.iterateObject(this.rowContainerComponents, function (key, container) {\n if (container) {\n _this.getContext().wireBean(container);\n }\n });\n };\n GridPanel.prototype.setupRowAnimationCssClass = function () {\n var _this = this;\n var listener = function () {\n // we don't want to use row animation if scaling, as rows jump strangely as you scroll,\n // when scaling and doing row animation.\n var animateRows = _this.gridOptionsWrapper.isAnimateRows() && !_this.heightScaler.isScaling();\n utils_1._.addOrRemoveCssClass(_this.eBodyViewport, 'ag-row-animation', animateRows);\n utils_1._.addOrRemoveCssClass(_this.eBodyViewport, 'ag-row-no-animation', !animateRows);\n };\n listener();\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_HEIGHT_SCALE_CHANGED, listener);\n };\n // when editing a pinned row, if the cell is half outside the scrollable area, the browser can\n // scroll the column into view. we do not want this, the pinned sections should never scroll.\n // so we listen to scrolls on these containers and reset the scroll if we find one.\n GridPanel.prototype.suppressScrollOnFloatingRow = function () {\n var _this = this;\n var resetTopScroll = function () { return _this.eTopViewport.scrollLeft = 0; };\n var resetBottomScroll = function () { return _this.eTopViewport.scrollLeft = 0; };\n this.addDestroyableEventListener(this.eTopViewport, 'scroll', resetTopScroll);\n this.addDestroyableEventListener(this.eBottomViewport, 'scroll', resetBottomScroll);\n };\n GridPanel.prototype.getRowContainers = function () {\n return this.rowContainerComponents;\n };\n GridPanel.prototype.getFloatingTopBottom = function () {\n return [this.eTop, this.eBottom];\n };\n GridPanel.prototype.onDisplayedColumnsChanged = function () {\n this.setPinnedContainerSize();\n this.setHeaderAndFloatingHeights();\n this.onHorizontalViewportChanged();\n this.updateScrollVisibleService();\n };\n GridPanel.prototype.onDisplayedColumnsWidthChanged = function () {\n this.setWidthsOfContainers();\n this.onHorizontalViewportChanged();\n this.updateScrollVisibleService();\n if (this.enableRtl) {\n // because RTL is all backwards, a change in the width of the row\n // can cause a change in the scroll position, without a scroll event,\n // because the scroll position in RTL is a function that depends on\n // the width. to be convinced of this, take out this line, enable RTL,\n // scroll all the way to the left and then resize a column\n this.horizontallyScrollHeaderCenterAndFloatingCenter();\n }\n };\n GridPanel.prototype.setWidthsOfContainers = function () {\n this.setCenterWidth();\n this.setPinnedContainerSize();\n };\n GridPanel.prototype.setCenterWidth = function () {\n var width = this.columnController.getBodyContainerWidth();\n if (this.printLayout) {\n var pinnedContainerWidths = this.columnController.getPinnedLeftContainerWidth()\n + this.columnController.getPinnedRightContainerWidth();\n width += pinnedContainerWidths;\n }\n this.headerRootComp.setHeaderContainerWidth(width);\n var widthPx = width + \"px\";\n this.eCenterContainer.style.width = widthPx;\n this.eBottomContainer.style.width = widthPx;\n this.eTopContainer.style.width = widthPx;\n if (!this.printLayout) {\n this.eBodyHorizontalScrollContainer.style.width = widthPx;\n }\n };\n GridPanel.prototype.setPinnedLeftWidth = function () {\n var _this = this;\n var oldPinning = this.pinningLeft;\n var widthOfCols = this.columnController.getPinnedLeftContainerWidth();\n var newPinning = this.pinningLeft = !this.printLayout && widthOfCols > 0;\n var containers = [this.eLeftContainer, this.eLeftTop, this.eLeftBottom];\n if (oldPinning !== newPinning) {\n this.headerRootComp.setLeftVisible(newPinning);\n }\n containers.forEach(function (e) { return utils_1._.setVisible(e, _this.pinningLeft); });\n if (newPinning) {\n containers.forEach(function (ct) { return utils_1._.setFixedWidth(ct, widthOfCols); });\n }\n };\n GridPanel.prototype.setPinnedRightWidth = function () {\n var oldPinning = this.pinningRight;\n var widthOfCols = this.columnController.getPinnedRightContainerWidth();\n var newPinning = this.pinningRight = !this.printLayout && widthOfCols > 0;\n var containers = [this.eRightContainer, this.eRightTop, this.eRightBottom];\n if (oldPinning !== newPinning) {\n this.headerRootComp.setRightVisible(newPinning);\n }\n containers.forEach(function (ct) { return utils_1._.setVisible(ct, newPinning); });\n if (newPinning) {\n containers.forEach(function (ct) { return utils_1._.setFixedWidth(ct, widthOfCols); });\n }\n };\n GridPanel.prototype.setPinnedContainerSize = function () {\n this.setPinnedLeftWidth();\n this.setPinnedRightWidth();\n this.setFakeHScrollSpacerWidths();\n };\n GridPanel.prototype.setFakeHScrollSpacerWidths = function () {\n // we pad the right based on a) if cols are pinned to the right and\n // b) if v scroll is showing on the right (normal position of scroll)\n var rightSpacing = this.columnController.getPinnedRightContainerWidth();\n var scrollOnRight = !this.enableRtl && this.isVerticalScrollShowing();\n if (scrollOnRight) {\n rightSpacing += this.scrollWidth;\n }\n utils_1._.setFixedWidth(this.eHorizontalRightSpacer, rightSpacing);\n utils_1._.addOrRemoveCssClass(this.eHorizontalRightSpacer, 'ag-scroller-corner', rightSpacing <= this.scrollWidth);\n // we pad the left based on a) if cols are pinned to the left and\n // b) if v scroll is showing on the left (happens in LTR layout only)\n var leftSpacing = this.columnController.getPinnedLeftContainerWidth();\n var scrollOnLeft = this.enableRtl && this.isVerticalScrollShowing();\n if (scrollOnLeft) {\n leftSpacing += this.scrollWidth;\n }\n utils_1._.setFixedWidth(this.eHorizontalLeftSpacer, leftSpacing);\n utils_1._.addOrRemoveCssClass(this.eHorizontalLeftSpacer, 'ag-scroller-corner', leftSpacing <= this.scrollWidth);\n };\n GridPanel.prototype.checkBodyHeight = function () {\n var bodyHeight = this.eBodyViewport.clientHeight;\n if (this.bodyHeight !== bodyHeight) {\n this.bodyHeight = bodyHeight;\n var event_3 = {\n type: events_1.Events.EVENT_BODY_HEIGHT_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_3);\n }\n };\n GridPanel.prototype.setHeaderAndFloatingHeights = function () {\n var _a = this, columnController = _a.columnController, gridOptionsWrapper = _a.gridOptionsWrapper, pinnedRowModel = _a.pinnedRowModel, eTop = _a.eTop, eBottom = _a.eBottom;\n var numberOfFloating = 0;\n var headerRowCount = columnController.getHeaderRowCount();\n var totalHeaderHeight;\n var groupHeight;\n var headerHeight;\n if (!columnController.isPivotMode()) {\n if (gridOptionsWrapper.isFloatingFilter()) {\n headerRowCount++;\n }\n numberOfFloating = (gridOptionsWrapper.isFloatingFilter()) ? 1 : 0;\n groupHeight = gridOptionsWrapper.getGroupHeaderHeight();\n headerHeight = gridOptionsWrapper.getHeaderHeight();\n }\n else {\n numberOfFloating = 0;\n groupHeight = gridOptionsWrapper.getPivotGroupHeaderHeight();\n headerHeight = gridOptionsWrapper.getPivotHeaderHeight();\n }\n var numberOfNonGroups = 1 + numberOfFloating;\n var numberOfGroups = headerRowCount - numberOfNonGroups;\n totalHeaderHeight = numberOfFloating * gridOptionsWrapper.getFloatingFiltersHeight();\n totalHeaderHeight += numberOfGroups * groupHeight;\n totalHeaderHeight += headerHeight;\n this.headerRootComp.setHeight(totalHeaderHeight);\n var floatingTopHeight = pinnedRowModel.getPinnedTopTotalHeight();\n if (floatingTopHeight) {\n // adding 1px for cell bottom border\n floatingTopHeight += 1;\n }\n var floatingBottomHeight = pinnedRowModel.getPinnedBottomTotalHeight();\n if (floatingBottomHeight) {\n // adding 1px for cell bottom border\n floatingBottomHeight += 1;\n }\n var floatingTopHeightString = floatingTopHeight + \"px\";\n var floatingBottomHeightString = floatingBottomHeight + \"px\";\n eTop.style.minHeight = floatingTopHeightString;\n eTop.style.height = floatingTopHeightString;\n eTop.style.display = floatingTopHeight ? 'inherit' : 'none';\n eBottom.style.minHeight = floatingBottomHeightString;\n eBottom.style.height = floatingBottomHeightString;\n eBottom.style.display = floatingBottomHeight ? 'inherit' : 'none';\n this.checkBodyHeight();\n };\n GridPanel.prototype.getBodyHeight = function () {\n return this.bodyHeight;\n };\n // called by scrollHorizontally method and alignedGridsService\n GridPanel.prototype.setHorizontalScrollPosition = function (hScrollPosition) {\n this.eCenterViewport.scrollLeft = hScrollPosition;\n // we need to manually do the event handling (rather than wait for the event)\n // for the alignedGridsService, as if we don't, the aligned grid service gets\n // notified async, and then it's 'consuming' flag doesn't get used right, and\n // we can end up with an infinite loop\n this.doHorizontalScroll(hScrollPosition);\n };\n GridPanel.prototype.setVerticalScrollPosition = function (vScrollPosition) {\n this.eBodyViewport.scrollTop = vScrollPosition;\n };\n // called by the headerRootComp and moveColumnController\n GridPanel.prototype.scrollHorizontally = function (pixels) {\n var oldScrollPosition = this.eCenterViewport.scrollLeft;\n this.setHorizontalScrollPosition(oldScrollPosition + pixels);\n return this.eCenterViewport.scrollLeft - oldScrollPosition;\n };\n // called by rowDragFeature\n GridPanel.prototype.scrollVertically = function (pixels) {\n var oldScrollPosition = this.eBodyViewport.scrollTop;\n this.setVerticalScrollPosition(oldScrollPosition + pixels);\n return this.eBodyViewport.scrollTop - oldScrollPosition;\n };\n GridPanel.prototype.addScrollListener = function () {\n this.addDestroyableEventListener(this.eCenterViewport, 'scroll', this.onCenterViewportScroll.bind(this));\n this.addDestroyableEventListener(this.eBodyHorizontalScrollViewport, 'scroll', this.onFakeHorizontalScroll.bind(this));\n this.addDestroyableEventListener(this.eBodyViewport, 'scroll', this.onVerticalScroll.bind(this));\n };\n GridPanel.prototype.onVerticalScroll = function () {\n var scrollTop = this.eBodyViewport.scrollTop;\n this.scrollTop = scrollTop;\n this.animationFrameService.setScrollTop(scrollTop);\n this.redrawRowsAfterScroll();\n };\n GridPanel.prototype.isControllingScroll = function (eDiv) {\n if (!this.lastHorizontalScrollElement) {\n this.lastHorizontalScrollElement = eDiv;\n return true;\n }\n return eDiv === this.lastHorizontalScrollElement;\n };\n GridPanel.prototype.onFakeHorizontalScroll = function () {\n if (!this.isControllingScroll(this.eBodyHorizontalScrollViewport)) {\n return;\n }\n this.onBodyHorizontalScroll(this.eBodyHorizontalScrollViewport);\n };\n GridPanel.prototype.onCenterViewportScroll = function () {\n if (!this.isControllingScroll(this.eCenterViewport)) {\n return;\n }\n this.onBodyHorizontalScroll(this.eCenterViewport);\n };\n GridPanel.prototype.onBodyHorizontalScroll = function (eSource) {\n var _a = this.eCenterViewport, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n // in chrome, fractions can be in the scroll left, eg 250.342234 - which messes up our 'scrollWentPastBounds'\n // formula. so we floor it to allow the formula to work.\n var scrollLeft = Math.floor(utils_1._.getScrollLeft(eSource, this.enableRtl));\n // touch devices allow elastic scroll - which temporally scrolls the panel outside of the viewport\n // (eg user uses touch to go to the left of the grid, but drags past the left, the rows will actually\n // scroll past the left until the user releases the mouse). when this happens, we want ignore the scroll,\n // as otherwise it was causing the rows and header to flicker.\n var scrollWentPastBounds = scrollLeft < 0 || (scrollLeft + clientWidth > scrollWidth);\n if (scrollWentPastBounds) {\n return;\n }\n this.doHorizontalScroll(scrollLeft);\n this.resetLastHorizontalScrollElementDebounce();\n };\n GridPanel.prototype.resetLastHorizontalScrollElement = function () {\n this.lastHorizontalScrollElement = null;\n };\n GridPanel.prototype.doHorizontalScroll = function (scrollLeft) {\n this.scrollLeft = scrollLeft;\n var event = {\n type: events_1.Events.EVENT_BODY_SCROLL,\n api: this.gridApi,\n columnApi: this.columnApi,\n direction: 'horizontal',\n left: this.scrollLeft,\n top: this.scrollTop\n };\n this.eventService.dispatchEvent(event);\n this.horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft);\n this.onHorizontalViewportChanged();\n };\n GridPanel.prototype.redrawRowsAfterScroll = function () {\n var event = {\n type: events_1.Events.EVENT_BODY_SCROLL,\n direction: 'vertical',\n api: this.gridApi,\n columnApi: this.columnApi,\n left: this.scrollLeft,\n top: this.scrollTop\n };\n this.eventService.dispatchEvent(event);\n };\n // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n // out the virtual columns again. gets called from following locations:\n // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged, API (doLayout)\n GridPanel.prototype.onHorizontalViewportChanged = function () {\n var scrollWidth = this.eCenterViewport.clientWidth;\n var scrollPosition = this.getCenterViewportScrollLeft();\n this.columnController.setVirtualViewportPosition(scrollWidth, scrollPosition);\n };\n GridPanel.prototype.getCenterViewportScrollLeft = function () {\n // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n return utils_1._.getScrollLeft(this.eCenterViewport, this.enableRtl);\n };\n GridPanel.prototype.setCenterViewportScrollLeft = function (value) {\n // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n utils_1._.setScrollLeft(this.eCenterViewport, value, this.enableRtl);\n };\n GridPanel.prototype.horizontallyScrollHeaderCenterAndFloatingCenter = function (scrollLeft) {\n if (scrollLeft === undefined) {\n scrollLeft = this.getCenterViewportScrollLeft();\n }\n var offset = this.enableRtl ? scrollLeft : -scrollLeft;\n var _a = this.eCenterViewport, clientWidth = _a.clientWidth, scrollWidth = _a.scrollWidth;\n var scrollWentPastBounds = Math.abs(offset) + clientWidth > scrollWidth;\n if (scrollWentPastBounds ||\n (this.enableRtl && offset < 0) ||\n (!this.enableRtl && offset > 0)) {\n return;\n }\n this.headerRootComp.setHorizontalScroll(offset);\n this.eBottomContainer.style.transform = \"translateX(\" + offset + \"px)\";\n this.eTopContainer.style.transform = \"translateX(\" + offset + \"px)\";\n var partner = this.lastHorizontalScrollElement === this.eCenterViewport ? this.eBodyHorizontalScrollViewport : this.eCenterViewport;\n utils_1._.setScrollLeft(partner, scrollLeft, this.enableRtl);\n };\n // + rangeController\n GridPanel.prototype.addScrollEventListener = function (listener) {\n this.eBodyViewport.addEventListener('scroll', listener);\n };\n // + rangeController\n GridPanel.prototype.removeScrollEventListener = function (listener) {\n this.eBodyViewport.removeEventListener('scroll', listener);\n };\n __decorate([\n context_1.Autowired('alignedGridsService'),\n __metadata(\"design:type\", alignedGridsService_1.AlignedGridsService)\n ], GridPanel.prototype, \"alignedGridsService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], GridPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], GridPanel.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('rowRenderer'),\n __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n ], GridPanel.prototype, \"rowRenderer\", void 0);\n __decorate([\n context_1.Autowired('pinnedRowModel'),\n __metadata(\"design:type\", pinnedRowModel_1.PinnedRowModel)\n ], GridPanel.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], GridPanel.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('animationFrameService'),\n __metadata(\"design:type\", animationFrameService_1.AnimationFrameService)\n ], GridPanel.prototype, \"animationFrameService\", void 0);\n __decorate([\n context_1.Autowired('navigationService'),\n __metadata(\"design:type\", navigationService_1.NavigationService)\n ], GridPanel.prototype, \"navigationService\", void 0);\n __decorate([\n context_1.Autowired('autoHeightCalculator'),\n __metadata(\"design:type\", autoHeightCalculator_1.AutoHeightCalculator)\n ], GridPanel.prototype, \"autoHeightCalculator\", void 0);\n __decorate([\n context_1.Autowired('columnAnimationService'),\n __metadata(\"design:type\", columnAnimationService_1.ColumnAnimationService)\n ], GridPanel.prototype, \"columnAnimationService\", void 0);\n __decorate([\n context_1.Autowired('autoWidthCalculator'),\n __metadata(\"design:type\", autoWidthCalculator_1.AutoWidthCalculator)\n ], GridPanel.prototype, \"autoWidthCalculator\", void 0);\n __decorate([\n context_1.Autowired('paginationAutoPageSizeService'),\n __metadata(\"design:type\", paginationProxy_1.PaginationAutoPageSizeService)\n ], GridPanel.prototype, \"paginationAutoPageSizeService\", void 0);\n __decorate([\n context_1.Autowired('beans'),\n __metadata(\"design:type\", beans_1.Beans)\n ], GridPanel.prototype, \"beans\", void 0);\n __decorate([\n context_1.Autowired('paginationProxy'),\n __metadata(\"design:type\", paginationProxy_1.PaginationProxy)\n ], GridPanel.prototype, \"paginationProxy\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], GridPanel.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], GridPanel.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('dragService'),\n __metadata(\"design:type\", dragService_1.DragService)\n ], GridPanel.prototype, \"dragService\", void 0);\n __decorate([\n context_1.Autowired('mouseEventService'),\n __metadata(\"design:type\", mouseEventService_1.MouseEventService)\n ], GridPanel.prototype, \"mouseEventService\", void 0);\n __decorate([\n context_1.Autowired('focusedCellController'),\n __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n ], GridPanel.prototype, \"focusedCellController\", void 0);\n __decorate([\n context_1.Autowired('$scope'),\n __metadata(\"design:type\", Object)\n ], GridPanel.prototype, \"$scope\", void 0);\n __decorate([\n context_1.Autowired('scrollVisibleService'),\n __metadata(\"design:type\", scrollVisibleService_1.ScrollVisibleService)\n ], GridPanel.prototype, \"scrollVisibleService\", void 0);\n __decorate([\n context_1.Autowired('valueService'),\n __metadata(\"design:type\", valueService_1.ValueService)\n ], GridPanel.prototype, \"valueService\", void 0);\n __decorate([\n context_1.Autowired('dragAndDropService'),\n __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n ], GridPanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n context_1.Autowired('maxDivHeightScaler'),\n __metadata(\"design:type\", maxDivHeightScaler_1.MaxDivHeightScaler)\n ], GridPanel.prototype, \"heightScaler\", void 0);\n __decorate([\n context_1.Autowired('enterprise'),\n __metadata(\"design:type\", Boolean)\n ], GridPanel.prototype, \"enterprise\", void 0);\n __decorate([\n context_1.Autowired('resizeObserverService'),\n __metadata(\"design:type\", resizeObserverService_1.ResizeObserverService)\n ], GridPanel.prototype, \"resizeObserverService\", void 0);\n __decorate([\n context_1.Optional('rangeController'),\n __metadata(\"design:type\", Object)\n ], GridPanel.prototype, \"rangeController\", void 0);\n __decorate([\n context_1.Optional('contextMenuFactory'),\n __metadata(\"design:type\", Object)\n ], GridPanel.prototype, \"contextMenuFactory\", void 0);\n __decorate([\n context_1.Optional('clipboardService'),\n __metadata(\"design:type\", Object)\n ], GridPanel.prototype, \"clipboardService\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eBodyViewport'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eBodyViewport\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eCenterContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eCenterContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eCenterViewport'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eCenterViewport\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eLeftContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eLeftContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eRightContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eRightContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eCenterColsClipper'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eCenterColsClipper\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eHorizontalScrollBody'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eHorizontalScrollBody\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eHorizontalLeftSpacer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eHorizontalLeftSpacer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eHorizontalRightSpacer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eHorizontalRightSpacer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eBodyHorizontalScrollViewport'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eBodyHorizontalScrollViewport\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eBodyHorizontalScrollContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eBodyHorizontalScrollContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eFullWidthContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eFullWidthContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eTop'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eTop\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eLeftTop'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eLeftTop\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eRightTop'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eRightTop\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eTopContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eTopContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eTopViewport'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eTopViewport\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eTopFullWidthContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eTopFullWidthContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eBottom'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eBottom\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eLeftBottom'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eLeftBottom\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eRightBottom'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eRightBottom\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eBottomContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eBottomContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eBottomViewport'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eBottomViewport\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eBottomFullWidthContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eBottomFullWidthContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('headerRoot'),\n __metadata(\"design:type\", headerRootComp_1.HeaderRootComp)\n ], GridPanel.prototype, \"headerRootComp\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('overlayWrapper'),\n __metadata(\"design:type\", overlayWrapperComponent_1.OverlayWrapperComponent)\n ], GridPanel.prototype, \"overlayWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], GridPanel.prototype, \"init\", null);\n return GridPanel;\n}(component_1.Component));\nexports.GridPanel = GridPanel;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar column_1 = require(\"../../entities/column\");\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar sortController_1 = require(\"../../sortController\");\nvar touchListener_1 = require(\"../../widgets/touchListener\");\nvar eventService_1 = require(\"../../eventService\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar events_1 = require(\"../../events\");\nvar utils_1 = require(\"../../utils\");\nvar HeaderComp = /** @class */ (function (_super) {\n __extends(HeaderComp, _super);\n function HeaderComp() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastMovingChanged = 0;\n return _this;\n }\n HeaderComp.prototype.init = function (params) {\n var template = utils_1._.firstExistingValue(params.template, HeaderComp.TEMPLATE);\n // take account of any newlines & whitespace before/after the actual template\n template = template && template.trim ? template.trim() : template;\n this.setTemplate(template);\n this.params = params;\n this.setupTap();\n this.setupIcons(params.column);\n this.setupMenu();\n this.setupSort();\n this.setupFilterIcon();\n this.setupText(params.displayName);\n };\n HeaderComp.prototype.setupText = function (displayName) {\n var displayNameSanitised = utils_1._.escape(displayName);\n if (this.eText) {\n this.eText.innerHTML = displayNameSanitised;\n }\n };\n HeaderComp.prototype.setupIcons = function (column) {\n this.addInIcon('sortAscending', this.eSortAsc, column);\n this.addInIcon('sortDescending', this.eSortDesc, column);\n this.addInIcon('sortUnSort', this.eSortNone, column);\n this.addInIcon('menu', this.eMenu, column);\n this.addInIcon('filter', this.eFilter, column);\n };\n HeaderComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = utils_1._.createIconNoSpan(iconName, this.gridOptionsWrapper, column);\n eParent.appendChild(eIcon);\n };\n HeaderComp.prototype.setupTap = function () {\n var _this = this;\n var gow = this.gridOptionsWrapper;\n if (gow.isSuppressTouch()) {\n return;\n }\n var suppressMenuHide = gow.isSuppressMenuHide();\n var touchListener = new touchListener_1.TouchListener(this.getGui(), true);\n var menuTouchListener = suppressMenuHide ? new touchListener_1.TouchListener(this.eMenu, true) : touchListener;\n if (this.params.enableMenu) {\n var eventType = suppressMenuHide ? 'EVENT_TAP' : 'EVENT_LONG_TAP';\n var showMenuFn = function (event) {\n gow.getApi().showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);\n };\n this.addDestroyableEventListener(menuTouchListener, touchListener_1.TouchListener[eventType], showMenuFn);\n }\n if (this.params.enableSorting) {\n var tapListener = function (event) {\n var target = event.touchStart.target;\n // When suppressMenuHide is true, a tap on the menu icon will bubble up\n // to the header container, in that case we should not sort\n if (suppressMenuHide && _this.eMenu.contains(target)) {\n return;\n }\n _this.sortController.progressSort(_this.params.column, false, \"uiColumnSorted\");\n };\n this.addDestroyableEventListener(touchListener, touchListener_1.TouchListener.EVENT_TAP, tapListener);\n }\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n if (menuTouchListener !== touchListener) {\n this.addDestroyFunc(function () { return menuTouchListener.destroy(); });\n }\n };\n HeaderComp.prototype.setupMenu = function () {\n var _this = this;\n // if no menu provided in template, do nothing\n if (!this.eMenu) {\n return;\n }\n // we don't show the menu if on an iPad/iPhone, as the user cannot have a pointer device\n // Note: If suppressMenuHide is set to true the menu will be displayed, and if suppressMenuHide\n // is false (default) user will need to use longpress to display the menu.\n var suppressMenuHide = this.gridOptionsWrapper.isSuppressMenuHide();\n var dontShowMenu = !this.params.enableMenu || (utils_1._.isUserAgentIPad() && !suppressMenuHide);\n if (dontShowMenu) {\n utils_1._.removeFromParent(this.eMenu);\n return;\n }\n this.addDestroyableEventListener(this.eMenu, 'click', function () { return _this.showMenu(_this.eMenu); });\n if (!suppressMenuHide) {\n this.eMenu.style.opacity = '0';\n this.addGuiEventListener('mouseover', function () {\n _this.eMenu.style.opacity = '1';\n });\n this.addGuiEventListener('mouseout', function () {\n _this.eMenu.style.opacity = '0';\n });\n }\n var style = this.eMenu.style;\n style.transition = 'opacity 0.2s, border 0.2s';\n style['-webkit-transition'] = 'opacity 0.2s, border 0.2s';\n };\n HeaderComp.prototype.showMenu = function (eventSource) {\n this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource);\n };\n HeaderComp.prototype.removeSortIcons = function () {\n utils_1._.removeFromParent(this.eSortAsc);\n utils_1._.removeFromParent(this.eSortDesc);\n utils_1._.removeFromParent(this.eSortNone);\n utils_1._.removeFromParent(this.eSortOrder);\n };\n HeaderComp.prototype.setupSort = function () {\n var _this = this;\n var enableSorting = this.params.enableSorting;\n if (!enableSorting) {\n this.removeSortIcons();\n return;\n }\n var sortUsingCtrl = this.gridOptionsWrapper.isMultiSortKeyCtrl();\n // keep track of last time the moving changed flag was set\n this.addDestroyableEventListener(this.params.column, column_1.Column.EVENT_MOVING_CHANGED, function () {\n _this.lastMovingChanged = new Date().getTime();\n });\n // add the event on the header, so when clicked, we do sorting\n if (this.eLabel) {\n this.addDestroyableEventListener(this.eLabel, 'click', function (event) {\n // sometimes when moving a column via dragging, this was also firing a clicked event.\n // here is issue raised by user: https://ag-grid.zendesk.com/agent/tickets/1076\n // this check stops sort if a) column is moving or b) column moved less than 200ms ago (so caters for race condition)\n var moving = _this.params.column.isMoving();\n var nowTime = new Date().getTime();\n // typically there is <2ms if moving flag was set recently, as it would be done in same VM turn\n var movedRecently = (nowTime - _this.lastMovingChanged) < 50;\n var columnMoving = moving || movedRecently;\n if (!columnMoving) {\n var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;\n _this.params.progressSort(multiSort);\n }\n });\n }\n this.addDestroyableEventListener(this.params.column, column_1.Column.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.onSortChanged();\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_SORT_CHANGED, this.setMultiSortOrder.bind(this));\n this.setMultiSortOrder();\n };\n HeaderComp.prototype.onSortChanged = function () {\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-asc', this.params.column.isSortAscending());\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-desc', this.params.column.isSortDescending());\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-none', this.params.column.isSortNone());\n if (this.eSortAsc) {\n utils_1._.addOrRemoveCssClass(this.eSortAsc, 'ag-hidden', !this.params.column.isSortAscending());\n }\n if (this.eSortDesc) {\n utils_1._.addOrRemoveCssClass(this.eSortDesc, 'ag-hidden', !this.params.column.isSortDescending());\n }\n if (this.eSortNone) {\n var alwaysHideNoSort = !this.params.column.getColDef().unSortIcon && !this.gridOptionsWrapper.isUnSortIcon();\n utils_1._.addOrRemoveCssClass(this.eSortNone, 'ag-hidden', alwaysHideNoSort || !this.params.column.isSortNone());\n }\n };\n // we listen here for global sort events, NOT column sort events, as we want to do this\n // when sorting has been set on all column (if we listened just for our col (where we\n // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.\n HeaderComp.prototype.setMultiSortOrder = function () {\n if (!this.eSortOrder) {\n return;\n }\n var col = this.params.column;\n var allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();\n var indexThisCol = allColumnsWithSorting.indexOf(col);\n var moreThanOneColSorting = allColumnsWithSorting.length > 1;\n var showIndex = col.isSorting() && moreThanOneColSorting;\n utils_1._.setVisible(this.eSortOrder, showIndex);\n if (indexThisCol >= 0) {\n this.eSortOrder.innerHTML = (indexThisCol + 1).toString();\n }\n else {\n utils_1._.clearElement(this.eSortOrder);\n }\n };\n HeaderComp.prototype.setupFilterIcon = function () {\n if (!this.eFilter) {\n return;\n }\n this.addDestroyableEventListener(this.params.column, column_1.Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.onFilterChanged();\n };\n HeaderComp.prototype.onFilterChanged = function () {\n var filterPresent = this.params.column.isFilterActive();\n utils_1._.addOrRemoveCssClass(this.eFilter, 'ag-hidden', !filterPresent);\n };\n HeaderComp.TEMPLATE = '
' +\n ' ' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], HeaderComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('sortController'),\n __metadata(\"design:type\", sortController_1.SortController)\n ], HeaderComp.prototype, \"sortController\", void 0);\n __decorate([\n context_1.Autowired('menuFactory'),\n __metadata(\"design:type\", Object)\n ], HeaderComp.prototype, \"menuFactory\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], HeaderComp.prototype, \"eventService\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eFilter'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eFilter\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eSortAsc'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eSortAsc\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eSortDesc'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eSortDesc\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eSortNone'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eSortNone\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eSortOrder'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eSortOrder\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eMenu'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eMenu\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eLabel'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eLabel\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eText'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eText\", void 0);\n return HeaderComp;\n}(component_1.Component));\nexports.HeaderComp = HeaderComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar context_2 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar utils_1 = require(\"../utils\");\nvar MouseEventService = /** @class */ (function () {\n function MouseEventService() {\n this.gridInstanceId = MouseEventService_1.gridInstanceSequence.next();\n }\n MouseEventService_1 = MouseEventService;\n MouseEventService.prototype.init = function () {\n this.stampDomElementWithGridInstance();\n };\n // we put the instance id onto the main DOM element. this is used for events, when grids are inside grids,\n // so the grid can work out if the even came from this grid or a grid inside this one. see the ctrl+v logic\n // for where this is used.\n MouseEventService.prototype.stampDomElementWithGridInstance = function () {\n this.eGridDiv[MouseEventService_1.GRID_DOM_KEY] = this.gridInstanceId;\n };\n MouseEventService.prototype.getRenderedCellForEvent = function (event) {\n return utils_1._.getCellCompForEvent(this.gridOptionsWrapper, event);\n };\n // walks the path of the event, and returns true if this grid is the first one that it finds. if doing\n // master / detail grids, and a child grid is found, then it returns false. this stops things like copy/paste\n // getting executed on many grids at the same time.\n MouseEventService.prototype.isEventFromThisGrid = function (event) {\n var path = utils_1._.getEventPath(event);\n for (var i = 0; i < path.length; i++) {\n var element = path[i];\n var instanceId = element[MouseEventService_1.GRID_DOM_KEY];\n if (utils_1._.exists(instanceId)) {\n var eventFromThisGrid = instanceId === this.gridInstanceId;\n return eventFromThisGrid;\n }\n }\n return false;\n };\n MouseEventService.prototype.getGridCellForEvent = function (event) {\n var cellComp = this.getRenderedCellForEvent(event);\n return cellComp ? cellComp.getGridCell() : null;\n };\n var MouseEventService_1;\n MouseEventService.gridInstanceSequence = new utils_1.NumberSequence();\n MouseEventService.GRID_DOM_KEY = '__ag_grid_instance';\n __decorate([\n context_2.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], MouseEventService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_2.Autowired('eGridDiv'),\n __metadata(\"design:type\", HTMLElement)\n ], MouseEventService.prototype, \"eGridDiv\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], MouseEventService.prototype, \"init\", null);\n MouseEventService = MouseEventService_1 = __decorate([\n context_1.Bean('mouseEventService')\n ], MouseEventService);\n return MouseEventService;\n}());\nexports.MouseEventService = MouseEventService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar agCheckbox_1 = require(\"../../widgets/agCheckbox\");\nvar beanStub_1 = require(\"../../context/beanStub\");\nvar context_1 = require(\"../../context/context\");\nvar columnApi_1 = require(\"../../columnController/columnApi\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar events_1 = require(\"../../events\");\nvar eventService_1 = require(\"../../eventService\");\nvar constants_1 = require(\"../../constants\");\nvar selectionController_1 = require(\"../../selectionController\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar SelectAllFeature = /** @class */ (function (_super) {\n __extends(SelectAllFeature, _super);\n function SelectAllFeature(cbSelectAll, column) {\n var _this = _super.call(this) || this;\n _this.cbSelectAllVisible = false;\n _this.processingEventFromCheckbox = false;\n _this.cbSelectAll = cbSelectAll;\n _this.column = column;\n var colDef = column.getColDef();\n _this.filteredOnly = colDef ? !!colDef.headerCheckboxSelectionFilteredOnly : false;\n return _this;\n }\n SelectAllFeature.prototype.postConstruct = function () {\n this.showOrHideSelectAll();\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelectAll.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_SELECTION_CHANGED, this.onSelectionChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_MODEL_UPDATED, this.onModelChanged.bind(this));\n this.addDestroyableEventListener(this.cbSelectAll, agCheckbox_1.AgCheckbox.EVENT_CHANGED, this.onCbSelectAll.bind(this));\n };\n SelectAllFeature.prototype.showOrHideSelectAll = function () {\n this.cbSelectAllVisible = this.isCheckboxSelection();\n this.cbSelectAll.setVisible(this.cbSelectAllVisible);\n if (this.cbSelectAllVisible) {\n // in case user is trying this feature with the wrong model type\n this.checkRightRowModelType();\n // make sure checkbox is showing the right state\n this.updateStateOfCheckbox();\n }\n };\n SelectAllFeature.prototype.onModelChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.onSelectionChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.getNextCheckboxState = function (selectionCount) {\n if (selectionCount.selected === 0 && selectionCount.notSelected === 0) {\n // if no rows, always have it unselected\n return false;\n }\n else if (selectionCount.selected > 0 && selectionCount.notSelected > 0) {\n // if mix of selected and unselected, this is the tri-state\n return null;\n }\n else if (selectionCount.selected > 0) {\n // only selected\n return true;\n }\n else {\n // nothing selected\n return false;\n }\n };\n SelectAllFeature.prototype.updateStateOfCheckbox = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n this.processingEventFromCheckbox = true;\n var selectionCount = this.getSelectionCount();\n var allSelected = this.getNextCheckboxState(selectionCount);\n this.cbSelectAll.setSelected(allSelected);\n this.processingEventFromCheckbox = false;\n };\n SelectAllFeature.prototype.getSelectionCount = function () {\n var _this = this;\n var selectedCount = 0;\n var notSelectedCount = 0;\n var callback = function (node) {\n if (_this.gridOptionsWrapper.isGroupSelectsChildren() && node.group) {\n return;\n }\n if (node.isSelected()) {\n selectedCount++;\n }\n else if (!node.selectable) {\n // don't count non-selectable nodes!\n }\n else {\n notSelectedCount++;\n }\n };\n if (this.filteredOnly) {\n this.gridApi.forEachNodeAfterFilter(callback);\n }\n else {\n this.gridApi.forEachNode(callback);\n }\n return {\n notSelected: notSelectedCount,\n selected: selectedCount\n };\n };\n SelectAllFeature.prototype.checkRightRowModelType = function () {\n var rowModelType = this.rowModel.getType();\n var rowModelMatches = rowModelType === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n if (!rowModelMatches) {\n console.warn(\"ag-Grid: selectAllCheckbox is only available if using normal row model, you are using \" + rowModelType);\n }\n };\n SelectAllFeature.prototype.onCbSelectAll = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n if (!this.cbSelectAllVisible) {\n return;\n }\n var value = this.cbSelectAll.isSelected();\n if (value) {\n this.selectionController.selectAllRowNodes(this.filteredOnly);\n }\n else {\n this.selectionController.deselectAllRowNodes(this.filteredOnly);\n }\n };\n SelectAllFeature.prototype.isCheckboxSelection = function () {\n var result = this.column.getColDef().headerCheckboxSelection;\n if (typeof result === 'function') {\n var func = result;\n result = func({\n column: this.column,\n colDef: this.column.getColDef(),\n columnApi: this.columnApi,\n api: this.gridApi\n });\n }\n if (result) {\n if (this.gridOptionsWrapper.isRowModelServerSide()) {\n console.warn('headerCheckboxSelection is not supported for Server Side Row Model');\n return false;\n }\n if (this.gridOptionsWrapper.isRowModelInfinite()) {\n console.warn('headerCheckboxSelection is not supported for Infinite Row Model');\n return false;\n }\n if (this.gridOptionsWrapper.isRowModelViewport()) {\n console.warn('headerCheckboxSelection is not supported for Viewport Row Model');\n return false;\n }\n // otherwise the row model is compatible, so return true\n return true;\n }\n else {\n return false;\n }\n };\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], SelectAllFeature.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], SelectAllFeature.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], SelectAllFeature.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], SelectAllFeature.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('selectionController'),\n __metadata(\"design:type\", selectionController_1.SelectionController)\n ], SelectAllFeature.prototype, \"selectionController\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], SelectAllFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], SelectAllFeature.prototype, \"postConstruct\", null);\n return SelectAllFeature;\n}(beanStub_1.BeanStub));\nexports.SelectAllFeature = SelectAllFeature;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PropertyKeys = /** @class */ (function () {\n function PropertyKeys() {\n }\n PropertyKeys.STRING_PROPERTIES = [\n 'sortingOrder', 'rowClass', 'rowSelection', 'overlayLoadingTemplate',\n 'overlayNoRowsTemplate', 'quickFilterText', 'rowModelType',\n 'editType', 'domLayout', 'clipboardDeliminator', 'rowGroupPanelShow',\n 'multiSortKey', 'pivotColumnGroupTotals', 'pivotRowTotals', 'pivotPanelShow'\n ];\n PropertyKeys.OBJECT_PROPERTIES = [\n 'components', 'frameworkComponents', 'rowStyle', 'context', 'autoGroupColumnDef', 'groupColumnDef', 'localeText',\n 'icons', 'datasource', 'serverSideDatasource', 'viewportDatasource', 'groupRowRendererParams', 'aggFuncs',\n 'fullWidthCellRendererParams', 'defaultColGroupDef', 'defaultColDef', 'defaultExportParams', 'columnTypes',\n 'rowClassRules', 'detailGridOptions', 'detailCellRendererParams', 'loadingCellRendererParams', 'loadingOverlayComponentParams',\n 'noRowsOverlayComponentParams', 'popupParent', 'colResizeDefault', 'reduxStore', 'statusBar', 'sideBar'\n ];\n PropertyKeys.ARRAY_PROPERTIES = [\n 'slaveGrids', 'alignedGrids', 'rowData',\n 'columnDefs', 'excelStyles', 'pinnedTopRowData', 'pinnedBottomRowData'\n /** @deprecated */\n ];\n PropertyKeys.NUMBER_PROPERTIES = [\n 'rowHeight', 'detailRowHeight', 'rowBuffer', 'colWidth', 'headerHeight', 'groupHeaderHeight',\n 'floatingFiltersHeight', 'pivotHeaderHeight', 'pivotGroupHeaderHeight', 'groupDefaultExpanded',\n 'minColWidth', 'maxColWidth', 'viewportRowModelPageSize', 'viewportRowModelBufferSize',\n 'autoSizePadding', 'maxBlocksInCache', 'maxConcurrentDatasourceRequests',\n 'cacheOverflowSize', 'paginationPageSize', 'cacheBlockSize', 'infiniteInitialRowCount',\n 'scrollbarWidth', 'paginationStartPage', 'infiniteBlockSize', 'batchUpdateWaitMillis',\n 'blockLoadDebounceMillis'\n ];\n PropertyKeys.BOOLEAN_PROPERTIES = [\n 'toolPanelSuppressRowGroups', 'toolPanelSuppressValues', 'toolPanelSuppressPivots', 'toolPanelSuppressPivotMode',\n 'toolPanelSuppressSideButtons', 'toolPanelSuppressColumnFilter', 'toolPanelSuppressColumnSelectAll',\n 'toolPanelSuppressColumnExpandAll', 'suppressMakeColumnVisibleAfterUnGroup',\n 'suppressRowClickSelection', 'suppressCellSelection', 'suppressHorizontalScroll', 'debug',\n 'enableBrowserTooltips', 'enableColResize', 'enableCellExpressions', 'enableSorting', 'enableServerSideSorting',\n 'enableFilter', 'enableServerSideFilter', 'angularCompileRows', 'angularCompileFilters',\n 'angularCompileHeaders', 'groupSuppressAutoColumn', 'groupSelectsChildren',\n 'groupIncludeFooter', 'groupIncludeTotalFooter', 'groupUseEntireRow', 'groupSuppressRow', 'groupSuppressBlankHeader',\n 'forPrint', 'suppressMenuHide', 'rowDeselection', 'unSortIcon', 'suppressMultiSort',\n 'singleClickEdit', 'suppressLoadingOverlay', 'suppressNoRowsOverlay', 'suppressAutoSize',\n 'suppressParentsInRowNodes', 'showToolPanel', 'suppressColumnMoveAnimation', 'suppressMovableColumns',\n 'suppressFieldDotNotation', 'enableRangeSelection', 'deltaSort',\n 'suppressTouch', 'suppressAsyncEvents', 'allowContextMenuWithControlKey',\n 'suppressContextMenu', 'suppressMenuFilterPanel', 'suppressMenuMainPanel', 'suppressMenuColumnPanel',\n 'rememberGroupStateWhenNewData', 'enableCellChangeFlash', 'suppressDragLeaveHidesColumns',\n 'suppressMiddleClickScrolls', 'suppressPreventDefaultOnMouseWheel', 'suppressUseColIdForGroups',\n 'suppressCopyRowsToClipboard', 'copyHeadersToClipboard', 'pivotMode', 'suppressAggFuncInHeader',\n 'suppressColumnVirtualisation', 'suppressAggAtRootLevel', 'suppressFocusAfterRefresh', 'functionsPassive',\n 'functionsReadOnly', 'animateRows', 'groupSelectsFiltered', 'groupRemoveSingleChildren',\n 'groupRemoveLowestSingleChildren', 'enableRtl', 'suppressClickEdit', 'rowDragManaged', 'suppressRowDrag',\n 'enableGroupEdit', 'embedFullWidthRows', 'deprecatedEmbedFullWidthRows', 'suppressTabbing', 'suppressPaginationPanel',\n 'floatingFilter', 'groupHideOpenParents', 'groupMultiAutoColumn', 'pagination', 'stopEditingWhenGridLosesFocus',\n 'paginationAutoPageSize', 'suppressScrollOnNewData', 'purgeClosedRowNodes', 'cacheQuickFilter',\n 'deltaRowDataMode', 'ensureDomOrder', 'accentedSort', 'pivotTotals', 'suppressChangeDetection',\n 'valueCache', 'valueCacheNeverExpires', 'aggregateOnlyChangedColumns', 'suppressAnimationFrame',\n 'suppressExcelExport', 'suppressCsvExport', 'treeData', 'masterDetail', 'suppressMultiRangeSelection',\n 'enterMovesDownAfterEdit', 'enterMovesDown', 'suppressPropertyNamesCheck', 'rowMultiSelectWithClick',\n 'contractColumnSelection', 'suppressEnterpriseResetOnNewColumns', 'enableOldSetFilterModel',\n 'suppressRowHoverHighlight', 'gridAutoHeight', 'suppressRowTransform', 'suppressClipboardPaste',\n 'serverSideSortingAlwaysResets', 'reactNext', 'suppressSetColumnStateEvents', 'enableCharts',\n 'deltaColumnMode', 'suppressMaintainUnsortedOrder', 'enableCellTextSelection', 'suppressBrowserResizeObserver',\n 'suppressMaxRenderedRowRestriction', 'excludeChildrenWhenTreeDataFiltering'\n ];\n PropertyKeys.FUNCTION_PROPERTIES = ['localeTextFunc', 'groupRowInnerRenderer', 'groupRowInnerRendererFramework',\n 'dateComponent', 'dateComponentFramework', 'groupRowRenderer', 'groupRowRendererFramework', 'isExternalFilterPresent',\n 'getRowHeight', 'doesExternalFilterPass', 'getRowClass', 'getRowStyle', 'getRowClassRules',\n 'traverseNode', 'getContextMenuItems', 'getMainMenuItems', 'processRowPostCreate', 'processCellForClipboard',\n 'getNodeChildDetails', 'groupRowAggNodes', 'getRowNodeId', 'isFullWidthCell', 'fullWidthCellRenderer',\n 'fullWidthCellRendererFramework', 'doesDataFlower', 'processSecondaryColDef', 'processSecondaryColGroupDef',\n 'getBusinessKeyForNode', 'sendToClipboard', 'navigateToNextCell', 'tabToNextCell', 'getDetailRowData',\n 'processCellFromClipboard', 'getDocument', 'postProcessPopup', 'getChildCount', 'getDataPath', 'loadingCellRenderer',\n 'loadingCellRendererFramework', 'loadingOverlayComponent', 'loadingOverlayComponentFramework', 'noRowsOverlayComponent',\n 'noRowsOverlayComponentFramework', 'detailCellRenderer', 'detailCellRendererFramework', 'onGridReady',\n 'defaultGroupSortComparator', 'isRowMaster', 'isRowSelectable', 'postSort', 'processHeaderForClipboard',\n 'paginationNumberFormatter', 'processDataFromClipboard', 'getServerSideGroupKey', 'isServerSideGroup',\n 'suppressKeyboardEvent'];\n PropertyKeys.ALL_PROPERTIES = PropertyKeys.ARRAY_PROPERTIES\n .concat(PropertyKeys.OBJECT_PROPERTIES)\n .concat(PropertyKeys.STRING_PROPERTIES)\n .concat(PropertyKeys.NUMBER_PROPERTIES)\n .concat(PropertyKeys.FUNCTION_PROPERTIES)\n .concat(PropertyKeys.BOOLEAN_PROPERTIES);\n // used when doing property checks - this causes noise when using frameworks which can add their own fw specific\n // properties to colDefs, gridOptions etc\n PropertyKeys.FRAMEWORK_PROPERTIES = ['__ob__', '__metadata__', 'mappedColumnProperties', 'hasChildColumns',\n 'toColDef', 'createColDefFromGridColumn'];\n return PropertyKeys;\n}());\nexports.PropertyKeys = PropertyKeys;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar logger_1 = require(\"../logger\");\nvar context_1 = require(\"../context/context\");\nvar context_2 = require(\"../context/context\");\nvar ExpressionService = /** @class */ (function () {\n function ExpressionService() {\n this.expressionToFunctionCache = {};\n }\n ExpressionService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ExpressionService');\n };\n ExpressionService.prototype.evaluate = function (expressionOrFunc, params) {\n if (typeof expressionOrFunc === 'function') {\n // valueGetter is a function, so just call it\n var func = expressionOrFunc;\n return func(params);\n }\n else if (typeof expressionOrFunc === 'string') {\n // valueGetter is an expression, so execute the expression\n var expression = expressionOrFunc;\n return this.evaluateExpression(expression, params);\n }\n else {\n console.error('ag-Grid: value should be either a string or a function', expressionOrFunc);\n }\n };\n ExpressionService.prototype.evaluateExpression = function (expression, params) {\n try {\n var javaScriptFunction = this.createExpressionFunction(expression);\n // the params don't have all these values, rather we add every possible\n // value a params can have, which makes whatever is in the params available.\n var result = javaScriptFunction(params.value, params.context, params.oldValue, params.newValue, params.value, params.node, params.data, params.colDef, params.rowIndex, params.api, params.columnApi, params.getValue, params.column, params.columnGroup);\n return result;\n }\n catch (e) {\n // the expression failed, which can happen, as it's the client that\n // provides the expression. so print a nice message\n // tslint:disable-next-line\n console.log('Processing of the expression failed');\n // tslint:disable-next-line\n console.log('Expression = ' + expression);\n // tslint:disable-next-line\n console.log('Exception = ' + e);\n return null;\n }\n };\n ExpressionService.prototype.createExpressionFunction = function (expression) {\n // check cache first\n if (this.expressionToFunctionCache[expression]) {\n return this.expressionToFunctionCache[expression];\n }\n // if not found in cache, return the function\n var functionBody = this.createFunctionBody(expression);\n var theFunction = new Function('x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, columnApi, getValue, column, columnGroup', functionBody);\n // store in cache\n this.expressionToFunctionCache[expression] = theFunction;\n return theFunction;\n };\n ExpressionService.prototype.createFunctionBody = function (expression) {\n // if the expression has the 'return' word in it, then use as is,\n // if not, then wrap it with return and ';' to make a function\n if (expression.indexOf('return') >= 0) {\n return expression;\n }\n else {\n return 'return ' + expression + ';';\n }\n };\n __decorate([\n __param(0, context_2.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], ExpressionService.prototype, \"setBeans\", null);\n ExpressionService = __decorate([\n context_1.Bean('expressionService')\n ], ExpressionService);\n return ExpressionService;\n}());\nexports.ExpressionService = ExpressionService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// class returns unique instance id's for columns.\n// eg, the following calls (in this order) will result in:\n//\n// getInstanceIdForKey('country') => 0\n// getInstanceIdForKey('country') => 1\n// getInstanceIdForKey('country') => 2\n// getInstanceIdForKey('country') => 3\n// getInstanceIdForKey('age') => 0\n// getInstanceIdForKey('age') => 1\n// getInstanceIdForKey('country') => 4\nvar GroupInstanceIdCreator = /** @class */ (function () {\n function GroupInstanceIdCreator() {\n // this map contains keys to numbers, so we remember what the last call was\n this.existingIds = {};\n }\n GroupInstanceIdCreator.prototype.getInstanceIdForKey = function (key) {\n var lastResult = this.existingIds[key];\n var result;\n if (typeof lastResult !== 'number') {\n // first time this key\n result = 0;\n }\n else {\n result = lastResult + 1;\n }\n this.existingIds[key] = result;\n return result;\n };\n return GroupInstanceIdCreator;\n}());\nexports.GroupInstanceIdCreator = GroupInstanceIdCreator;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar expressionService_1 = require(\"../../valueService/expressionService\");\nvar eventService_1 = require(\"../../eventService\");\nvar constants_1 = require(\"../../constants\");\nvar context_1 = require(\"../../context/context\");\nvar component_1 = require(\"../../widgets/component\");\nvar rowNode_1 = require(\"../../entities/rowNode\");\nvar valueFormatterService_1 = require(\"../valueFormatterService\");\nvar checkboxSelectionComponent_1 = require(\"../checkboxSelectionComponent\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar column_1 = require(\"../../entities/column\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar mouseEventService_1 = require(\"../../gridPanel/mouseEventService\");\nvar userComponentFactory_1 = require(\"../../components/framework/userComponentFactory\");\nvar utils_1 = require(\"../../utils\");\nvar GroupCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCellRenderer, _super);\n function GroupCellRenderer() {\n return _super.call(this, GroupCellRenderer.TEMPLATE) || this;\n }\n GroupCellRenderer.prototype.init = function (params) {\n this.params = params;\n if (this.gridOptionsWrapper.isGroupIncludeTotalFooter()) {\n this.assignBlankValueToGroupFooterCell(params);\n }\n var embeddedRowMismatch = this.isEmbeddedRowMismatch();\n // This allows for empty strings to appear as groups since\n // it will only return for null or undefined.\n var cellIsEmpty = params.value == null;\n this.cellIsBlank = embeddedRowMismatch || cellIsEmpty;\n if (this.cellIsBlank) {\n return;\n }\n this.setupDragOpenParents();\n this.addExpandAndContract();\n this.addCheckboxIfNeeded();\n this.addValueElement();\n this.setupIndent();\n };\n GroupCellRenderer.prototype.assignBlankValueToGroupFooterCell = function (params) {\n // this is not ideal, but it was the only way we could get footer working for the root node\n if (!params.value && params.node.level == -1) {\n params.value = '';\n }\n };\n // if we are doing embedded full width rows, we only show the renderer when\n // in the body, or if pinning in the pinned section, or if pinning and RTL,\n // in the right section. otherwise we would have the cell repeated in each section.\n GroupCellRenderer.prototype.isEmbeddedRowMismatch = function () {\n if (this.params.fullWidth && this.gridOptionsWrapper.isEmbedFullWidthRows()) {\n var pinnedLeftCell = this.params.pinned === column_1.Column.PINNED_LEFT;\n var pinnedRightCell = this.params.pinned === column_1.Column.PINNED_RIGHT;\n var bodyCell = !pinnedLeftCell && !pinnedRightCell;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n if (this.columnController.isPinningLeft()) {\n return !pinnedRightCell;\n }\n else {\n return !bodyCell;\n }\n }\n else {\n if (this.columnController.isPinningLeft()) {\n return !pinnedLeftCell;\n }\n else {\n return !bodyCell;\n }\n }\n }\n else {\n return false;\n }\n };\n GroupCellRenderer.prototype.setIndent = function () {\n if (this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n var params = this.params;\n var rowNode = params.node;\n var paddingCount = rowNode.uiLevel;\n var userProvidedPaddingPixelsTheDeprecatedWay = params.padding >= 0;\n if (userProvidedPaddingPixelsTheDeprecatedWay) {\n this.setPaddingDeprecatedWay(paddingCount, params.padding);\n return;\n }\n if (this.indentClass) {\n this.removeCssClass(this.indentClass);\n }\n this.indentClass = 'ag-row-group-indent-' + paddingCount;\n this.addCssClass(this.indentClass);\n };\n GroupCellRenderer.prototype.setPaddingDeprecatedWay = function (paddingCount, padding) {\n utils_1._.doOnce(function () { return console.warn('ag-Grid: since v14.2, configuring padding for groupCellRenderer should be done with Sass variables and themes. Please see the ag-Grid documentation page for Themes, in particular the property $row-group-indent-size.'); }, 'groupCellRenderer->doDeprecatedWay');\n var paddingPx = paddingCount * padding;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // if doing rtl, padding is on the right\n this.getGui().style.paddingRight = paddingPx + 'px';\n }\n else {\n // otherwise it is on the left\n this.getGui().style.paddingLeft = paddingPx + 'px';\n }\n };\n GroupCellRenderer.prototype.setupIndent = function () {\n // only do this if an indent - as this overwrites the padding that\n // the theme set, which will make things look 'not aligned' for the\n // first group level.\n var node = this.params.node;\n var suppressPadding = this.params.suppressPadding;\n if (!suppressPadding) {\n this.addDestroyableEventListener(node, rowNode_1.RowNode.EVENT_UI_LEVEL_CHANGED, this.setIndent.bind(this));\n this.setIndent();\n }\n };\n GroupCellRenderer.prototype.addValueElement = function () {\n var params = this.params;\n var rowNode = this.displayedGroup;\n if (rowNode.footer) {\n this.createFooterCell();\n }\n else if (rowNode.hasChildren() ||\n utils_1._.get(params.colDef, 'cellRendererParams.innerRenderer', null) ||\n utils_1._.get(params.colDef, 'cellRendererParams.innerRendererFramework', null)) {\n this.createGroupCell();\n if (rowNode.hasChildren()) {\n this.addChildCount();\n }\n }\n else {\n this.createLeafCell();\n }\n };\n GroupCellRenderer.prototype.createFooterCell = function () {\n var footerValue;\n var footerValueGetter = this.params.footerValueGetter;\n if (footerValueGetter) {\n // params is same as we were given, except we set the value as the item to display\n var paramsClone = utils_1._.cloneObject(this.params);\n paramsClone.value = this.params.value;\n if (typeof footerValueGetter === 'function') {\n footerValue = footerValueGetter(paramsClone);\n }\n else if (typeof footerValueGetter === 'string') {\n footerValue = this.expressionService.evaluate(footerValueGetter, paramsClone);\n }\n else {\n console.warn('ag-Grid: footerValueGetter should be either a function or a string (expression)');\n }\n }\n else {\n footerValue = 'Total ' + this.params.value;\n }\n this.eValue.innerHTML = footerValue;\n };\n GroupCellRenderer.prototype.createGroupCell = function () {\n var _this = this;\n var params = this.params;\n var rowGroupColumn = this.displayedGroup.rowGroupColumn;\n // we try and use the cellRenderer of the column used for the grouping if we can\n var columnToUse = rowGroupColumn ? rowGroupColumn : params.column;\n var groupName = this.params.value;\n var valueFormatted = columnToUse ?\n this.valueFormatterService.formatValue(columnToUse, params.node, params.scope, groupName) : null;\n params.valueFormatted = valueFormatted;\n var rendererPromise;\n if (params.fullWidth == true) {\n rendererPromise = this.useFullWidth(params);\n }\n else {\n rendererPromise = this.useInnerRenderer(this.params.colDef.cellRendererParams, columnToUse.getColDef(), params);\n }\n // retain a reference to the created renderer - we'll use this later for cleanup (in destroy)\n if (rendererPromise) {\n rendererPromise.then(function (value) {\n _this.innerCellRenderer = value;\n });\n }\n };\n GroupCellRenderer.prototype.useInnerRenderer = function (groupCellRendererParams, groupedColumnDef, // the column this group row is for, eg 'Country'\n params) {\n // when grouping, the normal case is we use the cell renderer of the grouped column. eg if grouping by country\n // and then rating, we will use the country cell renderer for each country group row and likewise the rating\n // cell renderer for each rating group row.\n //\n // however if the user has innerCellRenderer defined, this gets preference and we don't use cell renderers\n // of the grouped columns.\n //\n // so we check and use in the following order:\n //\n // 1) thisColDef.cellRendererParams.innerRenderer of the column showing the groups (eg auto group column)\n // 2) groupedColDef.cellRenderer of the grouped column\n // 3) groupedColDef.cellRendererParams.innerRenderer\n var _this = this;\n var cellRendererPromise = null;\n // we check if cell renderer provided for the group cell renderer, eg colDef.cellRendererParams.innerRenderer\n var groupInnerRendererClass = this.userComponentFactory\n .lookupComponentClassDef(groupCellRendererParams, \"innerRenderer\");\n if (groupInnerRendererClass && groupInnerRendererClass.component != null\n && groupInnerRendererClass.source != userComponentFactory_1.ComponentSource.DEFAULT) {\n // use the renderer defined in cellRendererParams.innerRenderer\n cellRendererPromise = this.userComponentFactory.newInnerCellRenderer(groupCellRendererParams, params);\n }\n else {\n // otherwise see if we can use the cellRenderer of the column we are grouping by\n var groupColumnRendererClass = this.userComponentFactory\n .lookupComponentClassDef(groupedColumnDef, \"cellRenderer\");\n if (groupColumnRendererClass && groupColumnRendererClass.source != userComponentFactory_1.ComponentSource.DEFAULT) {\n // Only if the original column is using a specific renderer, it it is a using a DEFAULT one ignore it\n cellRendererPromise = this.userComponentFactory.newCellRenderer(groupedColumnDef, params);\n }\n else if (groupColumnRendererClass && groupColumnRendererClass.source == userComponentFactory_1.ComponentSource.DEFAULT\n && (utils_1._.get(groupedColumnDef, 'cellRendererParams.innerRenderer', null))) {\n // EDGE CASE - THIS COMES FROM A COLUMN WHICH HAS BEEN GROUPED DYNAMICALLY, THAT HAS AS RENDERER 'group'\n // AND HAS A INNER CELL RENDERER\n cellRendererPromise = this.userComponentFactory.newInnerCellRenderer(groupedColumnDef.cellRendererParams, params);\n }\n else {\n // This forces the retrieval of the default plain cellRenderer that just renders the values.\n cellRendererPromise = this.userComponentFactory.newCellRenderer({}, params);\n }\n }\n if (cellRendererPromise != null) {\n cellRendererPromise.then(function (rendererToUse) {\n if (rendererToUse == null) {\n _this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n return;\n }\n utils_1._.bindCellRendererToHtmlElement(cellRendererPromise, _this.eValue);\n });\n }\n else {\n this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n return cellRendererPromise;\n };\n GroupCellRenderer.prototype.useFullWidth = function (params) {\n var cellRendererPromise = this.userComponentFactory.newFullWidthGroupRowInnerCellRenderer(params);\n if (cellRendererPromise != null) {\n utils_1._.bindCellRendererToHtmlElement(cellRendererPromise, this.eValue);\n }\n else {\n this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n return cellRendererPromise;\n };\n GroupCellRenderer.prototype.addChildCount = function () {\n // only include the child count if it's included, eg if user doing custom aggregation,\n // then this could be left out, or set to -1, ie no child count\n if (this.params.suppressCount) {\n return;\n }\n this.addDestroyableEventListener(this.displayedGroup, rowNode_1.RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.updateChildCount.bind(this));\n // filtering changes the child count, so need to cater for it\n this.updateChildCount();\n };\n GroupCellRenderer.prototype.updateChildCount = function () {\n var allChildrenCount = this.displayedGroup.allChildrenCount;\n this.eChildCount.innerHTML = allChildrenCount >= 0 ? \"(\" + allChildrenCount + \")\" : \"\";\n };\n GroupCellRenderer.prototype.createLeafCell = function () {\n if (utils_1._.exists(this.params.value)) {\n this.eValue.innerHTML = this.params.valueFormatted ? this.params.valueFormatted : this.params.value;\n }\n };\n GroupCellRenderer.prototype.isUserWantsSelected = function () {\n var paramsCheckbox = this.params.checkbox;\n if (typeof paramsCheckbox === 'function') {\n return paramsCheckbox(this.params);\n }\n else {\n return paramsCheckbox === true;\n }\n };\n GroupCellRenderer.prototype.addCheckboxIfNeeded = function () {\n var rowNode = this.displayedGroup;\n var checkboxNeeded = this.isUserWantsSelected()\n // footers cannot be selected\n && !rowNode.footer\n // pinned rows cannot be selected\n && !rowNode.rowPinned\n // details cannot be selected\n && !rowNode.detail;\n if (checkboxNeeded) {\n var cbSelectionComponent_1 = new checkboxSelectionComponent_1.CheckboxSelectionComponent();\n this.getContext().wireBean(cbSelectionComponent_1);\n cbSelectionComponent_1.init({ rowNode: rowNode, column: this.params.column });\n this.eCheckbox.appendChild(cbSelectionComponent_1.getGui());\n this.addDestroyFunc(function () { return cbSelectionComponent_1.destroy(); });\n }\n utils_1._.addOrRemoveCssClass(this.eCheckbox, 'ag-invisible', !checkboxNeeded);\n };\n GroupCellRenderer.prototype.addExpandAndContract = function () {\n var params = this.params;\n var eGroupCell = params.eGridCell;\n var eExpandedIcon = utils_1._.createIconNoSpan('groupExpanded', this.gridOptionsWrapper, null);\n var eContractedIcon = utils_1._.createIconNoSpan('groupContracted', this.gridOptionsWrapper, null);\n this.eExpanded.appendChild(eExpandedIcon);\n this.eContracted.appendChild(eContractedIcon);\n this.addDestroyableEventListener(this.eExpanded, 'click', this.onExpandClicked.bind(this));\n this.addDestroyableEventListener(this.eContracted, 'click', this.onExpandClicked.bind(this));\n // expand / contract as the user hits enter\n this.addDestroyableEventListener(eGroupCell, 'keydown', this.onKeyDown.bind(this), { capture: true });\n this.addDestroyableEventListener(params.node, rowNode_1.RowNode.EVENT_EXPANDED_CHANGED, this.showExpandAndContractIcons.bind(this));\n this.showExpandAndContractIcons();\n // because we don't show the expand / contract when there are no children, we need to check every time\n // the number of children change.\n this.addDestroyableEventListener(this.displayedGroup, rowNode_1.RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.onAllChildrenCountChanged.bind(this));\n // if editing groups, then double click is to start editing\n if (!this.gridOptionsWrapper.isEnableGroupEdit() && this.isExpandable() && !params.suppressDoubleClickExpand) {\n this.addDestroyableEventListener(eGroupCell, 'dblclick', this.onCellDblClicked.bind(this));\n }\n };\n GroupCellRenderer.prototype.onAllChildrenCountChanged = function () {\n // maybe if no children now, we should hide the expand / contract icons\n this.showExpandAndContractIcons();\n // if we have no children, this impacts the indent\n this.setIndent();\n };\n GroupCellRenderer.prototype.onKeyDown = function (event) {\n if (!event.defaultPrevented && utils_1._.isKeyPressed(event, constants_1.Constants.KEY_ENTER)) {\n var cellEditable = this.params.column.isCellEditable(this.params.node);\n if (cellEditable) {\n return;\n }\n event.preventDefault();\n this.onExpandOrContract();\n }\n };\n GroupCellRenderer.prototype.setupDragOpenParents = function () {\n var column = this.params.column;\n var rowNode = this.params.node;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n this.draggedFromHideOpenParents = false;\n }\n else if (!rowNode.hasChildren()) {\n // if we are here, and we are not a group, then we must of been dragged down,\n // as otherwise the cell would be blank, and if cell is blank, this method is never called.\n this.draggedFromHideOpenParents = true;\n }\n else {\n var rowGroupColumn = rowNode.rowGroupColumn;\n // if the displayGroup column for this col matches the rowGroupColumn we grouped by for this node,\n // then nothing was dragged down\n this.draggedFromHideOpenParents = !column.isRowGroupDisplayed(rowGroupColumn.getId());\n }\n if (this.draggedFromHideOpenParents) {\n var pointer = rowNode.parent;\n while (true) {\n if (utils_1._.missing(pointer)) {\n break;\n }\n if (pointer.rowGroupColumn && column.isRowGroupDisplayed(pointer.rowGroupColumn.getId())) {\n this.displayedGroup = pointer;\n break;\n }\n pointer = pointer.parent;\n }\n }\n // if we didn't find a displayed group, set it to the row node\n if (utils_1._.missing(this.displayedGroup)) {\n this.displayedGroup = rowNode;\n }\n };\n GroupCellRenderer.prototype.onExpandClicked = function (mouseEvent) {\n if (utils_1._.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // so if we expand a node, it does not also get selected.\n utils_1._.stopPropagationForAgGrid(mouseEvent);\n this.onExpandOrContract();\n };\n GroupCellRenderer.prototype.onCellDblClicked = function (mouseEvent) {\n if (utils_1._.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // we want to avoid acting on double click events on the expand / contract icon,\n // as that icons already has expand / collapse functionality on it. otherwise if\n // the icon was double clicked, we would get 'click', 'click', 'dblclick' which\n // is open->close->open, however double click should be open->close only.\n var targetIsExpandIcon = utils_1._.isElementInEventPath(this.eExpanded, mouseEvent)\n || utils_1._.isElementInEventPath(this.eContracted, mouseEvent);\n if (!targetIsExpandIcon) {\n this.onExpandOrContract();\n }\n };\n GroupCellRenderer.prototype.onExpandOrContract = function () {\n // must use the displayedGroup, so if data was dragged down, we expand the parent, not this row\n var rowNode = this.displayedGroup;\n rowNode.setExpanded(!rowNode.expanded);\n };\n GroupCellRenderer.prototype.isExpandable = function () {\n var rowNode = this.params.node;\n var reducedLeafNode = this.columnController.isPivotMode() && rowNode.leafGroup;\n return this.draggedFromHideOpenParents ||\n (rowNode.isExpandable() && !rowNode.footer && !reducedLeafNode);\n };\n GroupCellRenderer.prototype.showExpandAndContractIcons = function () {\n var rowNode = this.params.node;\n if (this.isExpandable()) {\n // if expandable, show one based on expand state.\n // if we were dragged down, means our parent is always expanded\n var expanded = this.draggedFromHideOpenParents ? true : rowNode.expanded;\n utils_1._.setVisible(this.eContracted, !expanded);\n utils_1._.setVisible(this.eExpanded, expanded);\n }\n else {\n // it not expandable, show neither\n utils_1._.setVisible(this.eExpanded, false);\n utils_1._.setVisible(this.eContracted, false);\n }\n var displayedGroup = this.displayedGroup;\n // compensation padding for leaf nodes, so there is blank space instead of the expand icon\n var pivotModeAndLeafGroup = this.columnController.isPivotMode() && displayedGroup.leafGroup;\n var notExpandable = !displayedGroup.isExpandable();\n var addLeafIndentClass = displayedGroup.footer || notExpandable || pivotModeAndLeafGroup;\n this.addOrRemoveCssClass('ag-row-group-leaf-indent', addLeafIndentClass);\n };\n GroupCellRenderer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.innerCellRenderer && this.innerCellRenderer.destroy) {\n this.innerCellRenderer.destroy();\n }\n };\n GroupCellRenderer.prototype.refresh = function () {\n return false;\n };\n GroupCellRenderer.TEMPLATE = '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], GroupCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('expressionService'),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], GroupCellRenderer.prototype, \"expressionService\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], GroupCellRenderer.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('valueFormatterService'),\n __metadata(\"design:type\", valueFormatterService_1.ValueFormatterService)\n ], GroupCellRenderer.prototype, \"valueFormatterService\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], GroupCellRenderer.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('mouseEventService'),\n __metadata(\"design:type\", mouseEventService_1.MouseEventService)\n ], GroupCellRenderer.prototype, \"mouseEventService\", void 0);\n __decorate([\n context_1.Autowired('userComponentFactory'),\n __metadata(\"design:type\", userComponentFactory_1.UserComponentFactory)\n ], GroupCellRenderer.prototype, \"userComponentFactory\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eExpanded'),\n __metadata(\"design:type\", HTMLElement)\n ], GroupCellRenderer.prototype, \"eExpanded\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eContracted'),\n __metadata(\"design:type\", HTMLElement)\n ], GroupCellRenderer.prototype, \"eContracted\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eCheckbox'),\n __metadata(\"design:type\", HTMLElement)\n ], GroupCellRenderer.prototype, \"eCheckbox\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eValue'),\n __metadata(\"design:type\", HTMLElement)\n ], GroupCellRenderer.prototype, \"eValue\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eChildCount'),\n __metadata(\"design:type\", HTMLElement)\n ], GroupCellRenderer.prototype, \"eChildCount\", void 0);\n return GroupCellRenderer;\n}(component_1.Component));\nexports.GroupCellRenderer = GroupCellRenderer;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SideBarDefParser = /** @class */ (function () {\n function SideBarDefParser() {\n }\n SideBarDefParser.parse = function (toParse) {\n if (!toParse) {\n return null;\n }\n if (toParse === true) {\n return {\n toolPanels: [\n SideBarDefParser.DEFAULT_COLUMN_COMP,\n SideBarDefParser.DEFAULT_FILTER_COMP,\n ],\n defaultToolPanel: 'columns'\n };\n }\n if (typeof toParse === 'string') {\n return SideBarDefParser.parse([toParse]);\n }\n if (Array.isArray(toParse)) {\n var comps_1 = [];\n toParse.forEach(function (key) {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[key];\n if (!lookupResult) {\n console.warn(\"ag-grid: the key \" + key + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n comps_1.push(lookupResult);\n });\n if (comps_1.length === 0) {\n return null;\n }\n return {\n toolPanels: comps_1,\n defaultToolPanel: comps_1[0].id\n };\n }\n var result = {\n toolPanels: SideBarDefParser.parseComponents(toParse.toolPanels),\n defaultToolPanel: toParse.defaultToolPanel,\n hiddenByDefault: toParse.hiddenByDefault\n };\n return result;\n };\n SideBarDefParser.parseComponents = function (from) {\n var result = [];\n from.forEach(function (it) {\n var toAdd = null;\n if (typeof it === 'string') {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[it];\n if (!lookupResult) {\n console.warn(\"ag-grid: the key \" + it + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n toAdd = lookupResult;\n }\n else {\n toAdd = it;\n }\n result.push(toAdd);\n });\n return result;\n };\n SideBarDefParser.DEFAULT_COLUMN_COMP = {\n id: 'columns',\n labelDefault: 'Columns',\n labelKey: 'columns',\n iconKey: 'columns',\n toolPanel: 'agColumnsToolPanel',\n };\n SideBarDefParser.DEFAULT_FILTER_COMP = {\n id: 'filters',\n labelDefault: 'Filters',\n labelKey: 'filters',\n iconKey: 'filter',\n toolPanel: 'agFiltersToolPanel',\n };\n SideBarDefParser.DEFAULT_BY_KEY = {\n columns: SideBarDefParser.DEFAULT_COLUMN_COMP,\n filters: SideBarDefParser.DEFAULT_FILTER_COMP\n };\n return SideBarDefParser;\n}());\nexports.SideBarDefParser = SideBarDefParser;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar column_1 = require(\"../../entities/column\");\nvar beanStub_1 = require(\"../../context/beanStub\");\nvar constants_1 = require(\"../../constants\");\nvar utils_1 = require(\"../../utils\");\nvar SetLeftFeature = /** @class */ (function (_super) {\n __extends(SetLeftFeature, _super);\n function SetLeftFeature(columnOrGroup, eCell, beans, colsSpanning) {\n var _this = _super.call(this) || this;\n _this.columnOrGroup = columnOrGroup;\n _this.eCell = eCell;\n _this.colsSpanning = colsSpanning;\n _this.beans = beans;\n _this.printLayout = beans.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n return _this;\n }\n SetLeftFeature.prototype.setColsSpanning = function (colsSpanning) {\n this.colsSpanning = colsSpanning;\n this.onLeftChanged();\n };\n SetLeftFeature.prototype.getColumnOrGroup = function () {\n if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n return this.colsSpanning[this.colsSpanning.length - 1];\n }\n else {\n return this.columnOrGroup;\n }\n };\n SetLeftFeature.prototype.init = function () {\n this.addDestroyableEventListener(this.columnOrGroup, column_1.Column.EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));\n this.setLeftFirstTime();\n };\n SetLeftFeature.prototype.setLeftFirstTime = function () {\n var suppressMoveAnimation = this.beans.gridOptionsWrapper.isSuppressColumnMoveAnimation();\n var oldLeftExists = utils_1._.exists(this.columnOrGroup.getOldLeft());\n var animateColumnMove = this.beans.columnAnimationService.isActive() && oldLeftExists && !suppressMoveAnimation;\n if (animateColumnMove) {\n this.animateInLeft();\n }\n else {\n this.onLeftChanged();\n }\n };\n SetLeftFeature.prototype.animateInLeft = function () {\n var _this = this;\n var left = this.getColumnOrGroup().getLeft();\n var oldLeft = this.getColumnOrGroup().getOldLeft();\n this.setLeft(oldLeft);\n // we must keep track of the left we want to set to, as this would otherwise lead to a race\n // condition, if the user changed the left value many times in one VM turn, then we want to make\n // make sure the actualLeft we set in the timeout below (in the next VM turn) is the correct left\n // position. eg if user changes column position twice, then setLeft() below executes twice in next\n // VM turn, but only one (the correct one) should get applied.\n this.actualLeft = left;\n this.beans.columnAnimationService.executeNextVMTurn(function () {\n // test this left value is the latest one to be applied, and if not, do nothing\n if (_this.actualLeft === left) {\n _this.setLeft(left);\n }\n });\n };\n SetLeftFeature.prototype.onLeftChanged = function () {\n var colOrGroup = this.getColumnOrGroup();\n var left = colOrGroup.getLeft();\n this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n this.setLeft(this.actualLeft);\n };\n SetLeftFeature.prototype.modifyLeftForPrintLayout = function (colOrGroup, leftPosition) {\n if (!this.printLayout) {\n return leftPosition;\n }\n if (colOrGroup.getPinned() === column_1.Column.PINNED_LEFT) {\n return leftPosition;\n }\n else if (colOrGroup.getPinned() === column_1.Column.PINNED_RIGHT) {\n var leftWidth = this.beans.columnController.getPinnedLeftContainerWidth();\n var bodyWidth = this.beans.columnController.getBodyContainerWidth();\n return leftWidth + bodyWidth + leftPosition;\n }\n else {\n // is in body\n var leftWidth = this.beans.columnController.getPinnedLeftContainerWidth();\n return leftWidth + leftPosition;\n }\n };\n SetLeftFeature.prototype.setLeft = function (value) {\n // if the value is null, then that means the column is no longer\n // displayed. there is logic in the rendering to fade these columns\n // out, so we don't try and change their left positions.\n if (utils_1._.exists(value)) {\n this.eCell.style.left = value + \"px\";\n }\n };\n return SetLeftFeature;\n}(beanStub_1.BeanStub));\nexports.SetLeftFeature = SetLeftFeature;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar popupComponent_1 = require(\"../../widgets/popupComponent\");\nvar constants_1 = require(\"../../constants\");\nvar utils_1 = require(\"../../utils\");\nvar LargeTextCellEditor = /** @class */ (function (_super) {\n __extends(LargeTextCellEditor, _super);\n function LargeTextCellEditor() {\n return _super.call(this, LargeTextCellEditor.TEMPLATE) || this;\n }\n LargeTextCellEditor.prototype.init = function (params) {\n this.params = params;\n this.focusAfterAttached = params.cellStartedEdit;\n this.textarea = document.createElement(\"textarea\");\n this.textarea.maxLength = params.maxLength ? params.maxLength : \"200\";\n this.textarea.cols = params.cols ? params.cols : \"60\";\n this.textarea.rows = params.rows ? params.rows : \"10\";\n if (utils_1._.exists(params.value)) {\n this.textarea.value = params.value.toString();\n }\n this.getGui().querySelector('.ag-large-textarea').appendChild(this.textarea);\n this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n };\n LargeTextCellEditor.prototype.onKeyDown = function (event) {\n var key = event.which || event.keyCode;\n if (key == constants_1.Constants.KEY_LEFT ||\n key == constants_1.Constants.KEY_UP ||\n key == constants_1.Constants.KEY_RIGHT ||\n key == constants_1.Constants.KEY_DOWN ||\n (event.shiftKey && key == constants_1.Constants.KEY_ENTER)) { // shift+enter allows for newlines\n event.stopPropagation();\n }\n };\n LargeTextCellEditor.prototype.afterGuiAttached = function () {\n if (this.focusAfterAttached) {\n this.textarea.focus();\n }\n };\n LargeTextCellEditor.prototype.getValue = function () {\n return this.params.parseValue(this.textarea.value);\n };\n LargeTextCellEditor.TEMPLATE = \n // tab index is needed so we can focus, which is needed for keyboard events\n '
' +\n '
' +\n '
';\n return LargeTextCellEditor;\n}(popupComponent_1.PopupComponent));\nexports.LargeTextCellEditor = LargeTextCellEditor;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar utils_1 = require(\"../../utils\");\nvar AnimateSlideCellRenderer = /** @class */ (function (_super) {\n __extends(AnimateSlideCellRenderer, _super);\n function AnimateSlideCellRenderer() {\n var _this = _super.call(this, AnimateSlideCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n _this.eCurrent = _this.queryForHtmlElement('.ag-value-slide-current');\n return _this;\n }\n AnimateSlideCellRenderer.prototype.init = function (params) {\n this.params = params;\n this.refresh(params);\n };\n AnimateSlideCellRenderer.prototype.addSlideAnimation = function () {\n var _this = this;\n this.refreshCount++;\n // below we keep checking this, and stop working on the animation\n // if it no longer matches - this means another animation has started\n // and this one is stale.\n var refreshCountCopy = this.refreshCount;\n // if old animation, remove it\n if (this.ePrevious) {\n this.getGui().removeChild(this.ePrevious);\n }\n this.ePrevious = utils_1._.loadTemplate('');\n this.ePrevious.innerHTML = this.eCurrent.innerHTML;\n this.getGui().insertBefore(this.ePrevious, this.eCurrent);\n // having timeout of 0 allows use to skip to the next css turn,\n // so we know the previous css classes have been applied. so the\n // complex set of setTimeout below creates the animation\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n utils_1._.addCssClass(_this.ePrevious, 'ag-value-slide-out-end');\n }, 50);\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n _this.getGui().removeChild(_this.ePrevious);\n _this.ePrevious = null;\n }, 3000);\n };\n AnimateSlideCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (utils_1._.missing(value)) {\n value = '';\n }\n if (value === this.lastValue) {\n return;\n }\n this.addSlideAnimation();\n this.lastValue = value;\n if (utils_1._.exists(params.valueFormatted)) {\n this.eCurrent.innerHTML = params.valueFormatted;\n }\n else if (utils_1._.exists(params.value)) {\n this.eCurrent.innerHTML = value;\n }\n else {\n utils_1._.clearElement(this.eCurrent);\n }\n return true;\n };\n AnimateSlideCellRenderer.TEMPLATE = '' +\n '' +\n '';\n return AnimateSlideCellRenderer;\n}(component_1.Component));\nexports.AnimateSlideCellRenderer = AnimateSlideCellRenderer;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar eventService_1 = require(\"../../eventService\");\nvar events_1 = require(\"../../events\");\nvar logger_1 = require(\"../../logger\");\nvar infiniteBlock_1 = require(\"./infiniteBlock\");\nvar rowNodeCache_1 = require(\"../cache/rowNodeCache\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar columnApi_1 = require(\"../../columnController/columnApi\");\nvar InfiniteCache = /** @class */ (function (_super) {\n __extends(InfiniteCache, _super);\n function InfiniteCache(params) {\n return _super.call(this, params) || this;\n }\n InfiniteCache.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('InfiniteCache');\n };\n InfiniteCache.prototype.init = function () {\n _super.prototype.init.call(this);\n // start load of data, as the virtualRowCount will remain at 0 otherwise,\n // so we need this to kick things off, otherwise grid would never call getRow()\n this.getRow(0);\n };\n InfiniteCache.prototype.moveItemsDown = function (block, moveFromIndex, moveCount) {\n var startRow = block.getStartRow();\n var endRow = block.getEndRow();\n var indexOfLastRowToMove = moveFromIndex + moveCount;\n // all rows need to be moved down below the insertion index\n for (var currentRowIndex = endRow - 1; currentRowIndex >= startRow; currentRowIndex--) {\n // don't move rows at or before the insertion index\n if (currentRowIndex < indexOfLastRowToMove) {\n continue;\n }\n var indexOfNodeWeWant = currentRowIndex - moveCount;\n var nodeForThisIndex = this.getRow(indexOfNodeWeWant, true);\n if (nodeForThisIndex) {\n block.setRowNode(currentRowIndex, nodeForThisIndex);\n }\n else {\n block.setBlankRowNode(currentRowIndex);\n block.setDirty();\n }\n }\n };\n InfiniteCache.prototype.insertItems = function (block, indexToInsert, items) {\n var pageStartRow = block.getStartRow();\n var pageEndRow = block.getEndRow();\n var newRowNodes = [];\n // next stage is insert the rows into this page, if applicable\n for (var index = 0; index < items.length; index++) {\n var rowIndex = indexToInsert + index;\n var currentRowInThisPage = rowIndex >= pageStartRow && rowIndex < pageEndRow;\n if (currentRowInThisPage) {\n var dataItem = items[index];\n var newRowNode = block.setNewData(rowIndex, dataItem);\n newRowNodes.push(newRowNode);\n }\n }\n return newRowNodes;\n };\n InfiniteCache.prototype.insertItemsAtIndex = function (indexToInsert, items) {\n // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n var _this = this;\n var newNodes = [];\n this.forEachBlockInReverseOrder(function (block) {\n var pageEndRow = block.getEndRow();\n // if the insertion is after this page, then this page is not impacted\n if (pageEndRow <= indexToInsert) {\n return;\n }\n _this.moveItemsDown(block, indexToInsert, items.length);\n var newNodesThisPage = _this.insertItems(block, indexToInsert, items);\n newNodesThisPage.forEach(function (rowNode) { return newNodes.push(rowNode); });\n });\n if (this.isMaxRowFound()) {\n this.hack_setVirtualRowCount(this.getVirtualRowCount() + items.length);\n }\n this.onCacheUpdated();\n var event = {\n type: events_1.Events.EVENT_ROW_DATA_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n // the rowRenderer will not pass dontCreatePage, meaning when rendering the grid,\n // it will want new pages in the cache as it asks for rows. only when we are inserting /\n // removing rows via the api is dontCreatePage set, where we move rows between the pages.\n InfiniteCache.prototype.getRow = function (rowIndex, dontCreatePage) {\n if (dontCreatePage === void 0) { dontCreatePage = false; }\n var blockId = Math.floor(rowIndex / this.cacheParams.blockSize);\n var block = this.getBlock(blockId);\n if (!block) {\n if (dontCreatePage) {\n return null;\n }\n else {\n block = this.createBlock(blockId);\n }\n }\n return block.getRow(rowIndex);\n };\n InfiniteCache.prototype.createBlock = function (blockNumber) {\n var newBlock = new infiniteBlock_1.InfiniteBlock(blockNumber, this.cacheParams);\n this.getContext().wireBean(newBlock);\n this.postCreateBlock(newBlock);\n return newBlock;\n };\n // we have this on infinite row model only, not server side row model,\n // because for server side, it would leave the children in inconsistent\n // state - eg if a node had children, but after the refresh it had data\n // for a different row, then the children would be with the wrong row node.\n InfiniteCache.prototype.refreshCache = function () {\n this.forEachBlockInOrder(function (block) { return block.setDirty(); });\n this.checkBlockToLoad();\n };\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], InfiniteCache.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], InfiniteCache.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], InfiniteCache.prototype, \"gridApi\", void 0);\n __decorate([\n __param(0, context_1.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], InfiniteCache.prototype, \"setBeans\", null);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], InfiniteCache.prototype, \"init\", null);\n return InfiniteCache;\n}(rowNodeCache_1.RowNodeCache));\nexports.InfiniteCache = InfiniteCache;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar beans_1 = require(\"./beans\");\nvar cellComp_1 = require(\"./cellComp\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar utils_1 = require(\"../utils\");\nvar AutoHeightCalculator = /** @class */ (function () {\n function AutoHeightCalculator() {\n }\n AutoHeightCalculator.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n AutoHeightCalculator.prototype.getPreferredHeightForRow = function (rowNode) {\n var _this = this;\n if (!this.eDummyContainer) {\n this.eDummyContainer = document.createElement('div');\n // so any styles on row also get applied in dummy, otherwise\n // the content in dummy may differ to the real\n utils_1._.addCssClass(this.eDummyContainer, 'ag-row ag-row-no-focus');\n }\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n var eBodyContainer = this.gridPanel.getCenterContainer();\n eBodyContainer.appendChild(this.eDummyContainer);\n var cellComps = [];\n var autoRowHeightCols = this.columnController.getAllAutoRowHeightCols();\n var visibleAutoRowHeightCols = autoRowHeightCols.filter(function (col) { return col.isVisible(); });\n visibleAutoRowHeightCols.forEach(function (col) {\n var cellComp = new cellComp_1.CellComp(_this.$scope, _this.beans, col, rowNode, null, true, false);\n cellComp.setParentRow(_this.eDummyContainer);\n cellComps.push(cellComp);\n });\n var template = cellComps.map(function (cellComp) { return cellComp.getCreateTemplate(); }).join(' ');\n this.eDummyContainer.innerHTML = template;\n // this gets any cellComps that are using components to put the components in\n cellComps.forEach(function (cellComp) { return cellComp.afterAttached(); });\n // we should be able to just take the height of the row at this point, however\n // the row isn't expanding to cover the cell heights, i don't know why, i couldn't\n // figure it out so instead looking at the individual cells instead\n var maxCellHeight = 0;\n for (var i = 0; i < this.eDummyContainer.children.length; i++) {\n var child = this.eDummyContainer.children[i];\n if (child.offsetHeight > maxCellHeight) {\n maxCellHeight = child.offsetHeight;\n }\n }\n // we are finished with the dummy container, so get rid of it\n eBodyContainer.removeChild(this.eDummyContainer);\n cellComps.forEach(function (cellComp) {\n // dunno why we need to detach first, doing it here to be consistent with code in RowComp\n cellComp.detach();\n cellComp.destroy();\n });\n // in case anything left over from last time\n utils_1._.clearElement(this.eDummyContainer);\n return maxCellHeight;\n };\n __decorate([\n context_1.Autowired('beans'),\n __metadata(\"design:type\", beans_1.Beans)\n ], AutoHeightCalculator.prototype, \"beans\", void 0);\n __decorate([\n context_1.Autowired(\"$scope\"),\n __metadata(\"design:type\", Object)\n ], AutoHeightCalculator.prototype, \"$scope\", void 0);\n __decorate([\n context_1.Autowired(\"columnController\"),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], AutoHeightCalculator.prototype, \"columnController\", void 0);\n AutoHeightCalculator = __decorate([\n context_1.Bean('autoHeightCalculator')\n ], AutoHeightCalculator);\n return AutoHeightCalculator;\n}());\nexports.AutoHeightCalculator = AutoHeightCalculator;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar eventService_1 = require(\"./eventService\");\nvar events_1 = require(\"./events\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar columnApi_1 = require(\"./columnController/columnApi\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar gridCell_1 = require(\"./entities/gridCell\");\nvar gridApi_1 = require(\"./gridApi\");\nvar cellComp_1 = require(\"./rendering/cellComp\");\nvar utils_1 = require(\"./utils\");\nvar FocusedCellController = /** @class */ (function () {\n function FocusedCellController() {\n }\n FocusedCellController.prototype.init = function () {\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_GROUP_OPENED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_MOVED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_PINNED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_VISIBLE, this.clearFocusedCell.bind(this));\n };\n FocusedCellController.prototype.clearFocusedCell = function () {\n this.focusedCell = null;\n this.onCellFocused(false);\n };\n FocusedCellController.prototype.getFocusedCell = function () {\n return this.focusedCell;\n };\n // we check if the browser is focusing something, and if it is, and\n // it's the cell we think is focused, then return the cell. so this\n // methods returns the cell if a) we think it has focus and b) the\n // browser thinks it has focus. this then returns nothing if we\n // first focus a cell, then second click outside the grid, as then the\n // grid cell will still be focused as far as the grid is concerned,\n // however the browser focus will have moved somewhere else.\n FocusedCellController.prototype.getFocusCellToUseAfterRefresh = function () {\n if (this.gridOptionsWrapper.isSuppressFocusAfterRefresh()) {\n return null;\n }\n if (!this.focusedCell) {\n return null;\n }\n // we check that the browser is actually focusing on the grid, if it is not, then\n // we have nothing to worry about\n var browserFocusedCell = this.getGridCellForDomElement(document.activeElement);\n if (!browserFocusedCell) {\n return null;\n }\n return this.focusedCell;\n };\n FocusedCellController.prototype.getGridCellForDomElement = function (eBrowserCell) {\n var ePointer = eBrowserCell;\n while (ePointer) {\n var cellComp = this.gridOptionsWrapper.getDomData(ePointer, cellComp_1.CellComp.DOM_DATA_KEY_CELL_COMP);\n if (cellComp) {\n return cellComp.getGridCell();\n }\n ePointer = ePointer.parentNode;\n }\n return null;\n };\n FocusedCellController.prototype.setFocusedCell = function (rowIndex, colKey, floating, forceBrowserFocus) {\n if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n var column = utils_1._.makeNull(this.columnController.getGridColumn(colKey));\n this.focusedCell = new gridCell_1.GridCell({ rowIndex: rowIndex,\n floating: utils_1._.makeNull(floating),\n column: column });\n this.onCellFocused(forceBrowserFocus);\n };\n FocusedCellController.prototype.isCellFocused = function (gridCell) {\n if (utils_1._.missing(this.focusedCell)) {\n return false;\n }\n return this.focusedCell.column === gridCell.column && this.isRowFocused(gridCell.rowIndex, gridCell.floating);\n };\n FocusedCellController.prototype.isRowNodeFocused = function (rowNode) {\n return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);\n };\n FocusedCellController.prototype.isAnyCellFocused = function () {\n return !!this.focusedCell;\n };\n FocusedCellController.prototype.isRowFocused = function (rowIndex, floating) {\n if (utils_1._.missing(this.focusedCell)) {\n return false;\n }\n var floatingOrNull = utils_1._.makeNull(floating);\n return this.focusedCell.rowIndex === rowIndex && this.focusedCell.floating === floatingOrNull;\n };\n FocusedCellController.prototype.onCellFocused = function (forceBrowserFocus) {\n var event = {\n type: events_1.Events.EVENT_CELL_FOCUSED,\n forceBrowserFocus: forceBrowserFocus,\n rowIndex: null,\n column: null,\n floating: null,\n api: this.gridApi,\n columnApi: this.columnApi,\n rowPinned: null\n };\n if (this.focusedCell) {\n event.rowIndex = this.focusedCell.rowIndex;\n event.column = this.focusedCell.column;\n event.rowPinned = this.focusedCell.floating;\n }\n this.eventService.dispatchEvent(event);\n };\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], FocusedCellController.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], FocusedCellController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], FocusedCellController.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], FocusedCellController.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], FocusedCellController.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], FocusedCellController.prototype, \"init\", null);\n FocusedCellController = __decorate([\n context_1.Bean('focusedCellController')\n ], FocusedCellController);\n return FocusedCellController;\n}());\nexports.FocusedCellController = FocusedCellController;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar rowNode_1 = require(\"../../entities/rowNode\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar selectionController_1 = require(\"../../selectionController\");\nvar eventService_1 = require(\"../../eventService\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar utils_1 = require(\"../../utils\");\nvar FlattenStage = /** @class */ (function () {\n function FlattenStage() {\n }\n FlattenStage.prototype.execute = function (params) {\n var rootNode = params.rowNode;\n // even if not doing grouping, we do the mapping, as the client might\n // of passed in data that already has a grouping in it somewhere\n var result = [];\n // putting value into a wrapper so it's passed by reference\n var nextRowTop = { value: 0 };\n var skipLeafNodes = this.columnController.isPivotMode();\n // if we are reducing, and not grouping, then we want to show the root node, as that\n // is where the pivot values are\n var showRootNode = skipLeafNodes && rootNode.leafGroup;\n var topList = showRootNode ? [rootNode] : rootNode.childrenAfterSort;\n this.recursivelyAddToRowsToDisplay(topList, result, nextRowTop, skipLeafNodes, 0);\n // don't show total footer when showRootNode is true (i.e. in pivot mode and no groups)\n var includeGroupTotalFooter = !showRootNode && this.gridOptionsWrapper.isGroupIncludeTotalFooter();\n if (includeGroupTotalFooter) {\n this.ensureFooterNodeExists(rootNode);\n this.addRowNodeToRowsToDisplay(rootNode.sibling, result, nextRowTop, 0);\n }\n return result;\n };\n FlattenStage.prototype.recursivelyAddToRowsToDisplay = function (rowsToFlatten, result, nextRowTop, skipLeafNodes, uiLevel) {\n if (utils_1._.missingOrEmpty(rowsToFlatten)) {\n return;\n }\n var groupSuppressRow = this.gridOptionsWrapper.isGroupSuppressRow();\n var hideOpenParents = this.gridOptionsWrapper.isGroupHideOpenParents();\n // these two are mutually exclusive, so if first set, we don't set the second\n var groupRemoveSingleChildren = this.gridOptionsWrapper.isGroupRemoveSingleChildren();\n var groupRemoveLowestSingleChildren = !groupRemoveSingleChildren && this.gridOptionsWrapper.isGroupRemoveLowestSingleChildren();\n for (var i = 0; i < rowsToFlatten.length; i++) {\n var rowNode = rowsToFlatten[i];\n // check all these cases, for working out if this row should be included in the final mapped list\n var isParent = rowNode.hasChildren();\n var isGroupSuppressedNode = groupSuppressRow && isParent;\n var isSkippedLeafNode = skipLeafNodes && !isParent;\n var isRemovedSingleChildrenGroup = groupRemoveSingleChildren && isParent && rowNode.childrenAfterGroup.length === 1;\n var isRemovedLowestSingleChildrenGroup = groupRemoveLowestSingleChildren && isParent && rowNode.leafGroup && rowNode.childrenAfterGroup.length === 1;\n // hide open parents means when group is open, we don't show it. we also need to make sure the\n // group is expandable in the first place (as leaf groups are not expandable if pivot mode is on).\n // the UI will never allow expanding leaf groups, however the user might via the API (or menu option 'expand all')\n var neverAllowToExpand = skipLeafNodes && rowNode.leafGroup;\n var isHiddenOpenParent = hideOpenParents && rowNode.expanded && (!neverAllowToExpand);\n var thisRowShouldBeRendered = !isSkippedLeafNode && !isGroupSuppressedNode && !isHiddenOpenParent && !isRemovedSingleChildrenGroup && !isRemovedLowestSingleChildrenGroup;\n if (thisRowShouldBeRendered) {\n this.addRowNodeToRowsToDisplay(rowNode, result, nextRowTop, uiLevel);\n }\n // if we are pivoting, we never map below the leaf group\n if (skipLeafNodes && rowNode.leafGroup) {\n continue;\n }\n if (isParent) {\n var excludedParent = isRemovedSingleChildrenGroup || isRemovedLowestSingleChildrenGroup;\n // we traverse the group if it is expended, however we always traverse if the parent node\n // was removed (as the group will never be opened if it is not displayed, we show the children instead)\n if (rowNode.expanded || excludedParent) {\n // if the parent was excluded, then ui level is that of the parent\n var uiLevelForChildren = excludedParent ? uiLevel : uiLevel + 1;\n this.recursivelyAddToRowsToDisplay(rowNode.childrenAfterSort, result, nextRowTop, skipLeafNodes, uiLevelForChildren);\n // put a footer in if user is looking for it\n if (this.gridOptionsWrapper.isGroupIncludeFooter()) {\n this.ensureFooterNodeExists(rowNode);\n this.addRowNodeToRowsToDisplay(rowNode.sibling, result, nextRowTop, uiLevel);\n }\n }\n }\n else if (rowNode.master && rowNode.expanded) {\n var detailNode = this.createDetailNode(rowNode);\n this.addRowNodeToRowsToDisplay(detailNode, result, nextRowTop, uiLevel);\n }\n }\n };\n // duplicated method, it's also in floatingRowModel\n FlattenStage.prototype.addRowNodeToRowsToDisplay = function (rowNode, result, nextRowTop, uiLevel) {\n result.push(rowNode);\n var isGroupMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();\n rowNode.setUiLevel(isGroupMultiAutoColumn ? 0 : uiLevel);\n };\n FlattenStage.prototype.ensureFooterNodeExists = function (groupNode) {\n // only create footer node once, otherwise we have daemons and\n // the animate screws up with the daemons hanging around\n if (utils_1._.exists(groupNode.sibling)) {\n return;\n }\n var footerNode = new rowNode_1.RowNode();\n this.context.wireBean(footerNode);\n Object.keys(groupNode).forEach(function (key) {\n footerNode[key] = groupNode[key];\n });\n footerNode.footer = true;\n footerNode.rowTop = null;\n footerNode.oldRowTop = null;\n if (utils_1._.exists(footerNode.id)) {\n footerNode.id = 'rowGroupFooter_' + footerNode.id;\n }\n // get both header and footer to reference each other as siblings. this is never undone,\n // only overwritten. so if a group is expanded, then contracted, it will have a ghost\n // sibling - but that's fine, as we can ignore this if the header is contracted.\n footerNode.sibling = groupNode;\n groupNode.sibling = footerNode;\n };\n FlattenStage.prototype.createDetailNode = function (masterNode) {\n if (utils_1._.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n else {\n var detailNode = new rowNode_1.RowNode();\n this.context.wireBean(detailNode);\n detailNode.detail = true;\n detailNode.selectable = false;\n // flower was renamed to 'detail', but keeping for backwards compatibility\n detailNode.flower = detailNode.detail;\n detailNode.parent = masterNode;\n if (utils_1._.exists(masterNode.id)) {\n detailNode.id = 'detail_' + masterNode.id;\n }\n detailNode.data = masterNode.data;\n detailNode.level = masterNode.level + 1;\n masterNode.detailNode = detailNode;\n masterNode.childFlower = masterNode.detailNode; // for backwards compatibility\n return detailNode;\n }\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], FlattenStage.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('selectionController'),\n __metadata(\"design:type\", selectionController_1.SelectionController)\n ], FlattenStage.prototype, \"selectionController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], FlattenStage.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], FlattenStage.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], FlattenStage.prototype, \"columnController\", void 0);\n FlattenStage = __decorate([\n context_1.Bean('flattenStage')\n ], FlattenStage);\n return FlattenStage;\n}());\nexports.FlattenStage = FlattenStage;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar ColumnAnimationService = /** @class */ (function () {\n function ColumnAnimationService() {\n this.executeNextFuncs = [];\n this.executeLaterFuncs = [];\n this.active = false;\n this.animationThreadCount = 0;\n }\n ColumnAnimationService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n ColumnAnimationService.prototype.isActive = function () {\n return this.active;\n };\n ColumnAnimationService.prototype.start = function () {\n if (this.active) {\n return;\n }\n if (this.gridOptionsWrapper.isSuppressColumnMoveAnimation()) {\n return;\n }\n // if doing RTL, we don't animate open / close as due to how the pixels are inverted,\n // the animation moves all the row the the right rather than to the left (ie it's the static\n // columns that actually get their coordinates updated)\n if (this.gridOptionsWrapper.isEnableRtl()) {\n return;\n }\n this.ensureAnimationCssClassPresent();\n this.active = true;\n };\n ColumnAnimationService.prototype.finish = function () {\n if (!this.active) {\n return;\n }\n this.flush();\n this.active = false;\n };\n ColumnAnimationService.prototype.executeNextVMTurn = function (func) {\n if (this.active) {\n this.executeNextFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.executeLaterVMTurn = function (func) {\n if (this.active) {\n this.executeLaterFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.ensureAnimationCssClassPresent = function () {\n var _this = this;\n // up the count, so we can tell if someone else has updated the count\n // by the time the 'wait' func executes\n this.animationThreadCount++;\n var animationThreadCountCopy = this.animationThreadCount;\n this.gridPanel.setColumnMovingCss(true);\n this.executeLaterFuncs.push(function () {\n // only remove the class if this thread was the last one to update it\n if (_this.animationThreadCount === animationThreadCountCopy) {\n _this.gridPanel.setColumnMovingCss(false);\n }\n });\n };\n ColumnAnimationService.prototype.flush = function () {\n var nowFuncs = this.executeNextFuncs;\n this.executeNextFuncs = [];\n var waitFuncs = this.executeLaterFuncs;\n this.executeLaterFuncs = [];\n if (nowFuncs.length === 0 && waitFuncs.length === 0) {\n return;\n }\n window.setTimeout(function () { return nowFuncs.forEach(function (func) { return func(); }); }, 0);\n window.setTimeout(function () { return waitFuncs.forEach(function (func) { return func(); }); }, 300);\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ColumnAnimationService.prototype, \"gridOptionsWrapper\", void 0);\n ColumnAnimationService = __decorate([\n context_1.Bean('columnAnimationService')\n ], ColumnAnimationService);\n return ColumnAnimationService;\n}());\nexports.ColumnAnimationService = ColumnAnimationService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar eventService_1 = require(\"../eventService\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar animateSlideCellRenderer_1 = require(\"./cellRenderers/animateSlideCellRenderer\");\nvar animateShowChangeCellRenderer_1 = require(\"./cellRenderers/animateShowChangeCellRenderer\");\nvar groupCellRenderer_1 = require(\"./cellRenderers/groupCellRenderer\");\nvar utils_1 = require(\"../utils\");\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRendererMap = {};\n }\n CellRendererFactory_1 = CellRendererFactory;\n CellRendererFactory.prototype.init = function () {\n this.cellRendererMap[CellRendererFactory_1.ANIMATE_SLIDE] = animateSlideCellRenderer_1.AnimateSlideCellRenderer;\n this.cellRendererMap[CellRendererFactory_1.ANIMATE_SHOW_CHANGE] = animateShowChangeCellRenderer_1.AnimateShowChangeCellRenderer;\n this.cellRendererMap[CellRendererFactory_1.GROUP] = groupCellRenderer_1.GroupCellRenderer;\n // this.registerRenderersFromGridOptions();\n };\n // private registerRenderersFromGridOptions(): void {\n // let userProvidedCellRenderers = this.gridOptionsWrapper.getCellRenderers();\n // _.iterateObject(userProvidedCellRenderers, (key: string, cellRenderer: {new(): ICellRenderer} | ICellRendererFunc)=> {\n // this.addCellRenderer(key, cellRenderer);\n // });\n // }\n CellRendererFactory.prototype.addCellRenderer = function (key, cellRenderer) {\n this.cellRendererMap[key] = cellRenderer;\n };\n CellRendererFactory.prototype.getCellRenderer = function (key) {\n var result = this.cellRendererMap[key];\n if (utils_1._.missing(result)) {\n console.warn('ag-Grid: unable to find cellRenderer for key ' + key);\n return null;\n }\n return result;\n };\n var CellRendererFactory_1;\n CellRendererFactory.ANIMATE_SLIDE = 'animateSlide';\n CellRendererFactory.ANIMATE_SHOW_CHANGE = 'animateShowChange';\n CellRendererFactory.GROUP = 'group';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], CellRendererFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('expressionService'),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], CellRendererFactory.prototype, \"expressionService\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], CellRendererFactory.prototype, \"eventService\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], CellRendererFactory.prototype, \"init\", null);\n CellRendererFactory = CellRendererFactory_1 = __decorate([\n context_1.Bean('cellRendererFactory')\n ], CellRendererFactory);\n return CellRendererFactory;\n}());\nexports.CellRendererFactory = CellRendererFactory;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar column_1 = require(\"../entities/column\");\nvar context_1 = require(\"../context/context\");\nvar headerContainer_1 = require(\"./headerContainer\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar component_1 = require(\"../widgets/component\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar gridApi_1 = require(\"../gridApi\");\nvar autoWidthCalculator_1 = require(\"../rendering/autoWidthCalculator\");\nvar constants_1 = require(\"../constants\");\nvar utils_1 = require(\"../utils\");\nvar HeaderRootComp = /** @class */ (function (_super) {\n __extends(HeaderRootComp, _super);\n function HeaderRootComp() {\n return _super.call(this, HeaderRootComp.TEMPLATE) || this;\n }\n HeaderRootComp.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.childContainers.forEach(function (c) { return c.registerGridComp(gridPanel); });\n };\n HeaderRootComp.prototype.postConstruct = function () {\n var _this = this;\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n this.gridApi.registerHeaderRootComp(this);\n this.autoWidthCalculator.registerHeaderRootComp(this);\n var centerContainer = new headerContainer_1.HeaderContainer(this.eHeaderContainer, this.eHeaderViewport, null);\n var pinnedLeftContainer = new headerContainer_1.HeaderContainer(this.ePinnedLeftHeader, null, column_1.Column.PINNED_LEFT);\n var pinnedRightContainer = new headerContainer_1.HeaderContainer(this.ePinnedRightHeader, null, column_1.Column.PINNED_RIGHT);\n this.childContainers = [centerContainer, pinnedLeftContainer, pinnedRightContainer];\n this.childContainers.forEach(function (container) { return _this.getContext().wireBean(container); });\n // shotgun way to get labels to change, eg from sum(amount) to avg(amount)\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshHeader.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n // for setting ag-pivot-on / ag-pivot-off CSS classes\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n this.onPivotModeChanged();\n this.addPreventHeaderScroll();\n if (this.columnController.isReady()) {\n this.refreshHeader();\n }\n };\n HeaderRootComp.prototype.onDomLayoutChanged = function () {\n var newValue = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n if (this.printLayout !== newValue) {\n this.printLayout = newValue;\n this.refreshHeader();\n }\n };\n HeaderRootComp.prototype.setHorizontalScroll = function (offset) {\n this.eHeaderContainer.style.transform = \"translateX(\" + offset + \"px)\";\n };\n HeaderRootComp.prototype.forEachHeaderElement = function (callback) {\n this.childContainers.forEach(function (childContainer) { return childContainer.forEachHeaderElement(callback); });\n };\n HeaderRootComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.childContainers.forEach(function (container) { return container.destroy(); });\n };\n HeaderRootComp.prototype.refreshHeader = function () {\n this.childContainers.forEach(function (container) { return container.refresh(); });\n };\n HeaderRootComp.prototype.onPivotModeChanged = function () {\n var pivotMode = this.columnController.isPivotMode();\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-pivot-on', pivotMode);\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-pivot-off', !pivotMode);\n };\n HeaderRootComp.prototype.setHeight = function (height) {\n var px = height + \"px\";\n this.getGui().style.height = px;\n this.getGui().style.minHeight = px;\n };\n // if the user is in floating filter and hits tab a few times, the header can\n // end up scrolling to show items off the screen, leaving the grid and header\n // and the grid columns no longer in sync.\n HeaderRootComp.prototype.addPreventHeaderScroll = function () {\n var _this = this;\n this.addDestroyableEventListener(this.eHeaderViewport, 'scroll', function () {\n // if the header scrolls, the header will be out of sync. so we reset the\n // header scroll, and then scroll the body, which will in turn set the offset\n // on the header, giving the impression that the header scrolled as expected.\n var scrollLeft = _this.eHeaderViewport.scrollLeft;\n if (scrollLeft !== 0) {\n _this.gridPanel.scrollHorizontally(scrollLeft);\n _this.eHeaderViewport.scrollLeft = 0;\n }\n });\n };\n HeaderRootComp.prototype.setHeaderContainerWidth = function (width) {\n this.eHeaderContainer.style.width = width + \"px\";\n };\n HeaderRootComp.prototype.setLeftVisible = function (visible) {\n utils_1._.setVisible(this.ePinnedLeftHeader, visible);\n };\n HeaderRootComp.prototype.setRightVisible = function (visible) {\n utils_1._.setVisible(this.ePinnedRightHeader, visible);\n };\n HeaderRootComp.TEMPLATE = \"
\\n
\\n
\\n
\\n
\\n
\\n
\";\n __decorate([\n componentAnnotations_1.RefSelector('ePinnedLeftHeader'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderRootComp.prototype, \"ePinnedLeftHeader\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('ePinnedRightHeader'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderRootComp.prototype, \"ePinnedRightHeader\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eHeaderContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderRootComp.prototype, \"eHeaderContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eHeaderViewport'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderRootComp.prototype, \"eHeaderViewport\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], HeaderRootComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], HeaderRootComp.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], HeaderRootComp.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], HeaderRootComp.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('autoWidthCalculator'),\n __metadata(\"design:type\", autoWidthCalculator_1.AutoWidthCalculator)\n ], HeaderRootComp.prototype, \"autoWidthCalculator\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], HeaderRootComp.prototype, \"postConstruct\", null);\n return HeaderRootComp;\n}(component_1.Component));\nexports.HeaderRootComp = HeaderRootComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar beanStub_1 = require(\"../context/beanStub\");\nvar context_1 = require(\"../context/context\");\nvar columnHoverService_1 = require(\"../rendering/columnHoverService\");\nvar HoverFeature = /** @class */ (function (_super) {\n __extends(HoverFeature, _super);\n function HoverFeature(columns, element) {\n var _this = _super.call(this) || this;\n _this.columns = columns;\n _this.addMouseHoverListeners(element);\n return _this;\n }\n HoverFeature.prototype.addMouseHoverListeners = function (element) {\n this.addDestroyableEventListener(element, 'mouseout', this.onMouseOut.bind(this));\n this.addDestroyableEventListener(element, 'mouseover', this.onMouseOver.bind(this));\n };\n HoverFeature.prototype.onMouseOut = function () {\n this.columnHoverService.clearMouseOver();\n };\n HoverFeature.prototype.onMouseOver = function () {\n this.columnHoverService.setMouseOver(this.columns);\n };\n __decorate([\n context_1.Autowired('columnHoverService'),\n __metadata(\"design:type\", columnHoverService_1.ColumnHoverService)\n ], HoverFeature.prototype, \"columnHoverService\", void 0);\n return HoverFeature;\n}(beanStub_1.BeanStub));\nexports.HoverFeature = HoverFeature;\n"],"sourceRoot":""}