{"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:///./src/api/staff.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/@vue/babel-preset-app/node_modules/@babel/runtime/helpers/builtin/es6/arrayWithoutHoles.js","webpack:///./node_modules/@vue/babel-preset-app/node_modules/@babel/runtime/helpers/builtin/es6/iterableToArray.js","webpack:///./node_modules/@vue/babel-preset-app/node_modules/@babel/runtime/helpers/builtin/es6/nonIterableSpread.js","webpack:///./node_modules/@vue/babel-preset-app/node_modules/@babel/runtime/helpers/builtin/es6/toConsumableArray.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","_typeof","obj","Symbol","iterator","_defineProperty","enumerable","configurable","writable","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","arr2","iter","from","TypeError","reflectionIsSupported","defineMetadata","getOwnMetadataKeys","copyReflectionMetadata","to","forwardMetadata","metaKeys","metaKey","getOwnMetadata","fakeArray","hasProto","createDecorator","factory","Ctor","__decorators__","isPrimitive","collectDataFromConstructor","vm","originalInit","_init","$options","get","set","plainData","$internalHooks","componentFactory","_componentTag","proto","mixins","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","_a","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","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","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","ENDPOINTS","GET_PRODUCTS","GET_PAYMETHODS","CREATE_SETTINGGROUP","UPDATE_SETTINGGROUP","REMOVE_SETTINGGROUP","ACTIVE_SETTINGGROUP","GET_STATS","getMyProducts","payload","Http","getPaymethods","createSettingGroup","post","updateSettingGroup","removeSettingGroup","activeSettingGroup","getStats","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","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-24694ea5.2b0c7aa2.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","import Http from \"../services/Providers/Http\";\r\n\r\nconst ENDPOINTS = {\r\n GET_PRODUCTS: \"/api/staff/getProducts\",\r\n GET_PAYMETHODS: \"/api/staff/getPaymethods\",\r\n CREATE_SETTINGGROUP: \"/api/staff/createSettingGroup\",\r\n UPDATE_SETTINGGROUP: \"/api/staff/updateSettingGroup\",\r\n REMOVE_SETTINGGROUP: \"/api/staff/removeSettingGroup\",\r\n ACTIVE_SETTINGGROUP: \"/api/staff/activeSettingGroup\",\r\n GET_STATS: \"/api/staff/stats\",\r\n};\r\n\r\nexport default {\r\n getMyProducts: (payload, params) => {\r\n return Http.get(ENDPOINTS.GET_PRODUCTS, params, null, payload);\r\n },\r\n getPaymethods: (payload, params) => {\r\n return Http.get(ENDPOINTS.GET_PAYMETHODS, params, null, payload);\r\n },\r\n createSettingGroup: (body, payload, params) => {\r\n return Http.post(ENDPOINTS.CREATE_SETTINGGROUP, body, params, null, payload);\r\n },\r\n updateSettingGroup: (body, payload, params) => {\r\n return Http.post(ENDPOINTS.UPDATE_SETTINGGROUP, body, params, null, payload);\r\n },\r\n removeSettingGroup: (body, payload, params) => {\r\n return Http.post(ENDPOINTS.REMOVE_SETTINGGROUP, body, params, null, payload);\r\n },\r\n activeSettingGroup: (body, payload, params) => {\r\n return Http.post(ENDPOINTS.ACTIVE_SETTINGGROUP, body, params, null, payload);\r\n },\r\n getStats: (payload, params) => {\r\n return Http.get(ENDPOINTS.GET_STATS, params, null, payload);\r\n },\r\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","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\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":""}