{"version":3,"sources":["../node_modules/@ag-grid-community/core/dist/es6/main.js","../node_modules/@ag-grid-community/core/dist/es6/gridOptionsWrapper.js","../node_modules/@ag-grid-community/core/dist/es6/logger.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/headerGroup/headerGroupWrapperComp.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/headerRowComp.js","../node_modules/@ag-grid-community/core/dist/es6/interfaces/iRangeController.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/cssClassApplier.js","../node_modules/@ag-grid-community/core/dist/es6/gridPanel/navigationService.js","../node_modules/@ag-grid-community/core/dist/es6/grid.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/headerContainer.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/hoverFeature.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/headerRootComp.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/bodyDropTarget.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/moveColumnController.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/bodyDropPivotTarget.js","../node_modules/@ag-grid-community/core/dist/es6/gridApi.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/horizontalResizeService.js","../node_modules/@ag-grid-community/core/dist/es6/gridCore.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/standardMenu.js","../node_modules/@ag-grid-community/core/dist/es6/gridPanel/mouseEventService.js","../node_modules/@ag-grid-community/core/dist/es6/gridPanel/scrollVisibleService.js","../node_modules/@ag-grid-community/core/dist/es6/gridPanel/rowDragFeature.js","../node_modules/@ag-grid-community/core/dist/es6/gridPanel/gridPanel.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/header/selectAllFeature.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/header/headerWrapperComp.js","../node_modules/@ag-grid-community/core/dist/es6/layout/tabbedLayout.js","../node_modules/@ag-grid-community/core/dist/es6/functions.js","../node_modules/@ag-grid-community/core/dist/es6/interfaces/iChartOptions.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/header/headerComp.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/headerGroup/headerGroupComp.js"],"names":["globalObj","global","HTMLElement","HTMLButtonElement","HTMLSelectElement","HTMLInputElement","Node","MouseEvent","__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__param","paramIndex","decorator","__spreadArrays","s","il","Array","k","a","j","jl","isTrue","value","GridOptionsWrapper","this","propertyEventService","domDataKey","Math","random","toString","layoutElements","GridOptionsWrapper_1","prototype","agWire","gridApi","columnApi","gridOptions","api","checkForDeprecated","checkForViolations","destroy","init","suppressPropertyNamesCheck","checkGridOptionsProperties","checkColumnDefProperties","async","useAsyncEvents","eventService","addGlobalListener","globalEventHandler","bind","isGroupSelectsChildren","isSuppressParentsInRowNodes","console","warn","isRowSelectionMulti","isRowModelServerSide","isGroupRemoveSingleChildren","isGroupHideOpenParents","isEnableRangeSelection","assertRegistered","RangeSelectionModule","isEnableRangeHandle","isEnableFillHandle","addEventListener","PROP_DOM_LAYOUT","updateLayoutClasses","_this","columnDefs","forEach","colDef","userProperties","getOwnPropertyNames","validProperties","ALL_PROPERTIES","FRAMEWORK_PROPERTIES","checkProperties","values","map","event","getCallbackForEvent","validPropertiesAndExceptions","containerName","docsUrl","invalidProperties","fuzzyCheckStrings","iterateObject","slice","join","keys","getDomData","element","domData","undefined","setDomData","missing","isRowSelection","rowSelection","isRowDeselection","rowDeselection","isRowMultiSelectWithClick","rowMultiSelectWithClick","getContext","context","isPivotMode","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","isFullRowEdit","editType","isSuppressFocusAfterRefresh","suppressFocusAfterRefresh","isSuppressBrowserResizeObserver","suppressBrowserResizeObserver","isSuppressMaintainUnsortedOrder","suppressMaintainUnsortedOrder","isSuppressClearOnFillReduction","suppressClearOnFillReduction","isShowToolPanel","sideBar","isArray","getSideBar","toolPanels","isSuppressTouch","suppressTouch","isSuppressRowTransform","suppressRowTransform","isSuppressSetColumnStateEvents","suppressSetColumnStateEvents","isAllowDragFromColumnsToolPanel","allowDragFromColumnsToolPanel","suppressAsyncEvents","isEnableCellChangeFlash","enableCellChangeFlash","result","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_NORMAL","DOM_LAYOUT_PRINT","DOM_LAYOUT_AUTO_HEIGHT","indexOf","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","isUndoRedoCellEditing","undoRedoCellEditing","getUndoRedoCellEditingLimit","undoRedoCellEditingLimit","getRowStyle","rowStyle","getRowClass","rowClass","getRowStyleFunc","getRowClassFunc","rowClassRules","getCreateChartContainerFunc","createChartContainer","getPopupParent","popupParent","getBlockLoadDebounceMillis","blockLoadDebounceMillis","getPostProcessPopupFunc","postProcessPopup","getDoesDataFlowerFunc","doesDataFlower","getPaginationNumberFormatterFunc","paginationNumberFormatter","getChildCountFunc","getChildCount","getDefaultGroupSortComparator","defaultGroupSortComparator","getIsFullWidthCellFunc","isFullWidthCell","getFullWidthCellRendererParams","fullWidthCellRendererParams","isEmbedFullWidthRows","embedFullWidthRows","deprecatedEmbedFullWidthRows","getSuppressKeyboardEventFunc","suppressKeyboardEvent","getBusinessKeyForNodeFunc","getBusinessKeyForNode","getApi","getColumnApi","isDeltaRowDataMode","deltaRowDataMode","isDeltaColumnMode","deltaColumnMode","isEnsureDomOrder","ensureDomOrder","isEnableCharts","enableCharts","GridChartsModule","getColResizeDefault","colResizeDefault","isSingleClickEdit","singleClickEdit","isSuppressClickEdit","suppressClickEdit","isStopEditingWhenGridLosesFocus","stopEditingWhenGridLosesFocus","getGroupDefaultExpanded","groupDefaultExpanded","getMaxConcurrentDatasourceRequests","maxConcurrentDatasourceRequests","getMaxBlocksInCache","maxBlocksInCache","getCacheOverflowSize","cacheOverflowSize","getPaginationPageSize","paginationPageSize","isPaginateChildRows","isGroupSuppressRow","paginateChildRows","getCacheBlockSize","cacheBlockSize","getInfiniteInitialRowCount","infiniteInitialRowCount","isPurgeClosedRowNodes","purgeClosedRowNodes","isSuppressPaginationPanel","suppressPaginationPanel","getRowData","rowData","isGroupUseEntireRow","groupUseEntireRow","isEnableRtl","enableRtl","getAutoGroupColumnDef","autoGroupColumnDef","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","isPreventDefaultOnContextMenu","preventDefaultOnContextMenu","isSuppressPreventDefaultOnMouseWheel","suppressPreventDefaultOnMouseWheel","isSuppressColumnVirtualisation","suppressColumnVirtualisation","isSuppressContextMenu","suppressContextMenu","isAllowContextMenuWithControlKey","allowContextMenuWithControlKey","isSuppressCopyRowsToClipboard","suppressCopyRowsToClipboard","isCopyHeadersToClipboard","copyHeadersToClipboard","isSuppressClipboardPaste","suppressClipboardPaste","isPagination","pagination","isSuppressEnterpriseResetOnNewColumns","suppressEnterpriseResetOnNewColumns","getProcessDataFromClipboardFunc","processDataFromClipboard","getBatchUpdateWaitMillis","exists","batchUpdateWaitMillis","BATCH_WAIT_MILLIS","isSuppressMovableColumns","suppressMovableColumns","isAnimateRows","animateRows","isSuppressColumnMoveAnimation","suppressColumnMoveAnimation","isSuppressAggFuncInHeader","suppressAggFuncInHeader","isSuppressAggAtRootLevel","suppressAggAtRootLevel","isRegistered","enableRangeSelection","enableRangeHandle","enableFillHandle","getFillOperation","fillOperation","isSuppressMultiRangeSelection","suppressMultiRangeSelection","isPaginationAutoPageSize","paginationAutoPageSize","isRememberGroupStateWhenNewData","rememberGroupStateWhenNewData","getIcons","icons","getAggFuncs","aggFuncs","getSortingOrder","sortingOrder","getAlignedGrids","alignedGrids","isMasterDetail","masterDetail","MasterDetailModule","isKeepDetailRows","keepDetailRows","getKeepDetailRowsCount","keepDetailRowsCount","getIsRowMasterFunc","isRowMaster","getIsRowSelectableFunc","isRowSelectable","getGroupRowRendererParams","groupRowRendererParams","getOverlayLoadingTemplate","overlayLoadingTemplate","getOverlayNoRowsTemplate","overlayNoRowsTemplate","isSuppressAutoSize","suppressAutoSize","isEnableCellTextSelection","enableCellTextSelection","suppressParentsInRowNodes","isFunctionsReadOnly","functionsReadOnly","isFloatingFilter","floatingFilter","isEnableCellTextSelect","isEnableOldSetFilterModel","enableOldSetFilterModel","getDefaultColDef","defaultColDef","getDefaultColGroupDef","defaultColGroupDef","getDefaultExportParams","defaultExportParams","isSuppressCsvExport","suppressCsvExport","isAllowShowChangeAfterFilter","allowShowChangeAfterFilter","isSuppressExcelExport","suppressExcelExport","isSuppressMakeColumnVisibleAfterUnGroup","suppressMakeColumnVisibleAfterUnGroup","getNodeChildDetailsFunc","getNodeChildDetails","getDataPathFunc","getDataPath","getIsServerSideGroupFunc","isServerSideGroup","getServerSideGroupKeyFunc","getServerSideGroupKey","getGroupRowAggNodesFunc","groupRowAggNodes","getContextMenuItemsFunc","getContextMenuItems","getMainMenuItemsFunc","getMainMenuItems","getChartToolbarItemsFunc","getChartToolbarItems","getRowNodeIdFunc","getRowNodeId","getNavigateToNextCellFunc","navigateToNextCell","getTabToNextCellFunc","tabToNextCell","treeData","RowGroupingModule","isValueCache","valueCache","isValueCacheNeverExpires","valueCacheNeverExpires","isDeltaSort","deltaSort","isAggregateOnlyChangedColumns","aggregateOnlyChangedColumns","getProcessSecondaryColDefFunc","processSecondaryColDef","getProcessSecondaryColGroupDefFunc","processSecondaryColGroupDef","getSendToClipboardFunc","sendToClipboard","getProcessRowPostCreateFunc","processRowPostCreate","getProcessCellForClipboardFunc","processCellForClipboard","getProcessHeaderForClipboardFunc","processHeaderForClipboard","getProcessCellFromClipboardFunc","processCellFromClipboard","getViewportRowModelPageSize","viewportRowModelPageSize","defaultValue","getViewportRowModelBufferSize","viewportRowModelBufferSize","isServerSideSortingAlwaysResets","serverSideSortingAlwaysResets","getPostSortFunc","postSort","getProcessChartOptionsFunc","processChartOptions","getClipboardDeliminator","clipboardDeliminator","setProperty","gridOptionsNoType","previousValue","event_1","type","currentValue","dispatchEvent","addLayoutElement","push","domLayoutAutoHeight","domLayoutPrint","domLayoutNormal","e","addOrRemoveCssClass","listener","checkEventDeprecation","eventName","removeEventListener","isSkipHeaderOnAutoSize","skipHeaderOnAutoSize","getAutoSizePadding","autoSizePadding","getHeaderHeight","headerHeight","specialForNewMaterial","getFloatingFiltersHeight","floatingFiltersHeight","getGroupHeaderHeight","groupHeaderHeight","getPivotHeaderHeight","pivotHeaderHeight","getPivotGroupHeaderHeight","pivotGroupHeaderHeight","isExternalFilterPresent","doesExternalFilterPass","node","getDocument","document","getMinColWidth","minColWidth","MIN_COL_WIDTH","getMaxColWidth","maxColWidth","getColWidth","colWidth","getRowBuffer","rowBuffer","ROW_BUFFER_SIZE","getRowBufferInPixels","getRowHeightAsNumber","getScrollbarWidth","scrollWidth","useGridOptions","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","parse","sideBarDef","columnsDef","filter","it","id","mergeDeep","componentParams","enableStatusBar","statusBar","components","component","alwaysShowStatusBar","enableServerSideSorting","enableSorting","sortable","enableFilter","enableServerSideFilter","enableColResize","resizable","treeDataViolations","getLocaleTextFunc","localeTextFunc","that","localeText","callbackMethodName","rowHeight","getDefaultRowHeight","isNumeric","getRowHeightForNode","rowNode","allowEstimate","getRowHeight","height","estimated","params","data","detail","detailRowHeight","defaultRowHeight","minRowHeight","min","columnController","isAutoRowHeightActive","autoHeight","autoHeightCalculator","getPreferredHeightForRow","max","isDynamicRowHeight","getVirtualItemHeight","useNativeCheckboxes","environment","chartMenuPanelWidth","isNaN","sassVariableName","theme","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","LoggerFactory","setBeans","gridOptionsWrapper","logging","create","name","Logger","isLogging","isLoggingFunc","log","message","__extends","extendStatics","b","setPrototypeOf","__proto__","p","hasOwnProperty","__","constructor","_super","HeaderGroupWrapperComp","columnGroup","dragSourceDropTarget","pinned","call","TEMPLATE","childColumnsDestroyFuncs","postConstruct","addHeaderClassesFromColDef","getComponentHolder","getGui","displayName","getDisplayNameForColumnGroup","appendHeaderGroupComp","setupResize","addClasses","setupWidth","addAttributes","setupMovingCss","setupTooltip","addFeature","getOriginalColumnGroup","getLeafColumns","setLeftFeature","beans","addDestroyFunc","col","addDestroyableEventListener","EVENT_MOVING_CHANGED","onColumnMovingChanged","getColumn","getColGroupDef","getTooltipText","colGroupDef","headerTooltip","tooltipText","setAttribute","tooltipManager","registerTooltip","isMoving","getUniqueId","setExpanded","expanded","setColumnGroupOpened","leafCols","getParent","headerName","getDisplayNameForColumn","callback","afterHeaderCompCreated","userComponentFactory","newHeaderGroupComponent","then","headerGroupComp","appendChild","setupMove","style","isPadding","addCssClass","eHeaderGroup","isSuppressMoving","allLeafColumns","dragSource","HeaderCell","eElement","dragItemName","getDragItem","getDragItemForGroup","onDragStarted","setMoving","onDragStopped","dragAndDropService","addDragSource","removeDragSource","allColumnsOriginalOrder","visibleState","column","getId","isVisible","allColumnsCurrentOrder","getAllDisplayedColumns","removeFromArray","columns","childSuppressesMoving","getColDef","suppressMovable","lockPosition","addListenersToChildrenColumns","EVENT_DISPLAYED_CHILDREN_CHANGED","onDisplayedChildrenChanged","onWidthChanged","destroyListenersOnChildrenColumns","widthChangedListener","EVENT_WIDTH_CHANGED","EVENT_VISIBLE_CHANGED","func","width","getActualWidth","eHeaderCellResize","getRefElement","isResizable","finishedWithResizeFunc","horizontalResizeService","addResizeBar","eResizeBar","onResizeStart","onResizing","onResizeEnd","skipHeaderOnAutoSize_1","getDisplayedLeafColumns","getColId","autoSizeColumns","removeFromParent","shiftKey","resizeCols","resizeStartWidth","resizeRatios","takeFromGroup","getDisplayedGroupAfter","takeFromLeafCols","resizeTakeFromCols","resizeTakeFromStartWidth","resizeTakeFromRatios","finished","resizeAmount","resizeSets","resizeAmountNormalised","normaliseDragChange","ratios","resizeColumnSets","removeCssClass","dragChange","PINNED_LEFT","PINNED_RIGHT","HeaderRowType","HeaderRowComp","dept","dropTarget","headerComps","forEachHeaderElement","idsOfAllChildren","removeAndDestroyChildComponents","idsToDestroy","childHeaderComp","removeChild","onRowHeightChanged","groupHeight","headerRowCount","getHeaderRowCount","sizes","numberOfFloating","numberOfGroups","top","onVirtualColumnsChanged","setWidth","EVENT_VIRTUAL_COLUMNS_CHANGED","EVENT_DISPLAYED_COLUMNS_CHANGED","onDisplayedColumnsChanged","EVENT_COLUMN_RESIZED","onColumnResized","EVENT_GRID_COLUMNS_CHANGED","onGridColumnsChanged","getWidthForRow","getContainerWidth","removeAndDestroyAllChildComponents","getItemsAtDepth","result_1","items","getVirtualHeaderGroupRow","FLOATING_FILTER","concat","currentChildIds","correctChildIds","child","isEmptyGroup","headerComp","eHeaderCompGui","idOfChild","eParentContainer","createHeaderComp","correctChildOrder","setDomChildOrder","columnGroupChild","COLUMN","COLUMN_GROUP","wireBean","CellRangeType","CssClassApplier","abstractColDef","eHeaderCell","addColumnClassesFromCollDef","headerClass","addToolPanelClassesFromColDef","toolPanelClass","classesOrFunc","classToUse","cssClassItem","NavigationService","timeLastPageEventProcessed","registerGridComp","gridPanel","handlePageScrollingKey","which","keyCode","alt","altKey","ctrl","ctrlKey","currentCell","mouseEventService","getCellPositionForEvent","processed","KEY_PAGE_HOME","KEY_PAGE_END","onHomeOrEndKey","KEY_LEFT","KEY_RIGHT","onCtrlLeftOrRight","KEY_UP","KEY_DOWN","onCtrlUpOrDown","KEY_PAGE_DOWN","onPageDown","KEY_PAGE_UP","onPageUp","preventDefault","isTimeSinceLastPageEventToRecent","Date","getTime","setTimeLastPageEventProcessed","gridCell","scrollPosition","getVScrollPosition","pixelsInOnePage","bottom","isHorizontalScrollShowing","pagingPixelOffset","paginationProxy","getPixelOffset","currentPageBottomPixel","scrollIndex","getRowIndexAtPixel","nextCellPixel","getRow","rowIndex","rowTop","focusIndex","pageLastRow","getPageLastRow","navigateTo","currentPageTopPixel","currentRowNode","firstRow","getPageFirstRow","scrollType","scrollColumn","focusColumn","ensureColumnVisible","ensureIndexVisible","animationFrameService","flushAllFrames","focusedCellController","setFocusedCell","rangeController","cellPosition","rowPinned","setRangeToCell","rowIndexToScrollTo","leftKey","allColumns","columnToSelect","last","homeKey","Grid","eGridDiv","registeredModules","getRegisteredModules","beanClasses","createBeansList","agStackComponents","createAgStackComponentsList","providedBeanInstances","createProvidedBeans","contextParams","logger","contextLogger","registerModuleUserComponents","gridCore","setColumnsAndData","dispatchGridReadyEvent","isEnterprise","EnterpriseCoreModule","error","passedViaConstructor","modules","registered","allModules","mapNames","addModule","module","moduleName","register","addIndividualModule","dependantModules","userComponentRegistry","getBean","extractModuleEntity","userComponents","compMeta","registerDefaultComponent","componentName","componentClass","frameworkOverrides","seed","$scope","$compile","quickFilterOnScope","globalEventListener","assign","moduleAgStackComps","rowModelClass","getRowModelClass","moduleBeans","apply","beansNoDuplicates","bean","moduleEntities","extractor","setColumnDefs","start","readyEvent","EVENT_GRID_READY","rowModelClasses","rowModels","HeaderContainer","eContainer","eViewport","headerRowComps","setupDragAndDrop","headerRowComp","EVENT_COLUMN_VALUE_CHANGED","onColumnValueChanged","EVENT_COLUMN_ROW_GROUP_CHANGED","onColumnRowGroupChanged","EVENT_SCROLL_VISIBILITY_CHANGED","onScrollVisibilityChanged","setWidthOfPinnedContainer","pinningLeft","pinningRight","controller","isRtl","scrollVisibleService","isVerticalScrollShowing","setFixedWidth","removeHeaderRowComps","getRowComps","removeAndCreateAllRowComps","createHeaderRowComps","refresh","gridComp","dropContainer","bodyDropTarget","clearElement","rowCount","HoverFeature","addMouseHoverListeners","onMouseOut","onMouseOver","columnHoverService","clearMouseOver","setMouseOver","HeaderRootComp","childContainers","printLayout","registerHeaderRootComp","autoWidthCalculator","centerContainer","eHeaderContainer","eHeaderViewport","pinnedLeftContainer","ePinnedLeftHeader","pinnedRightContainer","ePinnedRightHeader","container","refreshHeader","onDomLayoutChanged","EVENT_COLUMN_PIVOT_MODE_CHANGED","onPivotModeChanged","addPreventHeaderScroll","isReady","newValue","setHorizontalScroll","offset","transform","childContainer","setHeight","px","minHeight","scrollLeft","scrollHorizontally","setHeaderContainerWidth","setLeftVisible","visible","setDisplayed","setRightVisible","DropType","BodyDropTarget","dropListeners","moveColumnController","eSecondaryContainers","getDropTargetLeftContainers","getDropTargetRightContainers","getDropTargetBodyContainers","isInterestedIn","ToolPanel","getSecondaryContainers","getContainer","bodyDropPivotTarget","ColumnMove","Pivot","addDropTarget","getIconName","currentDropListener","getDropType","draggingEvent","onDragEnter","dropType","onDragLeave","onDragging","onDragStop","MoveColumnController","needToMoveLeft","needToMoveRight","loggerFactory","ICON_PINNED","ICON_MOVE","dragItem","setColumnsVisible","visibleState_1","visibleColumns","setColumnsPinned","fromNudge","ensureIntervalCleared","source","allowedCols","lockVisible","lockPinned","normaliseX","x","clientWidth","getCenterViewportScrollLeft","checkCenterForScrolling","xAdjustedForScroll","firstVisiblePixel","lastVisiblePixel","getCenterWidth","ensureIntervalStarted","fromEnter","lastDraggingEvent","hDirection","mouseXNormalised","hDirectionNormalised","normaliseDirection","dragSourceType","columnsToMove","getPinned","attemptMoveColumns","Left","Right","calculateOldIndex","movingCols","gridCols","getAllGridColumns","indexes","sortNumerically","firstIndex","allMovingColumns","mouseX","draggingLeft","draggingRight","validMoves","calculateValidMoves","oldIndex","firstValidMove","constrainDirection","move","doesMovePassRules","moveColumns","allDisplayedCols","getDisplayedColumns","allGridCols","movingDisplayedCols","includes","otherDisplayedCols","otherGridCols","displayIndex","availableWidth","widthOfMovingDisplayedCols_1","leftColumn","pointer","lastIndex","displacedCol","isColumnHidden","displayedColumns","movingIntervalId","intervalCount","failedMoveAttempts","window","setInterval","moveInterval","setGhostIcon","ICON_LEFT","ICON_RIGHT","clearInterval","pixelsToMove","pixelsMoved","columnsThatCanPin","pinType","nudge","BodyDropPivotTarget","columnsToAggregate","columnsToGroup","columnsToPivot","clearColumnsList","isPrimary","isAnyFunctionActive","isAllowValue","isAllowRowGroup","addValueColumns","addRowGroupColumns","addPivotColumns","GridApi","detailGridInfoMap","registerGridCore","headerRootComp","rowModel","getType","clientSideRowModel","infiniteRowModel","serverSideRowModel","__getAlignedGridService","alignedGridsService","addDetailGridInfo","gridInfo","removeDetailGridInfo","getDetailGridInfo","forEachDetailGridInfo","index","getDataAsCsv","CsvExportModule","csvCreator","exportDataAsCsv","getDataAsExcel","ExcelExportModule","excelCreator","getDataAsExcelXml","exportDataAsExcel","setEnterpriseDatasource","setServerSideDatasource","setDatasource","setViewportDatasource","setRowData","_a","immutableService","createTransactionForRowData","transaction","orderIdMap","updateRowData","rowRenderer","refreshFullWidthRows","selectionController","reset","setFloatingTopRowData","rows","setPinnedTopRowData","setFloatingBottomRowData","setPinnedBottomRowData","getFloatingTopRowCount","getPinnedTopRowCount","getFloatingBottomRowCount","getPinnedBottomRowCount","getFloatingTopRow","getPinnedTopRow","getFloatingBottomRow","getPinnedBottomRow","pinnedRowModel","colDefs","expireValueCache","expire","getVerticalPixelRange","getHorizontalPixelRange","getHScrollPosition","setAlwaysShowVerticalScroll","show","refreshToolPanel","refreshSideBar","refreshCells","flashCells","redrawRows","rowNodes","redrawAfterModelUpdate","timeFullRedraw","count","iterationCount","totalProcessing","totalReflow","doOneIteration","endProcessing","setTimeout","endReflow","durationProcessing","durationReflow","refreshView","refreshRows","rowDataChanged","softRefreshView","refreshGroupRows","setFunctionsReadOnly","readOnly","setHeaderAndFloatingHeights","isAnyFilterPresent","filterManager","isAdvancedFilterPresent","isColumnFilterPresent","isQuickFilterPresent","getModel","setRowNodeExpanded","onGroupExpandedOrCollapsed","deprecated_refreshFromIndex","refreshModel","step","STEP_MAP","refreshInMemoryRowModel","refreshClientSideRowModel","paramsStep","STEP_EVERYTHING","stepsMapped","group","STEP_FILTER","aggregate","STEP_AGGREGATE","sort","STEP_SORT","pivot","STEP_PIVOT","modelParams","keepRenderedRows","animate","keepEditingRows","isAnimationFrameQueueEmpty","isQueueEmpty","getRowNode","expandAll","expandOrCollapseAll","collapseAll","getToolPanelInstance","addVirtualRowListener","addRenderedRowListener","setQuickFilter","newFilter","selectIndex","tryMulti","suppressEvents","deselectIndex","selectNode","setSelectedParams","clearSelection","deselectNode","selectAll","selectAllRowNodes","deselectAll","deselectAllRowNodes","selectAllFiltered","deselectAllFiltered","recomputeAggregates","sizeColumnsToFit","showLoadingOverlay","showNoRowsOverlay","hideOverlay","isNodeSelected","isSelected","getSelectedNodesById","getSelectedNodes","getSelectedRows","getBestCostNodeSelection","getRenderedNodes","ensureColIndexVisible","position","ensureNodeVisible","comparator","forEachLeafNode","forEachNode","forEachNodeAfterFilter","forEachNodeAfterFilterAndSort","getFilterApiForColDef","getFilterInstance","getPrimaryColumn","getFilterComponent","resolveNow","filterComp","getFilterApi","destroyFilter","getStatusPanel","statusBarService","getColumnDef","onFilterChanged","onSortChanged","sortController","setSortModel","sortModel","getSortModel","setFilterModel","model","getFilterModel","getFocusedCell","clearFocusedCell","colKey","floating","setSuppressRowDrag","setHeaderHeight","doLayout","setGridAutoHeight","setDomLayout","setEnableCellTextSelection","selectable","setCellTextSelection","setGroupHeaderHeight","setFloatingFiltersHeight","setPivotGroupHeaderHeight","setPivotHeaderHeight","isSideBarVisible","setSideBarVisible","setSideBarPosition","openToolPanel","closeToolPanel","getOpenedToolPanel","setSideBar","def","setSuppressClipboardPaste","isToolPanelShowing","checkViewportAndScrolls","resetRowHeights","setGroupRemoveSingleChildren","setGroupRemoveLowestSingleChildren","getValue","getGridColumn","valueService","eventType","removeGlobalListener","resetQuickFilter","quickFilterAggregateText","getRangeSelections","getCellRanges","camelCaseToHumanReadable","camelCase","camelCaseToHumanText","addRangeSelection","deprecatedNoLongerUsed","addCellRange","clearRangeSelection","removeAllCellRanges","undoCellEditing","undoRedoService","undo","redoCellEditing","redo","getChartModels","chartService","createRangeChart","createPivotChart","copySelectedRowsToClipboard","includeHeader","columnKeys","clipboardService","copySelectedRangeToClipboard","copySelectedRangeDown","copyRangeDown","showColumnMenuAfterButtonClick","buttonElement","menuFactory","showMenuAfterButtonClick","showColumnMenuAfterMouseClick","mouseEvent","showMenuAfterMouseEvent","hidePopupMenu","contextMenuFactory","hideActiveMenu","setPopupParent","ePopupParent","tabToPreviousCell","getCellRendererInstances","getCellEditorInstances","getEditingCells","stopEditing","cancel","startEditingCell","keyPress","charPress","addAggFunc","aggFunc","aggFuncService","addAggFuncs","clearAggFuncs","clear","rowDataTransaction","res","batchUpdateRowData","insertItemsAtIndex","skipRefresh","add","addIndex","update","remove","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","getDisplayedRowCount","getRowCount","paginationIsLastPageFound","isLastPageFound","paginationGetPageSize","getPageSize","paginationSetPageSize","size","paginationGetCurrentPage","getCurrentPage","paginationGetTotalPages","getTotalPages","paginationGetRowCount","getMasterRowCount","paginationGoToNextPage","goToNextPage","paginationGoToPreviousPage","goToPreviousPage","paginationGoToFirstPage","goToFirstPage","paginationGoToLastPage","goToLastPage","paginationGoToPage","page","goToPage","HorizontalResizeService","dragStartPixels","onDragStart","dragService","draggingStarted","dragStartX","clientX","setResizeIcons","oldBodyCursor","cursor","oldMsUserSelect","msUserSelect","oldWebkitUserSelect","webkitUserSelect","resetIcons","GridCore","template","createTemplate","setTemplate","popupService","service","ClipboardModule","quickFilterUnregisterFn","$watch","addRtlSupport","eRootWrapperBody","gridPanelEl","contains","relatedTarget","unsubscribeFromResize","resizeObserverService","observeResize","onGridSizeChanged","test","sideBarModuleLoaded","SideBarModule","statusBarModuleLoaded","StatusBarModule","EVENT_GRID_SIZE_CHANGED","clientHeight","cssClass","getRootGui","sideBarComp","isDisplayed","close","openedItem","doingVirtualPaging","Error","comparatorIsAFunction","indexToSelect","StandardMenuFactory","hidePopup","showPopup","eMenu","positionPopupUnderMouseEvent","ePopup","eventSource","positionPopupUnderComponent","keepWithinBounds","positionCallback","filterWrapper","getOrCreateFilterWrapper","createElement","guiPromise","promise","gui","bodyScrollListener","direction","addAsModalPopup","setMenuVisible","filterPromise","afterGuiAttached","isMenuEnabled","isFilterAllowed","MouseEventService","gridInstanceId","MouseEventService_1","gridInstanceSequence","next","stampDomElementWithGridInstance","GRID_DOM_KEY","getRenderedCellForEvent","getCellCompForEvent","isEventFromThisGrid","path","getEventPath","instanceId","cellComp","getCellPosition","ScrollVisibleService","setScrollsVisible","horizontalScrollShowing","verticalScrollShowing","RowDragFeature","RowDrag","EVENT_ROW_DRAG_ENTER","setDragging","onEnterOrDragging","EVENT_ROW_DRAG_MOVE","pixel","normaliseForScroll","y","doManagedDrag","ensureRowAtPixel","pixelRange","needToMoveUp","needToMoveDown","scrollVertically","vDirectionString","yNormalised","overIndex","overNode","getCurrentPageHeight","vDirection","Down","Up","EVENT_ROW_DRAG_LEAVE","stopDragging","EVENT_ROW_DRAG_END","GridPanel","scrollTop","resetLastHorizontalScrollElementDebounce","debounce","resetLastHorizontalScrollElement","eBodyViewport","offsetHeight","left","eCenterViewport","right","offsetWidth","onRowDataChanged","showOrHideOverlay","isEmpty","onNewColumnsLoaded","suppressScrollOnFloatingRow","setupRowAnimationCssClass","buildRowContainerComponents","addEventListeners","addDragListeners","addScrollListener","setPinnedContainerSize","disableBrowserDragging","addMouseListeners","addKeyboardEvents","addBodyViewportListener","addStopEditingWhenGridLosesFocus","mockContextMenuForIPad","addRowDragListener","addAngularApplyCheck","onDisplayedColumnsWidthChanged","navigationService","heightScaler","columnAnimationService","paginationAutoPageSizeService","viewport","onCenterViewportResized","newPrintLayout","setWidthsOfContainers","refreshFlexedColumns","bodyHeight","setColumnMovingCss","moving","eTop","eBottom","ct","rowDragFeature","focusOutListener","clickInsideGrid","isPopup","DOM_KEY_POPUP_EDITOR_WRAPPER","isBody","parentNode","applyTriggered","$apply","addGuiEventListener","HTMLImageElement","EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED","EVENT_PINNED_ROW_DATA_CHANGED","EVENT_ROW_DATA_CHANGED","EVENT_ROW_DATA_UPDATED","EVENT_NEW_COLUMNS_LOADED","eLeftContainer","eRightContainer","eCenterContainer","processMouseEvent","eAllCellContainers","processKeyboardEvent","getTarget","onContextMenu","getBodyClientRect","getBoundingClientRect","getRowForEvent","sourceElement","renderedRow","DOM_DATA_KEY_RENDERED_ROW","parentElement","keyboardEvent","getRenderedRow","editing","isEditing","isUserSuppressingKeyboardEvent","onKeyDown","doGridOperations","onKeyPress","cellKeyDownEvent","createEvent","EVENT_CELL_KEY_DOWN","cellKeyPressEvent","EVENT_CELL_KEY_PRESS","metaKey","KEY_A","onCtrlAndA","KEY_C","onCtrlAndC","KEY_V","onCtrlAndV","KEY_D","onCtrlAndD","KEY_Z","KEY_Y","scrollToTop","isStopPropagationForAgGrid","rowComp","handleContextMenuMouseEvent","onMouseEvent","isIOSUserAgent","touchListener","EVENT_LONG_TAP","touchEvent","dispatchCellContextMenuEvent","eventOrTouch","touches","showMenu","PINNED_BOTTOM","PINNED_TOP","isRowsToRender","_b","floatingStart","floatingEnd","rowEnd","allDisplayedColumns","missingOrEmpty","setCellRange","rowStartIndex","rowStartPinned","rowEndIndex","rowEndPinned","columnStart","columnEnd","focusedCell","copyToClipboard","pasteFromClipboard","goToPageWithIndex","rowGotShiftedDuringOperation","startingRowTop","startingRowHeight","paginationOffset","rowTopPixel","rowBottomPixel","heightOffset","getOffset","vScrollTop","vScrollBottom","viewportHeight","pxTop","getScrollPositionForPixel","pxBottom","pxMiddle","newScrollPosition","redrawAfterScroll","updateScrollVisibleService","checkBodyHeight","onHorizontalViewportChanged","onBodyHorizontalScroll","updateScrollVisibleServiceImpl","setHorizontalScrollVisible","setVerticalScrollPaddingVisible","scrollSize","scrollContainerSize","addIEPadding","isBrowserIE","setFixedHeight","eHorizontalScrollBody","eBodyHorizontalScrollViewport","eBodyHorizontalScrollContainer","scroller","overflowY","setFakeHScrollSpacerWidths","updateRowCount","total","updateColumnCount","isPinned","isColumnDisplayed","viewportLeftPixel","viewportRightPixel","colLeftPixel","getLeft","colRightPixel","viewportWidth","bodyWidth","getBodyContainerWidth","viewportScrolledPastCol","viewportScrolledBeforeCol","colToSmallForViewport","alignColToLeft","alignColToRight","setCenterViewportScrollLeft","overlayWrapper","nextTimeout","getCenterContainer","eTopViewport","eBottomViewport","eLeftBottom","eLeftTop","eRightBottom","eRightTop","eFullWidthContainer","rowContainerComponents","body","eWrapper","eCenterColsClipper","fullWidth","pinnedLeft","pinnedRight","floatingTop","eTopContainer","floatingTopPinnedLeft","floatingTopPinnedRight","floatingTopFullWidth","eTopFullWidthContainer","hideWhenNoChildren","floatingBottom","eBottomContainer","floatingBottomPinnedLeft","floatingBottomPinnedRight","floatingBottomFullWith","eBottomFullWidthContainer","isScaling","EVENT_HEIGHT_SCALE_CHANGED","getRowContainers","getFloatingTopBottom","horizontallyScrollHeaderCenterAndFloatingCenter","setCenterWidth","getPinnedLeftContainerWidth","getPinnedRightContainerWidth","widthPx","setPinnedLeftWidth","oldPinning","widthOfCols","newPinning","containers","setPinnedRightWidth","rightSpacing","eHorizontalRightSpacer","leftSpacing","eHorizontalLeftSpacer","event_3","EVENT_BODY_HEIGHT_CHANGED","totalHeaderHeight","floatingTopHeight","getPinnedTopTotalHeight","floatingBottomHeight","getPinnedBottomTotalHeight","floatingTopHeightString","floatingBottomHeightString","display","getBodyHeight","setHorizontalScrollPosition","hScrollPosition","doHorizontalScroll","setVerticalScrollPosition","vScrollPosition","pixels","oldScrollPosition","onCenterViewportScroll","onFakeHorizontalScroll","onVerticalScroll","setScrollTop","redrawRowsAfterScroll","isControllingScroll","eDiv","lastHorizontalScrollElement","eSource","floor","getScrollLeft","EVENT_BODY_SCROLL","setVirtualViewportPosition","setScrollLeft","abs","partner","addScrollEventListener","removeScrollEventListener","SelectAllFeature","cbSelectAll","cbSelectAllVisible","processingEventFromCheckbox","filteredOnly","headerCheckboxSelectionFilteredOnly","showOrHideSelectAll","EVENT_SELECTION_CHANGED","onSelectionChanged","EVENT_MODEL_UPDATED","onModelChanged","EVENT_CHANGED","onCbSelectAll","isCheckboxSelection","checkRightRowModelType","updateStateOfCheckbox","getNextCheckboxState","selectionCount","selected","notSelected","getSelectionCount","allSelected","setValue","selectedCount","notSelectedCount","headerCheckboxSelection","HeaderWrapperComp","enableMenu","suppressMenu","appendHeaderComp","setupMenuClass","setupSortableClass","addColumnHoverListener","EVENT_FILTER_ACTIVE_CHANGED","EVENT_COLUMN_HOVER_CHANGED","onColumnHover","isHovered","filterPresent","isFilterActive","showColumnMenu","progressSort","multiSort","setSort","setSortForColumn","newHeaderComponent","eHeaderCellLabel","dragSource_1","createDragItem","eResize","weWantAutoSize","autoSizeColumn","EVENT_DOUBLE_TAP","normaliseResizeAmount","newWidth","setColumnWidth","resizeWithShiftKey","onColumnWidthChanged","EVENT_MENU_VISIBLE_CHANGED","onMenuVisible","isMenuVisible","TabbedLayout","eGui","innerHTML","eHeader","querySelector","eBody","item","addItem","setAfterAttachedParams","afterAttachedParams","getMinDimensions","eDummyContainer","cloneNode","eDummyBody","minWidth","itemWrapper","eClone","tabbedItem","bodyPromise","showFirstItem","showItemWrapper","eHeaderButton","title","wrapper","showItem","find","onItemClicked","activeItem","afterAttachedCallback","callIfPresent","onActiveItemClicked","defaultGroupComparator","valueA","valueB","nodeA","nodeB","accentedCompare","nodeAIsGroup","nodeBIsGroup","bothAreNormal","defaultComparator","ChartType","HeaderComp","lastMovingChanged","firstExistingValue","trim","setupTap","setupIcons","setupMenu","setupSort","setupFilterIcon","setupText","displayNameSanitised","escape","eText","addInIcon","eSortAsc","eSortDesc","eSortNone","eFilter","iconName","eParent","eIcon","createIconNoSpan","tapMenuButton","menuTouchListener","touchStart","EVENT_TAP","opacity","transition","removeSortIcons","eSortOrder","sortUsingCtrl","eLabel","movedRecently","EVENT_SORT_CHANGED","setMultiSortOrder","isSortAscending","isSortDescending","isSortNone","alwaysHideNoSort","allColumnsWithSorting","getColumnsWithSortingOrdered","indexThisCol","moreThanOneColSorting","showIndex","isSorting","EVENT_FILTER_CHANGED","HeaderGroupComp","setupLabel","addGroupExpandIcon","setupExpandIcons","expandAction","newExpandedValue","isExpanded","addTouchAndClickListeners","eCloseIcon","eOpenIcon","stopPropagationAction","stopPropagationForAgGrid","updateIconVisibility","originalColumnGroup","EVENT_EXPANDED_CHANGED","EVENT_EXPANDABLE_CHANGED","action","isExpandable","refName"],"mappings":"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","file":"static/js/defaultVendors~main~f489a15f.efae15a2.chunk.js","sourcesContent":["/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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\nexport { ColumnFactory } from \"./columnController/columnFactory\";\nexport { ColumnController } from \"./columnController/columnController\";\nexport { ColumnKeyCreator } from \"./columnController/columnKeyCreator\";\nexport { ColumnUtils } from \"./columnController/columnUtils\";\nexport { DisplayedGroupCreator } from \"./columnController/displayedGroupCreator\";\nexport { GroupInstanceIdCreator } from \"./columnController/groupInstanceIdCreator\";\n// components\nexport { ComponentUtil } from \"./components/componentUtil\";\nexport { ColDefUtil } from \"./components/colDefUtil\";\nexport { UserComponentRegistry } from \"./components/framework/userComponentRegistry\";\nexport { UserComponentFactory } from \"./components/framework/userComponentFactory\";\nexport { initialiseAgGridWithAngular1 } from \"./components/agGridNg1\";\nexport { initialiseAgGridWithWebComponents } from \"./components/agGridWebComponent\";\n// context\nexport { BeanStub } from \"./context/beanStub\";\nexport { Context, Autowired, PostConstruct, PreConstruct, Optional, Bean, Qualifier, PreDestroy } from \"./context/context\";\nexport { QuerySelector, Listener, RefSelector } from \"./widgets/componentAnnotations\";\n// dragAndDrop\nexport { DragAndDropService, DragSourceType, HorizontalDirection, VerticalDirection } from \"./dragAndDrop/dragAndDropService\";\nexport { DragService } from \"./dragAndDrop/dragService\";\n// entities\nexport { Column } from \"./entities/column\";\nexport { ColumnGroup } from \"./entities/columnGroup\";\nexport { OriginalColumnGroup } from \"./entities/originalColumnGroup\";\nexport { RowNode } from \"./entities/rowNode\";\n// filter\nexport { FilterManager } from \"./filter/filterManager\";\nexport { ProvidedFilter } from \"./filter/provided/providedFilter\";\nexport { SimpleFilter } from \"./filter/provided/simpleFilter\";\nexport { ScalerFilter } from \"./filter/provided/scalerFilter\";\nexport { NumberFilter } from \"./filter/provided/number/numberFilter\";\nexport { TextFilter } from \"./filter/provided/text/textFilter\";\nexport { DateFilter } from \"./filter/provided/date/dateFilter\";\n// gridPanel\nexport { GridPanel } from \"./gridPanel/gridPanel\";\nexport { ScrollVisibleService } from \"./gridPanel/scrollVisibleService\";\nexport { MouseEventService } from \"./gridPanel/mouseEventService\";\n// headerRendering\nexport { BodyDropPivotTarget } from \"./headerRendering/bodyDropPivotTarget\";\nexport { BodyDropTarget } from \"./headerRendering/bodyDropTarget\";\nexport { CssClassApplier } from \"./headerRendering/cssClassApplier\";\nexport { HeaderContainer } from \"./headerRendering/headerContainer\";\nexport { HeaderRootComp } from \"./headerRendering/headerRootComp\";\nexport { HeaderRowComp } from \"./headerRendering/headerRowComp\";\nexport { HorizontalResizeService } from \"./headerRendering/horizontalResizeService\";\nexport { MoveColumnController } from \"./headerRendering/moveColumnController\";\nexport { StandardMenuFactory } from \"./headerRendering/standardMenu\";\n// layout\nexport { TabbedLayout } from \"./layout/tabbedLayout\";\n// misc\nexport { simpleHttpRequest } from \"./misc/simpleHttpRequest\";\nexport { ResizeObserverService } from \"./misc/resizeObserverService\";\nexport { LargeTextCellEditor } from \"./rendering/cellEditors/largeTextCellEditor\";\nexport { PopupEditorWrapper } from \"./rendering/cellEditors/popupEditorWrapper\";\nexport { PopupSelectCellEditor } from \"./rendering/cellEditors/popupSelectCellEditor\";\nexport { PopupTextCellEditor } from \"./rendering/cellEditors/popupTextCellEditor\";\nexport { SelectCellEditor } from \"./rendering/cellEditors/selectCellEditor\";\nexport { TextCellEditor } from \"./rendering/cellEditors/textCellEditor\";\nexport { AnimateShowChangeCellRenderer } from \"./rendering/cellRenderers/animateShowChangeCellRenderer\";\nexport { AnimateSlideCellRenderer } from \"./rendering/cellRenderers/animateSlideCellRenderer\";\nexport { GroupCellRenderer } from \"./rendering/cellRenderers/groupCellRenderer\";\n// features\nexport { SetLeftFeature } from \"./rendering/features/setLeftFeature\";\n// rendering\nexport { AutoWidthCalculator } from \"./rendering/autoWidthCalculator\";\nexport { CellRendererFactory } from \"./rendering/cellRendererFactory\";\nexport { CheckboxSelectionComponent } from \"./rendering/checkboxSelectionComponent\";\nexport { CellComp } from \"./rendering/cellComp\";\nexport { RowComp } from \"./rendering/rowComp\";\nexport { RowRenderer } from \"./rendering/rowRenderer\";\nexport { ValueFormatterService } from \"./rendering/valueFormatterService\";\n// row models\nexport { PinnedRowModel } from \"./pinnedRowModel/pinnedRowModel\";\nexport { ChangedPath } from \"./utils/changedPath\";\nexport { RowNodeBlock } from \"./modules/rowNodeCache/rowNodeBlock\";\nexport { RowNodeBlockLoader } from \"./modules/rowNodeCache/rowNodeBlockLoader\";\nexport { PaginationProxy } from \"./pagination/paginationProxy\";\nexport { RowNodeCache } from \"./modules/rowNodeCache/rowNodeCache\";\n//styling\nexport { StylingService } from \"./styling/stylingService\";\n// widgets\nexport { AgAbstractField } from \"./widgets/agAbstractField\";\nexport { AgCheckbox } from \"./widgets/agCheckbox\";\nexport { AgRadioButton } from \"./widgets/agRadioButton\";\nexport { AgToggleButton } from \"./widgets/agToggleButton\";\nexport { AgInputTextField } from \"./widgets/agInputTextField\";\nexport { AgInputTextArea } from \"./widgets/agInputTextArea\";\nexport { AgInputNumberField } from \"./widgets/agInputNumberField\";\nexport { AgInputRange } from \"./widgets/agInputRange\";\nexport { AgSelect } from \"./widgets/agSelect\";\nexport { AgSlider } from \"./widgets/agSlider\";\nexport { AgAngleSelect } from \"./widgets/agAngleSelect\";\nexport { AgColorPicker } from \"./widgets/agColorPicker\";\nexport { AgGroupComponent } from \"./widgets/agGroupComponent\";\nexport { AgDialog } from \"./widgets/agDialog\";\nexport { AgPanel } from \"./widgets/agPanel\";\nexport { MessageBox } from \"./widgets/messageBox\";\nexport { Component } from \"./widgets/component\";\nexport { PopupComponent } from \"./widgets/popupComponent\";\nexport { PopupService } from \"./widgets/popupService\";\nexport { TouchListener } from \"./widgets/touchListener\";\nexport { VirtualList } from \"./widgets/virtualList\";\n// range\nexport { CellRangeType } from \"./interfaces/iRangeController\";\n// root\nexport { VanillaFrameworkOverrides } from \"./vanillaFrameworkOverrides\";\nexport { CellNavigationService } from \"./cellNavigationService\";\nexport { AlignedGridsService } from \"./alignedGridsService\";\nexport { Constants } from \"./constants\";\nexport { Grid } from \"./grid\";\nexport { GridApi } from \"./gridApi\";\nexport { Events } from \"./eventKeys\";\nexport { FocusedCellController } from \"./focusedCellController\";\nexport { defaultGroupComparator } from \"./functions\";\nexport { GridOptionsWrapper } from \"./gridOptionsWrapper\";\nexport { EventService } from \"./eventService\";\nexport { SelectableService } from \"./rowNodes/selectableService\";\nexport { GridCore } from \"./gridCore\";\nexport { Logger } from \"./logger\";\nexport { SelectionController } from \"./selectionController\";\nexport { SortController } from \"./sortController\";\nexport { TemplateService } from \"./templateService\";\nexport { Color, Utils, NumberSequence, _, Promise } from \"./utils\";\nexport { ValueService } from \"./valueService/valueService\";\nexport { ValueCache } from \"./valueService/valueCache\";\nexport { ExpressionService } from \"./valueService/expressionService\";\nexport { LoggerFactory } from \"./logger\";\nexport { CellPositionUtils } from \"./entities/cellPosition\";\nexport { RowPositionUtils } from \"./entities/rowPosition\";\nexport { ColumnApi } from \"./columnController/columnApi\";\nexport { BaseComponentWrapper } from \"./components/framework/frameworkComponentWrapper\";\nexport { Environment } from \"./environment\";\nexport { TooltipManager } from \"./widgets/tooltipManager\";\n// charts\nexport * from \"./interfaces/iChartOptions\";\nexport { ModuleNames } from \"./modules/moduleNames\";\nexport { ModuleRegistry } from \"./modules/moduleRegistry\";\n// events\nexport * from \"./events\";\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\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 __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { _ } from './utils';\nimport { EventService } from './eventService';\nimport { Constants } from './constants';\nimport { ComponentUtil } from './components/componentUtil';\nimport { Autowired, Bean, PostConstruct, PreDestroy, Qualifier } from './context/context';\nimport { PropertyKeys } from './propertyKeys';\nimport { ColDefUtil } from './components/colDefUtil';\nimport { Events } from './eventKeys';\nimport { SideBarDefParser } from './entities/sideBar';\nimport { ModuleNames } from './modules/moduleNames';\nimport { ModuleRegistry } from './modules/moduleRegistry';\nvar DEFAULT_ROW_HEIGHT = 25;\nvar DEFAULT_DETAIL_ROW_HEIGHT = 300;\nvar DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE = 5;\nvar DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE = 5;\nvar DEFAULT_KEEP_DETAIL_ROW_COUNT = 10;\nfunction isTrue(value) {\n return value === true || value === 'true';\n}\nfunction zeroOrGreater(value, defaultValue) {\n if (value >= 0) {\n return value;\n }\n // zero gets returned if number is missing or the wrong type\n return defaultValue;\n}\nfunction oneOrGreater(value, defaultValue) {\n if (value > 0) {\n return value;\n }\n // zero gets returned if number is missing or the wrong type\n return defaultValue;\n}\nvar GridOptionsWrapper = /** @class */ (function () {\n function GridOptionsWrapper() {\n this.propertyEventService = new EventService();\n this.domDataKey = '__AG_' + Math.random().toString();\n this.layoutElements = [];\n }\n GridOptionsWrapper_1 = GridOptionsWrapper;\n GridOptionsWrapper.prototype.agWire = function (gridApi, columnApi) {\n this.gridOptions.api = gridApi;\n this.gridOptions.columnApi = columnApi;\n this.checkForDeprecated();\n this.checkForViolations();\n };\n GridOptionsWrapper.prototype.destroy = function () {\n // need to remove these, as we don't own the lifecycle of the gridOptions, we need to\n // remove the references in case the user keeps the grid options, we want the rest\n // of the grid to be picked up by the garbage collector\n this.gridOptions.api = null;\n this.gridOptions.columnApi = null;\n };\n GridOptionsWrapper.prototype.init = function () {\n if (!(this.gridOptions.suppressPropertyNamesCheck === true)) {\n this.checkGridOptionsProperties();\n this.checkColumnDefProperties();\n }\n var async = this.useAsyncEvents();\n this.eventService.addGlobalListener(this.globalEventHandler.bind(this), async);\n if (this.isGroupSelectsChildren() && this.isSuppressParentsInRowNodes()) {\n console.warn(\"ag-Grid: 'groupSelectsChildren' does not work with 'suppressParentsInRowNodes', this selection method needs the part in rowNode to work\");\n }\n if (this.isGroupSelectsChildren()) {\n if (!this.isRowSelectionMulti()) {\n console.warn(\"ag-Grid: rowSelection must be 'multiple' for groupSelectsChildren to make sense\");\n }\n if (this.isRowModelServerSide()) {\n console.warn('ag-Grid: group selects children is NOT support for Server Side Row Model. ' +\n 'This is because the rows are lazy loaded, so selecting a group is not possible as' +\n 'the grid has no way of knowing what the children are.');\n }\n }\n if (this.isGroupRemoveSingleChildren() && this.isGroupHideOpenParents()) {\n console.warn(\"ag-Grid: groupRemoveSingleChildren and groupHideOpenParents do not work with each other, you need to pick one. And don't ask us how to us these together on our support forum either you will get the same answer!\");\n }\n if (this.isEnableRangeSelection()) {\n ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'enableRangeSelection');\n }\n if (!this.isEnableRangeSelection() && (this.isEnableRangeHandle() || this.isEnableFillHandle())) {\n console.warn(\"ag-Grid: 'enableRangeHandle' and 'enableFillHandle' will not work unless 'enableRangeSelection' is set to true\");\n }\n this.addEventListener(GridOptionsWrapper_1.PROP_DOM_LAYOUT, this.updateLayoutClasses.bind(this));\n };\n GridOptionsWrapper.prototype.checkColumnDefProperties = function () {\n var _this = this;\n if (this.gridOptions.columnDefs == null) {\n return;\n }\n this.gridOptions.columnDefs.forEach(function (colDef) {\n var userProperties = Object.getOwnPropertyNames(colDef);\n var validProperties = __spreadArrays(ColDefUtil.ALL_PROPERTIES, ColDefUtil.FRAMEWORK_PROPERTIES);\n _this.checkProperties(userProperties, validProperties, validProperties, 'colDef', 'https://www.ag-grid.com/javascript-grid-column-properties/');\n });\n };\n GridOptionsWrapper.prototype.checkGridOptionsProperties = function () {\n var userProperties = Object.getOwnPropertyNames(this.gridOptions);\n var validProperties = __spreadArrays(PropertyKeys.ALL_PROPERTIES, PropertyKeys.FRAMEWORK_PROPERTIES, _.values(Events).map(function (event) { return ComponentUtil.getCallbackForEvent(event); }));\n var validPropertiesAndExceptions = __spreadArrays(validProperties, ['api', 'columnApi']);\n this.checkProperties(userProperties, validPropertiesAndExceptions, validProperties, 'gridOptions', 'https://www.ag-grid.com/javascript-grid-properties/');\n };\n GridOptionsWrapper.prototype.checkProperties = function (userProperties, validPropertiesAndExceptions, validProperties, containerName, docsUrl) {\n var invalidProperties = _.fuzzyCheckStrings(userProperties, validPropertiesAndExceptions, validProperties);\n _.iterateObject(invalidProperties, function (key, value) {\n console.warn(\"ag-grid: invalid \" + containerName + \" property '\" + key + \"' did you mean any of these: \" + value.slice(0, 8).join(\", \"));\n });\n if (Object.keys(invalidProperties).length > 0) {\n console.warn(\"ag-grid: to see all the valid \" + containerName + \" properties please check: \" + docsUrl);\n }\n };\n // returns the dom data, or undefined if not found\n GridOptionsWrapper.prototype.getDomData = function (element, key) {\n var domData = element[this.domDataKey];\n return domData ? domData[key] : undefined;\n };\n GridOptionsWrapper.prototype.setDomData = function (element, key, value) {\n var domData = element[this.domDataKey];\n if (_.missing(domData)) {\n domData = {};\n element[this.domDataKey] = domData;\n }\n domData[key] = value;\n };\n GridOptionsWrapper.prototype.isRowSelection = function () {\n return this.gridOptions.rowSelection === 'single' || this.gridOptions.rowSelection === 'multiple';\n };\n GridOptionsWrapper.prototype.isRowDeselection = function () {\n return isTrue(this.gridOptions.rowDeselection);\n };\n GridOptionsWrapper.prototype.isRowSelectionMulti = function () {\n return this.gridOptions.rowSelection === 'multiple';\n };\n GridOptionsWrapper.prototype.isRowMultiSelectWithClick = function () {\n return isTrue(this.gridOptions.rowMultiSelectWithClick);\n };\n GridOptionsWrapper.prototype.getContext = function () {\n return this.gridOptions.context;\n };\n GridOptionsWrapper.prototype.isPivotMode = function () {\n return isTrue(this.gridOptions.pivotMode);\n };\n GridOptionsWrapper.prototype.isPivotTotals = function () {\n return isTrue(this.gridOptions.pivotTotals);\n };\n GridOptionsWrapper.prototype.getPivotColumnGroupTotals = function () {\n return this.gridOptions.pivotColumnGroupTotals;\n };\n GridOptionsWrapper.prototype.getPivotRowTotals = function () {\n return this.gridOptions.pivotRowTotals;\n };\n GridOptionsWrapper.prototype.isRowModelInfinite = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_INFINITE;\n };\n GridOptionsWrapper.prototype.isRowModelViewport = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_VIEWPORT;\n };\n GridOptionsWrapper.prototype.isRowModelServerSide = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n };\n GridOptionsWrapper.prototype.isRowModelDefault = function () {\n return (_.missing(this.gridOptions.rowModelType) ||\n this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE ||\n this.gridOptions.rowModelType === Constants.DEPRECATED_ROW_MODEL_TYPE_NORMAL);\n };\n GridOptionsWrapper.prototype.isFullRowEdit = function () {\n return this.gridOptions.editType === 'fullRow';\n };\n GridOptionsWrapper.prototype.isSuppressFocusAfterRefresh = function () {\n return isTrue(this.gridOptions.suppressFocusAfterRefresh);\n };\n GridOptionsWrapper.prototype.isSuppressBrowserResizeObserver = function () {\n return isTrue(this.gridOptions.suppressBrowserResizeObserver);\n };\n GridOptionsWrapper.prototype.isSuppressMaintainUnsortedOrder = function () {\n return isTrue(this.gridOptions.suppressMaintainUnsortedOrder);\n };\n GridOptionsWrapper.prototype.isSuppressClearOnFillReduction = function () {\n return isTrue(this.gridOptions.suppressClearOnFillReduction);\n };\n GridOptionsWrapper.prototype.isShowToolPanel = function () {\n return isTrue(this.gridOptions.sideBar && Array.isArray(this.getSideBar().toolPanels));\n };\n GridOptionsWrapper.prototype.getSideBar = function () {\n return this.gridOptions.sideBar;\n };\n GridOptionsWrapper.prototype.isSuppressTouch = function () {\n return isTrue(this.gridOptions.suppressTouch);\n };\n GridOptionsWrapper.prototype.isSuppressRowTransform = function () {\n return isTrue(this.gridOptions.suppressRowTransform);\n };\n GridOptionsWrapper.prototype.isSuppressSetColumnStateEvents = function () {\n return isTrue(this.gridOptions.suppressSetColumnStateEvents);\n };\n GridOptionsWrapper.prototype.isAllowDragFromColumnsToolPanel = function () {\n return isTrue(this.gridOptions.allowDragFromColumnsToolPanel);\n };\n GridOptionsWrapper.prototype.useAsyncEvents = function () {\n return !isTrue(this.gridOptions.suppressAsyncEvents);\n };\n GridOptionsWrapper.prototype.isEnableCellChangeFlash = function () {\n return isTrue(this.gridOptions.enableCellChangeFlash);\n };\n GridOptionsWrapper.prototype.isGroupSelectsChildren = function () {\n var result = isTrue(this.gridOptions.groupSelectsChildren);\n if (result && this.isTreeData()) {\n console.warn('ag-Grid: groupSelectsChildren does not work with tree data');\n return false;\n }\n return result;\n };\n GridOptionsWrapper.prototype.isSuppressRowHoverHighlight = function () {\n return isTrue(this.gridOptions.suppressRowHoverHighlight);\n };\n GridOptionsWrapper.prototype.isGroupSelectsFiltered = function () {\n return isTrue(this.gridOptions.groupSelectsFiltered);\n };\n GridOptionsWrapper.prototype.isGroupHideOpenParents = function () {\n return isTrue(this.gridOptions.groupHideOpenParents);\n };\n // if we are doing hideOpenParents, then we always have groupMultiAutoColumn, otherwise hideOpenParents would not work\n GridOptionsWrapper.prototype.isGroupMultiAutoColumn = function () {\n return isTrue(this.gridOptions.groupMultiAutoColumn) || isTrue(this.gridOptions.groupHideOpenParents);\n };\n GridOptionsWrapper.prototype.isGroupRemoveSingleChildren = function () {\n return isTrue(this.gridOptions.groupRemoveSingleChildren);\n };\n GridOptionsWrapper.prototype.isGroupRemoveLowestSingleChildren = function () {\n return isTrue(this.gridOptions.groupRemoveLowestSingleChildren);\n };\n GridOptionsWrapper.prototype.isGroupIncludeFooter = function () {\n return isTrue(this.gridOptions.groupIncludeFooter);\n };\n GridOptionsWrapper.prototype.isGroupIncludeTotalFooter = function () {\n return isTrue(this.gridOptions.groupIncludeTotalFooter);\n };\n GridOptionsWrapper.prototype.isGroupSuppressBlankHeader = function () {\n return isTrue(this.gridOptions.groupSuppressBlankHeader);\n };\n GridOptionsWrapper.prototype.isSuppressRowClickSelection = function () {\n return isTrue(this.gridOptions.suppressRowClickSelection);\n };\n GridOptionsWrapper.prototype.isSuppressCellSelection = function () {\n return isTrue(this.gridOptions.suppressCellSelection);\n };\n GridOptionsWrapper.prototype.isSuppressMultiSort = function () {\n return isTrue(this.gridOptions.suppressMultiSort);\n };\n GridOptionsWrapper.prototype.isMultiSortKeyCtrl = function () {\n return this.gridOptions.multiSortKey === 'ctrl';\n };\n GridOptionsWrapper.prototype.isGroupSuppressAutoColumn = function () {\n return isTrue(this.gridOptions.groupSuppressAutoColumn);\n };\n GridOptionsWrapper.prototype.isSuppressDragLeaveHidesColumns = function () {\n return isTrue(this.gridOptions.suppressDragLeaveHidesColumns);\n };\n GridOptionsWrapper.prototype.isSuppressScrollOnNewData = function () {\n return isTrue(this.gridOptions.suppressScrollOnNewData);\n };\n GridOptionsWrapper.prototype.isRowDragManaged = function () {\n return isTrue(this.gridOptions.rowDragManaged);\n };\n GridOptionsWrapper.prototype.isSuppressRowDrag = function () {\n return isTrue(this.gridOptions.suppressRowDrag);\n };\n // returns either 'print', 'autoHeight' or 'normal' (normal is the default)\n GridOptionsWrapper.prototype.getDomLayout = function () {\n var domLayout = this.gridOptions.domLayout || Constants.DOM_LAYOUT_NORMAL;\n var validLayouts = [\n Constants.DOM_LAYOUT_PRINT,\n Constants.DOM_LAYOUT_AUTO_HEIGHT,\n Constants.DOM_LAYOUT_NORMAL\n ];\n if (validLayouts.indexOf(domLayout) === -1) {\n _.doOnce(function () {\n return console.warn(\"ag-Grid: \" + domLayout + \" is not valid for DOM Layout, valid values are \" + Constants.DOM_LAYOUT_NORMAL + \", \" + Constants.DOM_LAYOUT_AUTO_HEIGHT + \" and \" + Constants.DOM_LAYOUT_PRINT);\n }, 'warn about dom layout values');\n return Constants.DOM_LAYOUT_NORMAL;\n }\n return domLayout;\n };\n GridOptionsWrapper.prototype.isSuppressHorizontalScroll = function () {\n return isTrue(this.gridOptions.suppressHorizontalScroll);\n };\n GridOptionsWrapper.prototype.isSuppressMaxRenderedRowRestriction = function () {\n return isTrue(this.gridOptions.suppressMaxRenderedRowRestriction);\n };\n GridOptionsWrapper.prototype.isExcludeChildrenWhenTreeDataFiltering = function () {\n return isTrue(this.gridOptions.excludeChildrenWhenTreeDataFiltering);\n };\n GridOptionsWrapper.prototype.isAlwaysShowVerticalScroll = function () {\n return isTrue(this.gridOptions.alwaysShowVerticalScroll);\n };\n GridOptionsWrapper.prototype.isSuppressLoadingOverlay = function () {\n return isTrue(this.gridOptions.suppressLoadingOverlay);\n };\n GridOptionsWrapper.prototype.isSuppressNoRowsOverlay = function () {\n return isTrue(this.gridOptions.suppressNoRowsOverlay);\n };\n GridOptionsWrapper.prototype.isSuppressFieldDotNotation = function () {\n return isTrue(this.gridOptions.suppressFieldDotNotation);\n };\n GridOptionsWrapper.prototype.getPinnedTopRowData = function () {\n return this.gridOptions.pinnedTopRowData;\n };\n GridOptionsWrapper.prototype.getPinnedBottomRowData = function () {\n return this.gridOptions.pinnedBottomRowData;\n };\n GridOptionsWrapper.prototype.isFunctionsPassive = function () {\n return isTrue(this.gridOptions.functionsPassive);\n };\n GridOptionsWrapper.prototype.isSuppressTabbing = function () {\n return isTrue(this.gridOptions.suppressTabbing);\n };\n GridOptionsWrapper.prototype.isSuppressChangeDetection = function () {\n return isTrue(this.gridOptions.suppressChangeDetection);\n };\n GridOptionsWrapper.prototype.isSuppressAnimationFrame = function () {\n return isTrue(this.gridOptions.suppressAnimationFrame);\n };\n GridOptionsWrapper.prototype.getQuickFilterText = function () {\n return this.gridOptions.quickFilterText;\n };\n GridOptionsWrapper.prototype.isCacheQuickFilter = function () {\n return isTrue(this.gridOptions.cacheQuickFilter);\n };\n GridOptionsWrapper.prototype.isUnSortIcon = function () {\n return isTrue(this.gridOptions.unSortIcon);\n };\n GridOptionsWrapper.prototype.isSuppressMenuHide = function () {\n return isTrue(this.gridOptions.suppressMenuHide);\n };\n GridOptionsWrapper.prototype.isEnterMovesDownAfterEdit = function () {\n return isTrue(this.gridOptions.enterMovesDownAfterEdit);\n };\n GridOptionsWrapper.prototype.isEnterMovesDown = function () {\n return isTrue(this.gridOptions.enterMovesDown);\n };\n GridOptionsWrapper.prototype.isUndoRedoCellEditing = function () {\n return isTrue(this.gridOptions.undoRedoCellEditing);\n };\n GridOptionsWrapper.prototype.getUndoRedoCellEditingLimit = function () {\n return this.gridOptions.undoRedoCellEditingLimit;\n };\n GridOptionsWrapper.prototype.getRowStyle = function () {\n return this.gridOptions.rowStyle;\n };\n GridOptionsWrapper.prototype.getRowClass = function () {\n return this.gridOptions.rowClass;\n };\n GridOptionsWrapper.prototype.getRowStyleFunc = function () {\n return this.gridOptions.getRowStyle;\n };\n GridOptionsWrapper.prototype.getRowClassFunc = function () {\n return this.gridOptions.getRowClass;\n };\n GridOptionsWrapper.prototype.rowClassRules = function () {\n return this.gridOptions.rowClassRules;\n };\n GridOptionsWrapper.prototype.getCreateChartContainerFunc = function () {\n return this.gridOptions.createChartContainer;\n };\n GridOptionsWrapper.prototype.getPopupParent = function () {\n return this.gridOptions.popupParent;\n };\n GridOptionsWrapper.prototype.getBlockLoadDebounceMillis = function () {\n return this.gridOptions.blockLoadDebounceMillis;\n };\n GridOptionsWrapper.prototype.getPostProcessPopupFunc = function () {\n return this.gridOptions.postProcessPopup;\n };\n GridOptionsWrapper.prototype.getDoesDataFlowerFunc = function () {\n return this.gridOptions.doesDataFlower;\n };\n GridOptionsWrapper.prototype.getPaginationNumberFormatterFunc = function () {\n return this.gridOptions.paginationNumberFormatter;\n };\n GridOptionsWrapper.prototype.getChildCountFunc = function () {\n return this.gridOptions.getChildCount;\n };\n GridOptionsWrapper.prototype.getDefaultGroupSortComparator = function () {\n return this.gridOptions.defaultGroupSortComparator;\n };\n GridOptionsWrapper.prototype.getIsFullWidthCellFunc = function () {\n return this.gridOptions.isFullWidthCell;\n };\n GridOptionsWrapper.prototype.getFullWidthCellRendererParams = function () {\n return this.gridOptions.fullWidthCellRendererParams;\n };\n GridOptionsWrapper.prototype.isEmbedFullWidthRows = function () {\n return isTrue(this.gridOptions.embedFullWidthRows) || isTrue(this.gridOptions.deprecatedEmbedFullWidthRows);\n };\n GridOptionsWrapper.prototype.getSuppressKeyboardEventFunc = function () {\n return this.gridOptions.suppressKeyboardEvent;\n };\n GridOptionsWrapper.prototype.getBusinessKeyForNodeFunc = function () {\n return this.gridOptions.getBusinessKeyForNode;\n };\n GridOptionsWrapper.prototype.getApi = function () {\n return this.gridOptions.api;\n };\n GridOptionsWrapper.prototype.getColumnApi = function () {\n return this.gridOptions.columnApi;\n };\n GridOptionsWrapper.prototype.isDeltaRowDataMode = function () {\n return isTrue(this.gridOptions.deltaRowDataMode);\n };\n GridOptionsWrapper.prototype.isDeltaColumnMode = function () {\n return isTrue(this.gridOptions.deltaColumnMode);\n };\n GridOptionsWrapper.prototype.isEnsureDomOrder = function () {\n return isTrue(this.gridOptions.ensureDomOrder);\n };\n GridOptionsWrapper.prototype.isEnableCharts = function () {\n if (isTrue(this.gridOptions.enableCharts)) {\n return ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'enableCharts');\n }\n return false;\n };\n GridOptionsWrapper.prototype.getColResizeDefault = function () {\n return this.gridOptions.colResizeDefault;\n };\n GridOptionsWrapper.prototype.isSingleClickEdit = function () {\n return isTrue(this.gridOptions.singleClickEdit);\n };\n GridOptionsWrapper.prototype.isSuppressClickEdit = function () {\n return isTrue(this.gridOptions.suppressClickEdit);\n };\n GridOptionsWrapper.prototype.isStopEditingWhenGridLosesFocus = function () {\n return isTrue(this.gridOptions.stopEditingWhenGridLosesFocus);\n };\n GridOptionsWrapper.prototype.getGroupDefaultExpanded = function () {\n return this.gridOptions.groupDefaultExpanded;\n };\n GridOptionsWrapper.prototype.getMaxConcurrentDatasourceRequests = function () {\n return this.gridOptions.maxConcurrentDatasourceRequests;\n };\n GridOptionsWrapper.prototype.getMaxBlocksInCache = function () {\n return this.gridOptions.maxBlocksInCache;\n };\n GridOptionsWrapper.prototype.getCacheOverflowSize = function () {\n return this.gridOptions.cacheOverflowSize;\n };\n GridOptionsWrapper.prototype.getPaginationPageSize = function () {\n return this.gridOptions.paginationPageSize;\n };\n GridOptionsWrapper.prototype.isPaginateChildRows = function () {\n // if using groupSuppressRow, means we are not showing parent rows,\n // so we always paginate on the child rows here as there are no parent rows\n var shouldPaginate = this.isGroupSuppressRow() || this.isGroupRemoveSingleChildren() || this.isGroupRemoveLowestSingleChildren();\n if (shouldPaginate) {\n return true;\n }\n return isTrue(this.gridOptions.paginateChildRows);\n };\n GridOptionsWrapper.prototype.getCacheBlockSize = function () {\n return this.gridOptions.cacheBlockSize;\n };\n GridOptionsWrapper.prototype.getInfiniteInitialRowCount = function () {\n return this.gridOptions.infiniteInitialRowCount;\n };\n GridOptionsWrapper.prototype.isPurgeClosedRowNodes = function () {\n return isTrue(this.gridOptions.purgeClosedRowNodes);\n };\n GridOptionsWrapper.prototype.isSuppressPaginationPanel = function () {\n return isTrue(this.gridOptions.suppressPaginationPanel);\n };\n GridOptionsWrapper.prototype.getRowData = function () {\n return this.gridOptions.rowData;\n };\n // this property is different - we never allow groupUseEntireRow if in pivot mode,\n // as otherwise we don't see the pivot values.\n GridOptionsWrapper.prototype.isGroupUseEntireRow = function (pivotMode) {\n return pivotMode ? false : isTrue(this.gridOptions.groupUseEntireRow);\n };\n GridOptionsWrapper.prototype.isEnableRtl = function () {\n return isTrue(this.gridOptions.enableRtl);\n };\n GridOptionsWrapper.prototype.getAutoGroupColumnDef = function () {\n return this.gridOptions.autoGroupColumnDef;\n };\n GridOptionsWrapper.prototype.isGroupSuppressRow = function () {\n return isTrue(this.gridOptions.groupSuppressRow);\n };\n GridOptionsWrapper.prototype.getRowGroupPanelShow = function () {\n return this.gridOptions.rowGroupPanelShow;\n };\n GridOptionsWrapper.prototype.getPivotPanelShow = function () {\n return this.gridOptions.pivotPanelShow;\n };\n GridOptionsWrapper.prototype.isAngularCompileRows = function () {\n return isTrue(this.gridOptions.angularCompileRows);\n };\n GridOptionsWrapper.prototype.isAngularCompileFilters = function () {\n return isTrue(this.gridOptions.angularCompileFilters);\n };\n GridOptionsWrapper.prototype.isAngularCompileHeaders = function () {\n return isTrue(this.gridOptions.angularCompileHeaders);\n };\n GridOptionsWrapper.prototype.isDebug = function () {\n return isTrue(this.gridOptions.debug);\n };\n GridOptionsWrapper.prototype.getColumnDefs = function () {\n return this.gridOptions.columnDefs;\n };\n GridOptionsWrapper.prototype.getColumnTypes = function () {\n return this.gridOptions.columnTypes;\n };\n GridOptionsWrapper.prototype.getDatasource = function () {\n return this.gridOptions.datasource;\n };\n GridOptionsWrapper.prototype.getViewportDatasource = function () {\n return this.gridOptions.viewportDatasource;\n };\n GridOptionsWrapper.prototype.getServerSideDatasource = function () {\n return this.gridOptions.serverSideDatasource;\n };\n GridOptionsWrapper.prototype.isAccentedSort = function () {\n return isTrue(this.gridOptions.accentedSort);\n };\n GridOptionsWrapper.prototype.isEnableBrowserTooltips = function () {\n return isTrue(this.gridOptions.enableBrowserTooltips);\n };\n GridOptionsWrapper.prototype.isEnableCellExpressions = function () {\n return isTrue(this.gridOptions.enableCellExpressions);\n };\n GridOptionsWrapper.prototype.isEnableGroupEdit = function () {\n return isTrue(this.gridOptions.enableGroupEdit);\n };\n GridOptionsWrapper.prototype.isSuppressMiddleClickScrolls = function () {\n return isTrue(this.gridOptions.suppressMiddleClickScrolls);\n };\n GridOptionsWrapper.prototype.isPreventDefaultOnContextMenu = function () {\n return isTrue(this.gridOptions.preventDefaultOnContextMenu);\n };\n GridOptionsWrapper.prototype.isSuppressPreventDefaultOnMouseWheel = function () {\n return isTrue(this.gridOptions.suppressPreventDefaultOnMouseWheel);\n };\n GridOptionsWrapper.prototype.isSuppressColumnVirtualisation = function () {\n return isTrue(this.gridOptions.suppressColumnVirtualisation);\n };\n GridOptionsWrapper.prototype.isSuppressContextMenu = function () {\n return isTrue(this.gridOptions.suppressContextMenu);\n };\n GridOptionsWrapper.prototype.isAllowContextMenuWithControlKey = function () {\n return isTrue(this.gridOptions.allowContextMenuWithControlKey);\n };\n GridOptionsWrapper.prototype.isSuppressCopyRowsToClipboard = function () {\n return isTrue(this.gridOptions.suppressCopyRowsToClipboard);\n };\n GridOptionsWrapper.prototype.isCopyHeadersToClipboard = function () {\n return isTrue(this.gridOptions.copyHeadersToClipboard);\n };\n GridOptionsWrapper.prototype.isSuppressClipboardPaste = function () {\n return isTrue(this.gridOptions.suppressClipboardPaste);\n };\n GridOptionsWrapper.prototype.isPagination = function () {\n return isTrue(this.gridOptions.pagination);\n };\n GridOptionsWrapper.prototype.isSuppressEnterpriseResetOnNewColumns = function () {\n return isTrue(this.gridOptions.suppressEnterpriseResetOnNewColumns);\n };\n GridOptionsWrapper.prototype.getProcessDataFromClipboardFunc = function () {\n return this.gridOptions.processDataFromClipboard;\n };\n GridOptionsWrapper.prototype.getBatchUpdateWaitMillis = function () {\n return _.exists(this.gridOptions.batchUpdateWaitMillis) ? this.gridOptions.batchUpdateWaitMillis : Constants.BATCH_WAIT_MILLIS;\n };\n GridOptionsWrapper.prototype.isSuppressMovableColumns = function () {\n return isTrue(this.gridOptions.suppressMovableColumns);\n };\n GridOptionsWrapper.prototype.isAnimateRows = function () {\n // never allow animating if enforcing the row order\n if (this.isEnsureDomOrder()) {\n return false;\n }\n return isTrue(this.gridOptions.animateRows);\n };\n GridOptionsWrapper.prototype.isSuppressColumnMoveAnimation = function () {\n return isTrue(this.gridOptions.suppressColumnMoveAnimation);\n };\n GridOptionsWrapper.prototype.isSuppressAggFuncInHeader = function () {\n return isTrue(this.gridOptions.suppressAggFuncInHeader);\n };\n GridOptionsWrapper.prototype.isSuppressAggAtRootLevel = function () {\n return isTrue(this.gridOptions.suppressAggAtRootLevel);\n };\n GridOptionsWrapper.prototype.isEnableRangeSelection = function () {\n return ModuleRegistry.isRegistered(ModuleNames.RangeSelectionModule) && isTrue(this.gridOptions.enableRangeSelection);\n };\n GridOptionsWrapper.prototype.isEnableRangeHandle = function () {\n return isTrue(this.gridOptions.enableRangeHandle);\n };\n GridOptionsWrapper.prototype.isEnableFillHandle = function () {\n return isTrue(this.gridOptions.enableFillHandle);\n };\n GridOptionsWrapper.prototype.getFillOperation = function () {\n return this.gridOptions.fillOperation;\n };\n GridOptionsWrapper.prototype.isSuppressMultiRangeSelection = function () {\n return isTrue(this.gridOptions.suppressMultiRangeSelection);\n };\n GridOptionsWrapper.prototype.isPaginationAutoPageSize = function () {\n return isTrue(this.gridOptions.paginationAutoPageSize);\n };\n GridOptionsWrapper.prototype.isRememberGroupStateWhenNewData = function () {\n return isTrue(this.gridOptions.rememberGroupStateWhenNewData);\n };\n GridOptionsWrapper.prototype.getIcons = function () {\n return this.gridOptions.icons;\n };\n GridOptionsWrapper.prototype.getAggFuncs = function () {\n return this.gridOptions.aggFuncs;\n };\n GridOptionsWrapper.prototype.getSortingOrder = function () {\n return this.gridOptions.sortingOrder;\n };\n GridOptionsWrapper.prototype.getAlignedGrids = function () {\n return this.gridOptions.alignedGrids;\n };\n GridOptionsWrapper.prototype.isMasterDetail = function () {\n var masterDetail = isTrue(this.gridOptions.masterDetail);\n if (masterDetail) {\n return ModuleRegistry.assertRegistered(ModuleNames.MasterDetailModule, 'masterDetail');\n }\n else {\n return false;\n }\n };\n GridOptionsWrapper.prototype.isKeepDetailRows = function () {\n return isTrue(this.gridOptions.keepDetailRows);\n };\n GridOptionsWrapper.prototype.getKeepDetailRowsCount = function () {\n if (this.gridOptions.keepDetailRowsCount > 0) {\n return this.gridOptions.keepDetailRowsCount;\n }\n return DEFAULT_KEEP_DETAIL_ROW_COUNT;\n };\n GridOptionsWrapper.prototype.getIsRowMasterFunc = function () {\n return this.gridOptions.isRowMaster;\n };\n GridOptionsWrapper.prototype.getIsRowSelectableFunc = function () {\n return this.gridOptions.isRowSelectable;\n };\n GridOptionsWrapper.prototype.getGroupRowRendererParams = function () {\n return this.gridOptions.groupRowRendererParams;\n };\n GridOptionsWrapper.prototype.getOverlayLoadingTemplate = function () {\n return this.gridOptions.overlayLoadingTemplate;\n };\n GridOptionsWrapper.prototype.getOverlayNoRowsTemplate = function () {\n return this.gridOptions.overlayNoRowsTemplate;\n };\n GridOptionsWrapper.prototype.isSuppressAutoSize = function () {\n return isTrue(this.gridOptions.suppressAutoSize);\n };\n GridOptionsWrapper.prototype.isEnableCellTextSelection = function () {\n return isTrue(this.gridOptions.enableCellTextSelection);\n };\n GridOptionsWrapper.prototype.isSuppressParentsInRowNodes = function () {\n return isTrue(this.gridOptions.suppressParentsInRowNodes);\n };\n GridOptionsWrapper.prototype.isFunctionsReadOnly = function () {\n return isTrue(this.gridOptions.functionsReadOnly);\n };\n GridOptionsWrapper.prototype.isFloatingFilter = function () {\n return this.gridOptions.floatingFilter;\n };\n GridOptionsWrapper.prototype.isEnableCellTextSelect = function () {\n return isTrue(this.gridOptions.enableCellTextSelection);\n };\n GridOptionsWrapper.prototype.isEnableOldSetFilterModel = function () {\n return isTrue(this.gridOptions.enableOldSetFilterModel);\n };\n GridOptionsWrapper.prototype.getDefaultColDef = function () {\n return this.gridOptions.defaultColDef;\n };\n GridOptionsWrapper.prototype.getDefaultColGroupDef = function () {\n return this.gridOptions.defaultColGroupDef;\n };\n GridOptionsWrapper.prototype.getDefaultExportParams = function () {\n return this.gridOptions.defaultExportParams;\n };\n GridOptionsWrapper.prototype.isSuppressCsvExport = function () {\n return isTrue(this.gridOptions.suppressCsvExport);\n };\n GridOptionsWrapper.prototype.isAllowShowChangeAfterFilter = function () {\n return isTrue(this.gridOptions.allowShowChangeAfterFilter);\n };\n GridOptionsWrapper.prototype.isSuppressExcelExport = function () {\n return isTrue(this.gridOptions.suppressExcelExport);\n };\n GridOptionsWrapper.prototype.isSuppressMakeColumnVisibleAfterUnGroup = function () {\n return isTrue(this.gridOptions.suppressMakeColumnVisibleAfterUnGroup);\n };\n GridOptionsWrapper.prototype.getNodeChildDetailsFunc = function () {\n return this.gridOptions.getNodeChildDetails;\n };\n GridOptionsWrapper.prototype.getDataPathFunc = function () {\n return this.gridOptions.getDataPath;\n };\n GridOptionsWrapper.prototype.getIsServerSideGroupFunc = function () {\n return this.gridOptions.isServerSideGroup;\n };\n GridOptionsWrapper.prototype.getServerSideGroupKeyFunc = function () {\n return this.gridOptions.getServerSideGroupKey;\n };\n GridOptionsWrapper.prototype.getGroupRowAggNodesFunc = function () {\n return this.gridOptions.groupRowAggNodes;\n };\n GridOptionsWrapper.prototype.getContextMenuItemsFunc = function () {\n return this.gridOptions.getContextMenuItems;\n };\n GridOptionsWrapper.prototype.getMainMenuItemsFunc = function () {\n return this.gridOptions.getMainMenuItems;\n };\n GridOptionsWrapper.prototype.getChartToolbarItemsFunc = function () {\n return this.gridOptions.getChartToolbarItems;\n };\n GridOptionsWrapper.prototype.getRowNodeIdFunc = function () {\n return this.gridOptions.getRowNodeId;\n };\n GridOptionsWrapper.prototype.getNavigateToNextCellFunc = function () {\n return this.gridOptions.navigateToNextCell;\n };\n GridOptionsWrapper.prototype.getTabToNextCellFunc = function () {\n return this.gridOptions.tabToNextCell;\n };\n GridOptionsWrapper.prototype.isTreeData = function () {\n var usingTreeData = isTrue(this.gridOptions.treeData);\n if (usingTreeData) {\n return ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Tree Data');\n }\n else {\n return false;\n }\n };\n GridOptionsWrapper.prototype.isValueCache = function () {\n return isTrue(this.gridOptions.valueCache);\n };\n GridOptionsWrapper.prototype.isValueCacheNeverExpires = function () {\n return isTrue(this.gridOptions.valueCacheNeverExpires);\n };\n GridOptionsWrapper.prototype.isDeltaSort = function () {\n return isTrue(this.gridOptions.deltaSort);\n };\n GridOptionsWrapper.prototype.isAggregateOnlyChangedColumns = function () {\n return isTrue(this.gridOptions.aggregateOnlyChangedColumns);\n };\n GridOptionsWrapper.prototype.getProcessSecondaryColDefFunc = function () {\n return this.gridOptions.processSecondaryColDef;\n };\n GridOptionsWrapper.prototype.getProcessSecondaryColGroupDefFunc = function () {\n return this.gridOptions.processSecondaryColGroupDef;\n };\n GridOptionsWrapper.prototype.getSendToClipboardFunc = function () {\n return this.gridOptions.sendToClipboard;\n };\n GridOptionsWrapper.prototype.getProcessRowPostCreateFunc = function () {\n return this.gridOptions.processRowPostCreate;\n };\n GridOptionsWrapper.prototype.getProcessCellForClipboardFunc = function () {\n return this.gridOptions.processCellForClipboard;\n };\n GridOptionsWrapper.prototype.getProcessHeaderForClipboardFunc = function () {\n return this.gridOptions.processHeaderForClipboard;\n };\n GridOptionsWrapper.prototype.getProcessCellFromClipboardFunc = function () {\n return this.gridOptions.processCellFromClipboard;\n };\n GridOptionsWrapper.prototype.getViewportRowModelPageSize = function () {\n return oneOrGreater(this.gridOptions.viewportRowModelPageSize, DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE);\n };\n GridOptionsWrapper.prototype.getViewportRowModelBufferSize = function () {\n return zeroOrGreater(this.gridOptions.viewportRowModelBufferSize, DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE);\n };\n // public getCellRenderers(): {[key: string]: {new(): ICellRenderer} | ICellRendererFunc} { return this.gridOptions.cellRenderers; }\n // public getCellEditors(): {[key: string]: {new(): ICellEditor}} { return this.gridOptions.cellEditors; }\n GridOptionsWrapper.prototype.isServerSideSortingAlwaysResets = function () {\n return isTrue(this.gridOptions.serverSideSortingAlwaysResets);\n };\n GridOptionsWrapper.prototype.getPostSortFunc = function () {\n return this.gridOptions.postSort;\n };\n GridOptionsWrapper.prototype.getProcessChartOptionsFunc = function () {\n return this.gridOptions.processChartOptions;\n };\n GridOptionsWrapper.prototype.getClipboardDeliminator = function () {\n return _.exists(this.gridOptions.clipboardDeliminator) ? this.gridOptions.clipboardDeliminator : '\\t';\n };\n GridOptionsWrapper.prototype.setProperty = function (key, value) {\n var gridOptionsNoType = this.gridOptions;\n var previousValue = gridOptionsNoType[key];\n if (previousValue !== value) {\n gridOptionsNoType[key] = value;\n var event_1 = {\n type: key,\n currentValue: value,\n previousValue: previousValue\n };\n this.propertyEventService.dispatchEvent(event_1);\n }\n };\n // this logic is repeated in lots of places. any element that had different CSS\n // dependent on the layout needs to have the layout class added ot it.\n GridOptionsWrapper.prototype.addLayoutElement = function (element) {\n this.layoutElements.push(element);\n this.updateLayoutClasses();\n };\n GridOptionsWrapper.prototype.updateLayoutClasses = function () {\n var domLayout = this.getDomLayout();\n var domLayoutAutoHeight = domLayout === Constants.DOM_LAYOUT_AUTO_HEIGHT;\n var domLayoutPrint = domLayout === Constants.DOM_LAYOUT_PRINT;\n var domLayoutNormal = domLayout === Constants.DOM_LAYOUT_NORMAL;\n this.layoutElements.forEach(function (e) {\n _.addOrRemoveCssClass(e, 'ag-layout-auto-height', domLayoutAutoHeight);\n _.addOrRemoveCssClass(e, 'ag-layout-normal', domLayoutNormal);\n _.addOrRemoveCssClass(e, 'ag-layout-print', domLayoutPrint);\n });\n };\n GridOptionsWrapper.prototype.addEventListener = function (key, listener) {\n GridOptionsWrapper_1.checkEventDeprecation(key);\n this.propertyEventService.addEventListener(key, listener);\n };\n GridOptionsWrapper.checkEventDeprecation = function (eventName) {\n if (eventName === 'floatingRowDataChanged') {\n console.warn('ag-Grid: floatingRowDataChanged is now called pinnedRowDataChanged');\n }\n };\n GridOptionsWrapper.prototype.removeEventListener = function (key, listener) {\n this.propertyEventService.removeEventListener(key, listener);\n };\n GridOptionsWrapper.prototype.isSkipHeaderOnAutoSize = function () {\n return !!this.gridOptions.skipHeaderOnAutoSize;\n };\n GridOptionsWrapper.prototype.getAutoSizePadding = function () {\n return this.gridOptions.autoSizePadding && this.gridOptions.autoSizePadding > 0 ? this.gridOptions.autoSizePadding : 20;\n };\n // properties\n GridOptionsWrapper.prototype.getHeaderHeight = function () {\n if (typeof this.gridOptions.headerHeight === 'number') {\n return this.gridOptions.headerHeight;\n }\n return this.specialForNewMaterial(25, 'headerHeight');\n };\n GridOptionsWrapper.prototype.getFloatingFiltersHeight = function () {\n if (typeof this.gridOptions.floatingFiltersHeight === 'number') {\n return this.gridOptions.floatingFiltersHeight;\n }\n return this.specialForNewMaterial(25, 'headerHeight');\n };\n GridOptionsWrapper.prototype.getGroupHeaderHeight = function () {\n if (typeof this.gridOptions.groupHeaderHeight === 'number') {\n return this.gridOptions.groupHeaderHeight;\n }\n return this.getHeaderHeight();\n };\n GridOptionsWrapper.prototype.getPivotHeaderHeight = function () {\n if (typeof this.gridOptions.pivotHeaderHeight === 'number') {\n return this.gridOptions.pivotHeaderHeight;\n }\n return this.getHeaderHeight();\n };\n GridOptionsWrapper.prototype.getPivotGroupHeaderHeight = function () {\n if (typeof this.gridOptions.pivotGroupHeaderHeight === 'number') {\n return this.gridOptions.pivotGroupHeaderHeight;\n }\n return this.getGroupHeaderHeight();\n };\n GridOptionsWrapper.prototype.isExternalFilterPresent = function () {\n if (typeof this.gridOptions.isExternalFilterPresent === 'function') {\n return this.gridOptions.isExternalFilterPresent();\n }\n return false;\n };\n GridOptionsWrapper.prototype.doesExternalFilterPass = function (node) {\n if (typeof this.gridOptions.doesExternalFilterPass === 'function') {\n return this.gridOptions.doesExternalFilterPass(node);\n }\n return false;\n };\n GridOptionsWrapper.prototype.getDocument = function () {\n // if user is providing document, we use the users one,\n // otherwise we use the document on the global namespace.\n var result = null;\n if (this.gridOptions.getDocument && _.exists(this.gridOptions.getDocument)) {\n result = this.gridOptions.getDocument();\n }\n if (result && _.exists(result)) {\n return result;\n }\n return document;\n };\n GridOptionsWrapper.prototype.getMinColWidth = function () {\n if (this.gridOptions.minColWidth && this.gridOptions.minColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH) {\n return this.gridOptions.minColWidth;\n }\n return GridOptionsWrapper_1.MIN_COL_WIDTH;\n };\n GridOptionsWrapper.prototype.getMaxColWidth = function () {\n if (this.gridOptions.maxColWidth && this.gridOptions.maxColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH) {\n return this.gridOptions.maxColWidth;\n }\n return null;\n };\n GridOptionsWrapper.prototype.getColWidth = function () {\n if (typeof this.gridOptions.colWidth !== 'number' || this.gridOptions.colWidth < GridOptionsWrapper_1.MIN_COL_WIDTH) {\n return 200;\n }\n return this.gridOptions.colWidth;\n };\n GridOptionsWrapper.prototype.getRowBuffer = function () {\n var rowBuffer = this.gridOptions.rowBuffer;\n if (typeof rowBuffer === 'number') {\n if (rowBuffer < 0) {\n _.doOnce(function () { return console.warn(\"ag-Grid: rowBuffer should not be negative\"); }, 'warn rowBuffer negative');\n this.gridOptions.rowBuffer = rowBuffer = 0;\n }\n }\n else {\n rowBuffer = Constants.ROW_BUFFER_SIZE;\n }\n return rowBuffer;\n };\n GridOptionsWrapper.prototype.getRowBufferInPixels = function () {\n var rowsToBuffer = this.getRowBuffer();\n var defaultRowHeight = this.getRowHeightAsNumber();\n return rowsToBuffer * defaultRowHeight;\n };\n // the user might be using some non-standard scrollbar, eg a scrollbar that has zero\n // width and overlays (like the Safari scrollbar, but presented in Chrome). so we\n // allow the user to provide the scroll width before we work it out.\n GridOptionsWrapper.prototype.getScrollbarWidth = function () {\n if (this.scrollWidth == null) {\n var useGridOptions = typeof this.gridOptions.scrollbarWidth === 'number' && this.gridOptions.scrollbarWidth >= 0;\n this.scrollWidth = useGridOptions ? this.gridOptions.scrollbarWidth : _.getScrollbarWidth();\n }\n return this.scrollWidth;\n };\n GridOptionsWrapper.prototype.checkForDeprecated = function () {\n var _this = this;\n // casting to generic object, so typescript compiles even though\n // we are looking for attributes that don't exist\n var options = this.gridOptions;\n if (options.suppressUnSort) {\n console.warn('ag-grid: as of v1.12.4 suppressUnSort is not used. Please use sortingOrder instead.');\n }\n if (options.suppressDescSort) {\n console.warn('ag-grid: as of v1.12.4 suppressDescSort is not used. Please use sortingOrder instead.');\n }\n if (options.groupAggFields) {\n console.warn('ag-grid: as of v3 groupAggFields is not used. Please add appropriate agg fields to your columns.');\n }\n if (options.groupHidePivotColumns) {\n console.warn('ag-grid: as of v3 groupHidePivotColumns is not used as pivot columns are now called rowGroup columns. Please refer to the documentation');\n }\n if (options.groupKeys) {\n console.warn('ag-grid: as of v3 groupKeys is not used. You need to set rowGroupIndex on the columns to group. Please refer to the documentation');\n }\n if (typeof options.groupDefaultExpanded === 'boolean') {\n console.warn('ag-grid: groupDefaultExpanded can no longer be boolean. for groupDefaultExpanded=true, use groupDefaultExpanded=9999 instead, to expand all the groups');\n }\n if (options.onRowDeselected || options.rowDeselected) {\n console.warn('ag-grid: since version 3.4 event rowDeselected no longer exists, please check the docs');\n }\n if (options.rowsAlreadyGrouped) {\n console.warn('ag-grid: since version 3.4 rowsAlreadyGrouped no longer exists, please use getNodeChildDetails() instead');\n }\n if (options.groupAggFunction) {\n console.warn('ag-grid: since version 4.3.x groupAggFunction is now called groupRowAggNodes');\n }\n if (options.checkboxSelection) {\n console.warn('ag-grid: since version 8.0.x checkboxSelection is not supported as a grid option. ' + 'If you want this on all columns, use defaultColDef instead and set it there');\n }\n if (options.paginationInitialRowCount) {\n console.warn('ag-grid: since version 9.0.x paginationInitialRowCount is now called infiniteInitialRowCount');\n }\n if (options.infinitePageSize) {\n console.warn('ag-grid: since version 9.0.x infinitePageSize is now called cacheBlockSize');\n }\n if (options.infiniteBlockSize) {\n console.warn('ag-grid: since version 10.0.x infiniteBlockSize is now called cacheBlockSize');\n }\n if (options.maxPagesInCache) {\n console.warn('ag-grid: since version 10.0.x maxPagesInCache is now called maxBlocksInCache');\n }\n if (options.paginationOverflowSize) {\n console.warn('ag-grid: since version 10.0.x paginationOverflowSize is now called cacheOverflowSize');\n }\n // if (options.forPrint) {\n // console.warn('ag-grid: since version 10.1.x, use property domLayout=\"forPrint\" instead of forPrint=true');\n // }\n if (options.suppressMenuFilterPanel) {\n console.warn(\"ag-grid: since version 11.0.x, use property colDef.menuTabs=['generalMenuTab','columnsMenuTab'] instead of suppressMenuFilterPanel=true\");\n }\n if (options.suppressMenuMainPanel) {\n console.warn(\"ag-grid: since version 11.0.x, use property colDef.menuTabs=['filterMenuTab','columnsMenuTab'] instead of suppressMenuMainPanel=true\");\n }\n if (options.suppressMenuColumnPanel) {\n console.warn(\"ag-grid: since version 11.0.x, use property colDef.menuTabs=['generalMenuTab','filterMenuTab'] instead of suppressMenuColumnPanel=true\");\n }\n if (options.suppressUseColIdForGroups) {\n console.warn(\"ag-grid: since version 11.0.x, this is not in use anymore. You should be able to remove it from your definition\");\n }\n if (options.groupSuppressRow) {\n console.warn(\"ag-grid: since version 18.2.x, 'groupSuppressRow' should not be used anymore. Instead remove row groups and perform custom sorting.\");\n }\n if (options.groupColumnDef) {\n console.warn(\"ag-grid: since version 11.0.x, groupColumnDef has been renamed, this property is now called autoGroupColumnDef. Please change your configuration accordingly\");\n }\n if (options.slaveGrids) {\n console.warn(\"ag-grid: since version 12.x, slaveGrids has been renamed, this property is now called alignedGrids. Please change your configuration accordingly\");\n }\n if (options.floatingTopRowData) {\n console.warn(\"ag-grid: since version 12.x, floatingTopRowData is now called pinnedTopRowData\");\n }\n if (options.floatingBottomRowData) {\n console.warn(\"ag-grid: since version 12.x, floatingBottomRowData is now called pinnedBottomRowData\");\n }\n if (options.paginationStartPage) {\n console.warn(\"ag-grid: since version 12.x, paginationStartPage is gone, please call api.paginationGoToPage(\" + options.paginationStartPage + \") instead.\");\n }\n if (options.getHeaderCellTemplate) {\n console.warn(\"ag-grid: since version 15.x, getHeaderCellTemplate is gone, please check the header documentation on how to set header templates.\");\n }\n if (options.headerCellTemplate) {\n console.warn(\"ag-grid: since version 15.x, headerCellTemplate is gone, please check the header documentation on how to set header templates.\");\n }\n if (options.headerCellRenderer) {\n console.warn(\"ag-grid: since version 15.x, headerCellRenderer is gone, please check the header documentation on how to set header templates.\");\n }\n if (options.angularCompileHeaders) {\n console.warn(\"ag-grid: since version 15.x, angularCompileHeaders is gone, please see the getting started for Angular 1 docs to see how to do headers in Angular 1.x.\");\n }\n if (options.pivotTotals) {\n console.warn(\"ag-grid: since version 18.x, pivotTotals has been removed, instead if using pivotTotals, set pivotColumnGroupTotals='before'|'after'.\");\n options.pivotColumnGroupTotals = 'before';\n }\n if (options.rowModelType === 'inMemory') {\n console.warn(\"ag-grid: since version 18.x, The In Memory Row Model has been renamed to the Client Side Row Model, set rowModelType='clientSide' instead.\");\n options.rowModelType = 'clientSide';\n }\n if (options.rowModelType === 'enterprise') {\n console.warn(\"ag-grid: since version 18.x, The Enterprise Row Model has been renamed to the Server Side Row Model, set rowModelType='serverSide' instead.\");\n options.rowModelType = 'serverSide';\n }\n if (options.layoutInterval) {\n console.warn(\"ag-grid: since version 18.x, layoutInterval is no longer a property. This is because the grid now uses CSS Flex for layout.\");\n }\n if (options.gridAutoHeight) {\n console.warn(\"ag-grid: since version 19.x, gridAutoHeight is gone, please use domLayout=autoHeight instead\");\n options.domLayout = 'autoHeight';\n }\n if (options.showToolPanel === true) {\n console.warn(\"ag-grid: since version 19.x, showToolPanel is gone, please specify toolPanel components. See https://www.ag-grid.com/javascript-grid-tool-panel/\");\n options.showToolPanel = undefined;\n options.sideBar = options.sideBar || true;\n }\n if (options.showToolPanel === false) {\n console.warn(\"ag-grid: since version 19.x, showToolPanel is gone, please specify toolPanel components. See https://www.ag-grid.com/javascript-grid-tool-panel/\");\n options.showToolPanel = undefined;\n options.sideBar = options.sideBar || false;\n }\n var oldToolPanelProperties = {\n toolPanelSuppressRowGroups: 'suppressRowGroups',\n toolPanelSuppressValues: 'suppressValues',\n toolPanelSuppressPivots: 'suppressPivots',\n toolPanelSuppressPivotMode: 'suppressPivotMode',\n toolPanelSuppressColumnFilter: 'suppressColumnFilter',\n toolPanelSuppressColumnSelectAll: 'suppressColumnSelectAll',\n toolPanelSuppressSideButtons: 'suppressSideButtons',\n toolPanelSuppressColumnExpandAll: 'suppressColumnExpandAll',\n contractColumnSelection: 'contractColumnSelection'\n };\n var toolPanelColumnsCompProps = {};\n Object.keys(oldToolPanelProperties).forEach(function (key) {\n var translation = oldToolPanelProperties[key];\n var value = _this.gridOptions[key];\n if (value !== undefined) {\n if (key === 'toolPanelSuppressSideButtons') {\n console.warn('ag-grid: since v19.0 toolPanelSuppressSideButtons has been completely removed. See https://www.ag-grid.com/javascript-grid-tool-panel/');\n return;\n }\n console.warn(\"ag-grid: since v19.0 gridOptions.\" + key + \" is deprecated, please use gridOptions.sideBar.toolPanel[columnsIndex].componentParams.\" + translation);\n toolPanelColumnsCompProps[translation] = value;\n }\n });\n if (Object.keys(toolPanelColumnsCompProps).length > 0 && !_.exists(options.sideBar)) {\n console.warn(\"ag-grid: since version 19.x, sideBar is mandatory if using toolPanel related properties. See https://www.ag-grid.com/javascript-grid-tool-panel/\");\n options.sideBar = true;\n }\n if (options.sideBar != null) {\n options.sideBar = SideBarDefParser.parse(options.sideBar);\n }\n var sideBarDef = this.gridOptions.sideBar;\n if (Object.keys(toolPanelColumnsCompProps).length > 0 && sideBarDef && sideBarDef.toolPanels) {\n var columnsDef = sideBarDef.toolPanels.filter(function (it) { return it.id === 'columns'; });\n if (columnsDef.length === 1) {\n _.mergeDeep(columnsDef[0], {\n componentParams: toolPanelColumnsCompProps\n });\n }\n }\n if (options.enableStatusBar) {\n console.warn(\"ag-grid: since version 19.x, enableStatusBar is gone, please specify statusBar components\");\n options.statusBar = options.statusBar || {\n components: [{ component: 'agAggregationComponent' }]\n };\n }\n if (options.alwaysShowStatusBar) {\n console.warn(\"ag-grid: since version 19.x, alwaysShowStatusBar is gone. Please specify a min-height on the ag-status-bar css class, eg .ag-status-bar {min-height: 35px; }\");\n }\n if (options.enableServerSideSorting || options.enableSorting) {\n console.warn(\"ag-Grid: since v20, grid options enableSorting and enableServerSideSorting are gone. Instead set sortable=true on the column definition for the columns sorting are allowed on. To migrate from gridOption.enableSorting=true, set gridOptions.defaultColDef.sortable=true\");\n if (!options.defaultColDef) {\n options.defaultColDef = {};\n }\n if (!options.defaultColDef.sortable) {\n options.defaultColDef.sortable = true;\n }\n }\n if (options.enableFilter || options.enableServerSideFilter) {\n console.warn(\"ag-Grid: since v20, grid options enableFilter and enableServerSideFilter are gone. Instead set filter=true (if not already specifying a specific filter) on the column definition for the columns filtering is allowed on. To migrate from gridOptions.enableFilter=true, set gridOptions.defaultColDef.filter=true. If you are explicitly setting specific filters for each column (ie colDef.filter is already set) the you don't need to do anything.\");\n if (!options.defaultColDef) {\n options.defaultColDef = {};\n }\n if (!options.defaultColDef.filter) {\n options.defaultColDef.filter = true;\n }\n }\n if (options.enableColResize) {\n console.warn(\"ag-Grid: since v20, grid options enableColResize is gone. Instead set resizable=true on the column definition for the columns resizing are allowed on. To migrate from gridOption.enableColResize=true, set gridOptions.defaultColDef.resizable=true\");\n if (!options.defaultColDef) {\n options.defaultColDef = {};\n }\n if (!options.defaultColDef.resizable) {\n options.defaultColDef.resizable = true;\n }\n }\n if (options.deprecatedEmbedFullWidthRows) {\n console.warn(\"ag-Grid: since v21.2, deprecatedEmbedFullWidthRows has been replaced with embedFullWidthRows.\");\n }\n if (options.suppressTabbing) {\n console.warn(\"ag-Grid: since v20.1, suppressTabbing is replaced with the more powerful grid callback suppressKeyboardEvent(params) which can suppress any keyboard event including tabbing.\");\n }\n if (options.doesDataFlower) {\n console.warn('ag-Grid: since v21.1, doesDataFlower is deprecated. Master/Detail is the new way for showing child data for a row and was introduced over a year ago. Please migrate your code to use master/detail instead.');\n }\n if (options.enableOldSetFilterModel) {\n console.warn('ag-Grid: since v22.x, enableOldSetFilterModel is deprecated. Please move to the new Set Filter Model as the old one may not be supported in v23 onwards.');\n }\n };\n GridOptionsWrapper.prototype.checkForViolations = function () {\n if (this.isTreeData()) {\n this.treeDataViolations();\n }\n };\n GridOptionsWrapper.prototype.treeDataViolations = function () {\n if (this.isRowModelDefault()) {\n if (_.missing(this.getDataPathFunc())) {\n console.warn('ag-Grid: property usingTreeData=true with rowModel=clientSide, but you did not ' +\n 'provide getDataPath function, please provide getDataPath function if using tree data.');\n }\n }\n if (this.isRowModelServerSide()) {\n if (_.missing(this.getIsServerSideGroupFunc())) {\n console.warn('ag-Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +\n 'provide isServerSideGroup function, please provide isServerSideGroup function if using tree data.');\n }\n if (_.missing(this.getServerSideGroupKeyFunc())) {\n console.warn('ag-Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +\n 'provide getServerSideGroupKey function, please provide getServerSideGroupKey function if using tree data.');\n }\n }\n };\n GridOptionsWrapper.prototype.getLocaleTextFunc = function () {\n if (this.gridOptions.localeTextFunc) {\n return this.gridOptions.localeTextFunc;\n }\n var that = this;\n return function (key, defaultValue) {\n var localeText = that.gridOptions.localeText;\n if (localeText && localeText[key]) {\n return localeText[key];\n }\n return defaultValue;\n };\n };\n // responsible for calling the onXXX functions on gridOptions\n GridOptionsWrapper.prototype.globalEventHandler = function (eventName, event) {\n var callbackMethodName = ComponentUtil.getCallbackForEvent(eventName);\n if (typeof this.gridOptions[callbackMethodName] === 'function') {\n this.gridOptions[callbackMethodName](event);\n }\n };\n // we don't allow dynamic row height for virtual paging\n GridOptionsWrapper.prototype.getRowHeightAsNumber = function () {\n if (!this.gridOptions.rowHeight || _.missing(this.gridOptions.rowHeight)) {\n return this.getDefaultRowHeight();\n }\n else if (this.gridOptions.rowHeight && this.isNumeric(this.gridOptions.rowHeight)) {\n return this.gridOptions.rowHeight;\n }\n console.warn('ag-Grid row height must be a number if not using standard row model');\n return this.getDefaultRowHeight();\n };\n GridOptionsWrapper.prototype.getRowHeightForNode = function (rowNode, allowEstimate) {\n // check the function first, in case use set both function and\n // number, when using virtual pagination then function can be\n // used for pinned rows and the number for the body rows.\n if (allowEstimate === void 0) { allowEstimate = false; }\n if (typeof this.gridOptions.getRowHeight === 'function') {\n if (allowEstimate) {\n return { height: this.getDefaultRowHeight(), estimated: true };\n }\n var params = {\n node: rowNode,\n data: rowNode.data,\n api: this.gridOptions.api,\n context: this.gridOptions.context\n };\n return { height: this.gridOptions.getRowHeight(params), estimated: false };\n }\n else if (rowNode.detail && this.isMasterDetail()) {\n if (this.isNumeric(this.gridOptions.detailRowHeight)) {\n return { height: this.gridOptions.detailRowHeight, estimated: false };\n }\n return { height: DEFAULT_DETAIL_ROW_HEIGHT, estimated: false };\n }\n var defaultRowHeight = this.getDefaultRowHeight();\n var rowHeight = this.gridOptions.rowHeight && this.isNumeric(this.gridOptions.rowHeight) ? this.gridOptions.rowHeight : defaultRowHeight;\n var minRowHeight = Math.min(defaultRowHeight, rowHeight);\n if (this.columnController.isAutoRowHeightActive()) {\n if (allowEstimate) {\n return { height: rowHeight, estimated: true };\n }\n var autoHeight = this.autoHeightCalculator.getPreferredHeightForRow(rowNode);\n // never return less than the default row height - covers when auto height\n // cells are blank.\n return { height: Math.max(autoHeight, minRowHeight), estimated: false };\n }\n return { height: rowHeight, estimated: false };\n };\n GridOptionsWrapper.prototype.isDynamicRowHeight = function () {\n return typeof this.gridOptions.getRowHeight === 'function';\n };\n GridOptionsWrapper.prototype.getVirtualItemHeight = function () {\n return this.specialForNewMaterial(20, 'virtualItemHeight');\n };\n GridOptionsWrapper.prototype.useNativeCheckboxes = function () {\n return this.environment.useNativeCheckboxes();\n };\n GridOptionsWrapper.prototype.chartMenuPanelWidth = function () {\n return this.environment.chartMenuPanelWidth();\n };\n GridOptionsWrapper.prototype.isNumeric = function (value) {\n return !isNaN(value) && typeof value === 'number';\n };\n // Material data table has strict guidelines about whitespace, and these values are different than the ones\n // ag-grid uses by default. We override the default ones for the sake of making it better out of the box\n GridOptionsWrapper.prototype.specialForNewMaterial = function (defaultValue, sassVariableName) {\n var theme = this.environment.getTheme().theme;\n if (theme && theme.indexOf('ag-theme') === 0) {\n return this.environment.getSassVariable(theme, sassVariableName);\n }\n return defaultValue;\n };\n GridOptionsWrapper.prototype.getDefaultRowHeight = function () {\n return this.specialForNewMaterial(DEFAULT_ROW_HEIGHT, 'rowHeight');\n };\n var GridOptionsWrapper_1;\n GridOptionsWrapper.MIN_COL_WIDTH = 10;\n GridOptionsWrapper.PROP_HEADER_HEIGHT = 'headerHeight';\n GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN = 'groupRemoveSingleChildren';\n GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN = 'groupRemoveLowestSingleChildren';\n GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT = 'pivotHeaderHeight';\n GridOptionsWrapper.PROP_SUPPRESS_CLIPBOARD_PASTE = 'suppressClipboardPaste';\n GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT = 'groupHeaderHeight';\n GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT = 'pivotGroupHeaderHeight';\n GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT = 'floatingFiltersHeight';\n GridOptionsWrapper.PROP_SUPPRESS_ROW_DRAG = 'suppressRowDrag';\n GridOptionsWrapper.PROP_POPUP_PARENT = 'popupParent';\n GridOptionsWrapper.PROP_DOM_LAYOUT = 'domLayout';\n __decorate([\n Autowired('gridOptions')\n ], GridOptionsWrapper.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('columnController')\n ], GridOptionsWrapper.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], GridOptionsWrapper.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], GridOptionsWrapper.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], GridOptionsWrapper.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('environment')\n ], GridOptionsWrapper.prototype, \"environment\", void 0);\n __decorate([\n Autowired('autoHeightCalculator')\n ], GridOptionsWrapper.prototype, \"autoHeightCalculator\", void 0);\n __decorate([\n Autowired('context')\n ], GridOptionsWrapper.prototype, \"context\", void 0);\n __decorate([\n __param(0, Qualifier('gridApi')), __param(1, Qualifier('columnApi'))\n ], GridOptionsWrapper.prototype, \"agWire\", null);\n __decorate([\n PreDestroy\n ], GridOptionsWrapper.prototype, \"destroy\", null);\n __decorate([\n PostConstruct\n ], GridOptionsWrapper.prototype, \"init\", null);\n GridOptionsWrapper = GridOptionsWrapper_1 = __decorate([\n Bean('gridOptionsWrapper')\n ], GridOptionsWrapper);\n return GridOptionsWrapper;\n}());\nexport { GridOptionsWrapper };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\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 __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Bean } from \"./context/context\";\nimport { Qualifier } from \"./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, Qualifier('gridOptionsWrapper'))\n ], LoggerFactory.prototype, \"setBeans\", null);\n LoggerFactory = __decorate([\n Bean('loggerFactory')\n ], LoggerFactory);\n return LoggerFactory;\n}());\nexport { 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}());\nexport { Logger };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../../widgets/component\";\nimport { Column } from \"../../entities/column\";\nimport { ColumnGroup } from \"../../entities/columnGroup\";\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { CssClassApplier } from \"../cssClassApplier\";\nimport { DragSourceType } from \"../../dragAndDrop/dragAndDropService\";\nimport { SetLeftFeature } from \"../../rendering/features/setLeftFeature\";\nimport { HoverFeature } from \"../hoverFeature\";\nimport { _ } from \"../../utils\";\nimport { Constants } from \"../../constants\";\nvar HeaderGroupWrapperComp = /** @class */ (function (_super) {\n __extends(HeaderGroupWrapperComp, _super);\n function HeaderGroupWrapperComp(columnGroup, dragSourceDropTarget, pinned) {\n var _this = _super.call(this, HeaderGroupWrapperComp.TEMPLATE) || this;\n // the children can change, we keep destroy functions related to listening to the children here\n _this.childColumnsDestroyFuncs = [];\n _this.columnGroup = columnGroup;\n _this.dragSourceDropTarget = dragSourceDropTarget;\n _this.pinned = pinned;\n return _this;\n }\n HeaderGroupWrapperComp.prototype.postConstruct = function () {\n CssClassApplier.addHeaderClassesFromColDef(this.getComponentHolder(), this.getGui(), this.gridOptionsWrapper, null, this.columnGroup);\n var displayName = this.columnController.getDisplayNameForColumnGroup(this.columnGroup, 'header');\n this.appendHeaderGroupComp(displayName);\n this.setupResize();\n this.addClasses();\n this.setupWidth();\n this.addAttributes();\n this.setupMovingCss();\n this.setupTooltip();\n this.addFeature(new HoverFeature(this.columnGroup.getOriginalColumnGroup().getLeafColumns(), this.getGui()));\n var setLeftFeature = new SetLeftFeature(this.columnGroup, this.getGui(), this.beans);\n setLeftFeature.init();\n this.addDestroyFunc(setLeftFeature.destroy.bind(setLeftFeature));\n };\n HeaderGroupWrapperComp.prototype.setupMovingCss = function () {\n var _this = this;\n var originalColumnGroup = this.columnGroup.getOriginalColumnGroup();\n var leafColumns = originalColumnGroup.getLeafColumns();\n leafColumns.forEach(function (col) {\n _this.addDestroyableEventListener(col, Column.EVENT_MOVING_CHANGED, _this.onColumnMovingChanged.bind(_this));\n });\n this.onColumnMovingChanged();\n };\n HeaderGroupWrapperComp.prototype.getColumn = function () {\n return this.columnGroup;\n };\n HeaderGroupWrapperComp.prototype.getComponentHolder = function () {\n return this.columnGroup.getColGroupDef();\n };\n HeaderGroupWrapperComp.prototype.getTooltipText = function () {\n var colGroupDef = this.getComponentHolder();\n return colGroupDef && colGroupDef.headerTooltip;\n };\n HeaderGroupWrapperComp.prototype.setupTooltip = function () {\n var tooltipText = this.getTooltipText();\n if (tooltipText == null) {\n return;\n }\n if (this.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.getGui().setAttribute('title', tooltipText);\n }\n else {\n this.beans.tooltipManager.registerTooltip(this);\n }\n };\n HeaderGroupWrapperComp.prototype.onColumnMovingChanged = function () {\n // this function adds or removes the moving css, based on if the col is moving.\n // this is what makes the header go dark when it is been moved (gives impression to\n // user that the column was picked up).\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-moving', this.columnGroup.isMoving());\n };\n HeaderGroupWrapperComp.prototype.addAttributes = function () {\n this.getGui().setAttribute(\"col-id\", this.columnGroup.getUniqueId());\n };\n HeaderGroupWrapperComp.prototype.appendHeaderGroupComp = function (displayName) {\n var _this = this;\n var params = {\n displayName: displayName,\n columnGroup: this.columnGroup,\n setExpanded: function (expanded) {\n _this.columnController.setColumnGroupOpened(_this.columnGroup.getOriginalColumnGroup(), expanded, \"gridInitializing\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext()\n };\n if (!displayName) {\n var columnGroup = this.columnGroup;\n var leafCols = columnGroup.getLeafColumns();\n // find the top most column group that represents the same columns. so if we are dragging a group, we also\n // want to visually show the parent groups dragging for the same column set. for example imaging 5 levels\n // of grouping, with each group only containing the next group, and the last group containing three columns,\n // then when you move any group (even the lowest level group) you are in-fact moving all the groups, as all\n // the groups represent the same column set.\n while (columnGroup.getParent() && columnGroup.getParent().getLeafColumns().length === leafCols.length) {\n columnGroup = columnGroup.getParent();\n }\n var colGroupDef = columnGroup.getColGroupDef();\n if (colGroupDef) {\n displayName = colGroupDef.headerName;\n }\n if (!displayName) {\n displayName = leafCols ? this.columnController.getDisplayNameForColumn(leafCols[0], 'header', true) : '';\n }\n }\n var callback = this.afterHeaderCompCreated.bind(this, displayName);\n this.userComponentFactory.newHeaderGroupComponent(params).then(callback);\n };\n HeaderGroupWrapperComp.prototype.afterHeaderCompCreated = function (displayName, headerGroupComp) {\n this.appendChild(headerGroupComp);\n this.setupMove(headerGroupComp.getGui(), displayName);\n };\n HeaderGroupWrapperComp.prototype.addClasses = function () {\n // having different classes below allows the style to not have a bottom border\n // on the group header, if no group is specified\n // columnGroup.getColGroupDef\n var style = this.columnGroup.isPadding() ? 'no' : 'with';\n this.addCssClass(\"ag-header-group-cell-\" + style + \"-group\");\n };\n HeaderGroupWrapperComp.prototype.setupMove = function (eHeaderGroup, displayName) {\n var _this = this;\n if (!eHeaderGroup) {\n return;\n }\n if (this.isSuppressMoving()) {\n return;\n }\n var allLeafColumns = this.columnGroup.getOriginalColumnGroup().getLeafColumns();\n var dragSource = {\n type: DragSourceType.HeaderCell,\n eElement: eHeaderGroup,\n dragItemName: displayName,\n // we add in the original group leaf columns, so we move both visible and non-visible items\n getDragItem: this.getDragItemForGroup.bind(this),\n dragSourceDropTarget: this.dragSourceDropTarget,\n onDragStarted: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(true, \"uiColumnDragged\"); }); },\n onDragStopped: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(false, \"uiColumnDragged\"); }); }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n // when moving the columns, we want to move all the columns (contained within the DragItem) in this group in one go,\n // and in the order they are currently in the screen.\n HeaderGroupWrapperComp.prototype.getDragItemForGroup = function () {\n var allColumnsOriginalOrder = this.columnGroup.getOriginalColumnGroup().getLeafColumns();\n // capture visible state, used when re-entering grid to dictate which columns should be visible\n var visibleState = {};\n allColumnsOriginalOrder.forEach(function (column) { return visibleState[column.getId()] = column.isVisible(); });\n var allColumnsCurrentOrder = [];\n this.columnController.getAllDisplayedColumns().forEach(function (column) {\n if (allColumnsOriginalOrder.indexOf(column) >= 0) {\n allColumnsCurrentOrder.push(column);\n _.removeFromArray(allColumnsOriginalOrder, column);\n }\n });\n // we are left with non-visible columns, stick these in at the end\n allColumnsOriginalOrder.forEach(function (column) { return allColumnsCurrentOrder.push(column); });\n // create and return dragItem\n return {\n columns: allColumnsCurrentOrder,\n visibleState: visibleState\n };\n };\n HeaderGroupWrapperComp.prototype.isSuppressMoving = function () {\n // if any child is fixed, then don't allow moving\n var childSuppressesMoving = false;\n this.columnGroup.getLeafColumns().forEach(function (column) {\n if (column.getColDef().suppressMovable || column.getColDef().lockPosition) {\n childSuppressesMoving = true;\n }\n });\n var result = childSuppressesMoving || this.gridOptionsWrapper.isSuppressMovableColumns();\n return result;\n };\n HeaderGroupWrapperComp.prototype.setupWidth = function () {\n // we need to listen to changes in child columns, as they impact our width\n this.addListenersToChildrenColumns();\n // the children belonging to this group can change, so we need to add and remove listeners as they change\n this.addDestroyableEventListener(this.columnGroup, ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED, this.onDisplayedChildrenChanged.bind(this));\n this.onWidthChanged();\n // the child listeners are not tied to this components life-cycle, as children can get added and removed\n // to the group - hence they are on a different life-cycle. so we must make sure the existing children\n // listeners are removed when we finally get destroyed\n this.addDestroyFunc(this.destroyListenersOnChildrenColumns.bind(this));\n };\n HeaderGroupWrapperComp.prototype.onDisplayedChildrenChanged = function () {\n this.addListenersToChildrenColumns();\n this.onWidthChanged();\n };\n HeaderGroupWrapperComp.prototype.addListenersToChildrenColumns = function () {\n var _this = this;\n // first destroy any old listeners\n this.destroyListenersOnChildrenColumns();\n // now add new listeners to the new set of children\n var widthChangedListener = this.onWidthChanged.bind(this);\n this.columnGroup.getLeafColumns().forEach(function (column) {\n column.addEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n column.addEventListener(Column.EVENT_VISIBLE_CHANGED, widthChangedListener);\n _this.childColumnsDestroyFuncs.push(function () {\n column.removeEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n column.removeEventListener(Column.EVENT_VISIBLE_CHANGED, widthChangedListener);\n });\n });\n };\n HeaderGroupWrapperComp.prototype.destroyListenersOnChildrenColumns = function () {\n this.childColumnsDestroyFuncs.forEach(function (func) { return func(); });\n this.childColumnsDestroyFuncs = [];\n };\n HeaderGroupWrapperComp.prototype.onWidthChanged = function () {\n this.getGui().style.width = this.columnGroup.getActualWidth() + 'px';\n };\n HeaderGroupWrapperComp.prototype.setupResize = function () {\n var _this = this;\n this.eHeaderCellResize = this.getRefElement('agResize');\n if (!this.columnGroup.isResizable()) {\n _.removeFromParent(this.eHeaderCellResize);\n return;\n }\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.eHeaderCellResize,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this, false),\n onResizeEnd: this.onResizing.bind(this, true)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n if (!this.gridOptionsWrapper.isSuppressAutoSize()) {\n var skipHeaderOnAutoSize_1 = this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n this.eHeaderCellResize.addEventListener('dblclick', function (event) {\n // get list of all the column keys we are responsible for\n var keys = [];\n _this.columnGroup.getDisplayedLeafColumns().forEach(function (column) {\n // not all cols in the group may be participating with auto-resize\n if (!column.getColDef().suppressAutoSize) {\n keys.push(column.getColId());\n }\n });\n if (keys.length > 0) {\n _this.columnController.autoSizeColumns(keys, skipHeaderOnAutoSize_1, \"uiColumnResized\");\n }\n });\n }\n };\n HeaderGroupWrapperComp.prototype.onResizeStart = function (shiftKey) {\n var _this = this;\n var leafCols = this.columnGroup.getDisplayedLeafColumns();\n this.resizeCols = leafCols.filter(function (col) { return col.isResizable(); });\n this.resizeStartWidth = 0;\n this.resizeCols.forEach(function (col) { return _this.resizeStartWidth += col.getActualWidth(); });\n this.resizeRatios = [];\n this.resizeCols.forEach(function (col) { return _this.resizeRatios.push(col.getActualWidth() / _this.resizeStartWidth); });\n var takeFromGroup = null;\n if (shiftKey) {\n takeFromGroup = this.columnController.getDisplayedGroupAfter(this.columnGroup);\n }\n if (takeFromGroup) {\n var takeFromLeafCols = takeFromGroup.getDisplayedLeafColumns();\n this.resizeTakeFromCols = takeFromLeafCols.filter(function (col) { return col.isResizable(); });\n this.resizeTakeFromStartWidth = 0;\n this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromStartWidth += col.getActualWidth(); });\n this.resizeTakeFromRatios = [];\n this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromRatios.push(col.getActualWidth() / _this.resizeTakeFromStartWidth); });\n }\n else {\n this.resizeTakeFromCols = null;\n this.resizeTakeFromStartWidth = null;\n this.resizeTakeFromRatios = null;\n }\n _.addCssClass(this.getGui(), 'ag-column-resizing');\n };\n HeaderGroupWrapperComp.prototype.onResizing = function (finished, resizeAmount) {\n var resizeSets = [];\n var resizeAmountNormalised = this.normaliseDragChange(resizeAmount);\n resizeSets.push({\n columns: this.resizeCols,\n ratios: this.resizeRatios,\n width: this.resizeStartWidth + resizeAmountNormalised\n });\n if (this.resizeTakeFromCols) {\n resizeSets.push({\n columns: this.resizeTakeFromCols,\n ratios: this.resizeTakeFromRatios,\n width: this.resizeTakeFromStartWidth - resizeAmountNormalised\n });\n }\n this.columnController.resizeColumnSets(resizeSets, finished, 'uiColumnDragged');\n if (finished) {\n _.removeCssClass(this.getGui(), 'ag-column-resizing');\n }\n };\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderCell - should refactor out?\n HeaderGroupWrapperComp.prototype.normaliseDragChange = function (dragChange) {\n var result = dragChange;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (this.pinned !== Constants.PINNED_LEFT) {\n result *= -1;\n }\n }\n else if (this.pinned === Constants.PINNED_RIGHT) {\n // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n result *= -1;\n }\n return result;\n };\n HeaderGroupWrapperComp.TEMPLATE = '
' +\n '
' +\n '
';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HeaderGroupWrapperComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], HeaderGroupWrapperComp.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('horizontalResizeService')\n ], HeaderGroupWrapperComp.prototype, \"horizontalResizeService\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], HeaderGroupWrapperComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], HeaderGroupWrapperComp.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('gridApi')\n ], HeaderGroupWrapperComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], HeaderGroupWrapperComp.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('beans')\n ], HeaderGroupWrapperComp.prototype, \"beans\", void 0);\n __decorate([\n PostConstruct\n ], HeaderGroupWrapperComp.prototype, \"postConstruct\", null);\n return HeaderGroupWrapperComp;\n}(Component));\nexport { HeaderGroupWrapperComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../widgets/component\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { Events } from \"../events\";\nimport { HeaderWrapperComp } from \"./header/headerWrapperComp\";\nimport { HeaderGroupWrapperComp } from \"./headerGroup/headerGroupWrapperComp\";\nimport { Constants } from \"../constants\";\nimport { _ } from \"../utils\";\nimport { FloatingFilterWrapper } from \"../filter/floating/floatingFilterWrapper\";\nexport var HeaderRowType;\n(function (HeaderRowType) {\n HeaderRowType[HeaderRowType[\"COLUMN_GROUP\"] = 0] = \"COLUMN_GROUP\";\n HeaderRowType[HeaderRowType[\"COLUMN\"] = 1] = \"COLUMN\";\n HeaderRowType[HeaderRowType[\"FLOATING_FILTER\"] = 2] = \"FLOATING_FILTER\";\n})(HeaderRowType || (HeaderRowType = {}));\nvar HeaderRowComp = /** @class */ (function (_super) {\n __extends(HeaderRowComp, _super);\n function HeaderRowComp(dept, type, pinned, dropTarget) {\n var _this = _super.call(this, \"
\") || this;\n _this.headerComps = {};\n _this.dept = dept;\n _this.type = type;\n _this.pinned = pinned;\n _this.dropTarget = dropTarget;\n return _this;\n }\n HeaderRowComp.prototype.forEachHeaderElement = function (callback) {\n var _this = this;\n Object.keys(this.headerComps).forEach(function (key) {\n callback(_this.headerComps[key]);\n });\n };\n HeaderRowComp.prototype.destroy = function () {\n var idsOfAllChildren = Object.keys(this.headerComps);\n this.removeAndDestroyChildComponents(idsOfAllChildren);\n _super.prototype.destroy.call(this);\n };\n HeaderRowComp.prototype.removeAndDestroyChildComponents = function (idsToDestroy) {\n var _this = this;\n idsToDestroy.forEach(function (id) {\n var childHeaderComp = _this.headerComps[id];\n _this.getGui().removeChild(childHeaderComp.getGui());\n childHeaderComp.destroy();\n delete _this.headerComps[id];\n });\n };\n HeaderRowComp.prototype.onRowHeightChanged = function () {\n var headerRowCount = this.columnController.getHeaderRowCount();\n var sizes = [];\n var numberOfFloating = 0;\n var groupHeight;\n var headerHeight;\n if (!this.columnController.isPivotMode()) {\n if (this.gridOptionsWrapper.isFloatingFilter()) {\n headerRowCount++;\n }\n numberOfFloating = (this.gridOptionsWrapper.isFloatingFilter()) ? 1 : 0;\n groupHeight = this.gridOptionsWrapper.getGroupHeaderHeight();\n headerHeight = this.gridOptionsWrapper.getHeaderHeight();\n }\n else {\n numberOfFloating = 0;\n groupHeight = this.gridOptionsWrapper.getPivotGroupHeaderHeight();\n headerHeight = this.gridOptionsWrapper.getPivotHeaderHeight();\n }\n var numberOfNonGroups = 1 + numberOfFloating;\n var numberOfGroups = headerRowCount - numberOfNonGroups;\n for (var i = 0; i < numberOfGroups; i++) {\n sizes.push(groupHeight);\n }\n sizes.push(headerHeight);\n for (var i = 0; i < numberOfFloating; i++) {\n sizes.push(this.gridOptionsWrapper.getFloatingFiltersHeight());\n }\n var rowHeight = 0;\n for (var i = 0; i < this.dept; i++) {\n rowHeight += sizes[i];\n }\n this.getGui().style.top = rowHeight + 'px';\n this.getGui().style.height = sizes[this.dept] + 'px';\n };\n //noinspection JSUnusedLocalSymbols\n HeaderRowComp.prototype.init = function () {\n this.onRowHeightChanged();\n this.onVirtualColumnsChanged();\n this.setWidth();\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n };\n HeaderRowComp.prototype.onColumnResized = function () {\n this.setWidth();\n };\n HeaderRowComp.prototype.setWidth = function () {\n var width = this.getWidthForRow();\n this.getGui().style.width = width + 'px';\n };\n HeaderRowComp.prototype.getWidthForRow = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n if (printLayout) {\n var centerRow = _.missing(this.pinned);\n if (centerRow) {\n return this.columnController.getContainerWidth(Constants.PINNED_RIGHT)\n + this.columnController.getContainerWidth(Constants.PINNED_LEFT)\n + this.columnController.getContainerWidth(null);\n }\n else {\n return 0;\n }\n }\n else {\n // if not printing, just return the width as normal\n return this.columnController.getContainerWidth(this.pinned);\n }\n };\n HeaderRowComp.prototype.onGridColumnsChanged = function () {\n this.removeAndDestroyAllChildComponents();\n };\n HeaderRowComp.prototype.removeAndDestroyAllChildComponents = function () {\n var idsOfAllChildren = Object.keys(this.headerComps);\n this.removeAndDestroyChildComponents(idsOfAllChildren);\n };\n HeaderRowComp.prototype.onDisplayedColumnsChanged = function () {\n this.onVirtualColumnsChanged();\n this.setWidth();\n };\n HeaderRowComp.prototype.getItemsAtDepth = function () {\n var _this = this;\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n if (printLayout) {\n // for print layout, we add all columns into the center\n var centerContainer = _.missing(this.pinned);\n if (centerContainer) {\n var result_1 = [];\n [Constants.PINNED_LEFT, null, Constants.PINNED_RIGHT].forEach(function (pinned) {\n var items = _this.columnController.getVirtualHeaderGroupRow(pinned, _this.type == HeaderRowType.FLOATING_FILTER ?\n _this.dept - 1 :\n _this.dept);\n result_1 = result_1.concat(items);\n });\n return result_1;\n }\n else {\n return [];\n }\n }\n else {\n // when in normal layout, we add the columns for that container only\n return this.columnController.getVirtualHeaderGroupRow(this.pinned, this.type == HeaderRowType.FLOATING_FILTER ?\n this.dept - 1 :\n this.dept);\n }\n };\n HeaderRowComp.prototype.onVirtualColumnsChanged = function () {\n var _this = this;\n var currentChildIds = Object.keys(this.headerComps);\n var correctChildIds = [];\n var itemsAtDepth = this.getItemsAtDepth();\n itemsAtDepth.forEach(function (child) {\n // skip groups that have no displayed children. this can happen when the group is broken,\n // and this section happens to have nothing to display for the open / closed state.\n // (a broken group is one that is split, ie columns in the group have a non-group column\n // in between them)\n if (child.isEmptyGroup()) {\n return;\n }\n var idOfChild = child.getUniqueId();\n var eParentContainer = _this.getGui();\n // if we already have this cell rendered, do nothing\n var colAlreadyInDom = currentChildIds.indexOf(idOfChild) >= 0;\n var headerComp;\n var eHeaderCompGui;\n if (colAlreadyInDom) {\n _.removeFromArray(currentChildIds, idOfChild);\n }\n else {\n headerComp = _this.createHeaderComp(child);\n _this.headerComps[idOfChild] = headerComp;\n eHeaderCompGui = headerComp.getGui();\n eParentContainer.appendChild(eHeaderCompGui);\n }\n correctChildIds.push(idOfChild);\n });\n // at this point, anything left in currentChildIds is an element that is no longer in the viewport\n this.removeAndDestroyChildComponents(currentChildIds);\n var ensureDomOrder = this.gridOptionsWrapper.isEnsureDomOrder();\n if (ensureDomOrder) {\n var correctChildOrder = correctChildIds.map(function (id) { return _this.headerComps[id].getGui(); });\n _.setDomChildOrder(this.getGui(), correctChildOrder);\n }\n };\n HeaderRowComp.prototype.createHeaderComp = function (columnGroupChild) {\n var result;\n switch (this.type) {\n case HeaderRowType.COLUMN:\n result = new HeaderWrapperComp(columnGroupChild, this.dropTarget, this.pinned);\n break;\n case HeaderRowType.COLUMN_GROUP:\n result = new HeaderGroupWrapperComp(columnGroupChild, this.dropTarget, this.pinned);\n break;\n case HeaderRowType.FLOATING_FILTER:\n result = new FloatingFilterWrapper(columnGroupChild);\n break;\n }\n this.getContext().wireBean(result);\n return result;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HeaderRowComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('gridApi')\n ], HeaderRowComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnController')\n ], HeaderRowComp.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], HeaderRowComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('filterManager')\n ], HeaderRowComp.prototype, \"filterManager\", void 0);\n __decorate([\n PostConstruct\n ], HeaderRowComp.prototype, \"init\", null);\n return HeaderRowComp;\n}(Component));\nexport { HeaderRowComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var CellRangeType;\n(function (CellRangeType) {\n CellRangeType[CellRangeType[\"VALUE\"] = 0] = \"VALUE\";\n CellRangeType[CellRangeType[\"DIMENSION\"] = 1] = \"DIMENSION\";\n})(CellRangeType || (CellRangeType = {}));\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { _ } from '../utils';\nvar CssClassApplier = /** @class */ (function () {\n function CssClassApplier() {\n }\n CssClassApplier.addHeaderClassesFromColDef = function (abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n if (_.missing(abstractColDef)) {\n return;\n }\n this.addColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup);\n };\n CssClassApplier.addToolPanelClassesFromColDef = function (abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n if (_.missing(abstractColDef)) {\n return;\n }\n this.addColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup);\n };\n CssClassApplier.addColumnClassesFromCollDef = function (classesOrFunc, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n if (_.missing(classesOrFunc)) {\n return;\n }\n var classToUse;\n if (typeof classesOrFunc === 'function') {\n var params = {\n // bad naming, as colDef here can be a group or a column,\n // however most people won't appreciate the difference,\n // so keeping it as colDef to avoid confusion.\n colDef: abstractColDef,\n column: column,\n columnGroup: columnGroup,\n context: gridOptionsWrapper.getContext(),\n api: gridOptionsWrapper.getApi()\n };\n var headerClassFunc = classesOrFunc;\n classToUse = headerClassFunc(params);\n }\n else {\n classToUse = classesOrFunc;\n }\n if (typeof classToUse === 'string') {\n _.addCssClass(eHeaderCell, classToUse);\n }\n else if (Array.isArray(classToUse)) {\n classToUse.forEach(function (cssClassItem) {\n _.addCssClass(eHeaderCell, cssClassItem);\n });\n }\n };\n return CssClassApplier;\n}());\nexport { CssClassApplier };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean, Optional, PostConstruct } from \"../context/context\";\nimport { Constants } from \"../constants\";\nimport { _ } from \"../utils\";\nvar NavigationService = /** @class */ (function () {\n function NavigationService() {\n this.timeLastPageEventProcessed = 0;\n }\n NavigationService.prototype.init = function () {\n this.scrollWidth = this.gridOptionsWrapper.getScrollbarWidth();\n };\n NavigationService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n NavigationService.prototype.handlePageScrollingKey = function (event) {\n var key = event.which || event.keyCode;\n var alt = event.altKey;\n var ctrl = event.ctrlKey;\n var currentCell = this.mouseEventService.getCellPositionForEvent(event);\n if (!currentCell) {\n return false;\n }\n var processed = false;\n switch (key) {\n case Constants.KEY_PAGE_HOME:\n case Constants.KEY_PAGE_END:\n // handle home and end when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onHomeOrEndKey(key);\n processed = true;\n }\n break;\n case Constants.KEY_LEFT:\n case Constants.KEY_RIGHT:\n // handle left and right when ctrl is pressed only\n if (ctrl && !alt) {\n this.onCtrlLeftOrRight(key, currentCell);\n processed = true;\n }\n break;\n case Constants.KEY_UP:\n case Constants.KEY_DOWN:\n // handle up and down when ctrl is pressed only\n if (ctrl && !alt) {\n this.onCtrlUpOrDown(key, currentCell);\n processed = true;\n }\n break;\n case Constants.KEY_PAGE_DOWN:\n // handle page up and page down when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onPageDown(currentCell);\n processed = true;\n }\n break;\n case Constants.KEY_PAGE_UP:\n // handle page up and page down when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onPageUp(currentCell);\n processed = true;\n }\n break;\n }\n if (processed) {\n event.preventDefault();\n }\n return processed;\n };\n // the page up/down keys caused a problem, in that if the user\n // held the page up/down key down, lots of events got generated,\n // which clogged up the event queue (as they take time to process)\n // which in turn froze the grid. Logic below makes sure we wait 100ms\n // between processing the page up/down events, so when user has finger\n // held down on key, we ignore page up/down events until 100ms has passed,\n // which effectively empties the queue of page up/down events.\n NavigationService.prototype.isTimeSinceLastPageEventToRecent = function () {\n var now = new Date().getTime();\n var diff = now - this.timeLastPageEventProcessed;\n return (diff < 100);\n };\n NavigationService.prototype.setTimeLastPageEventProcessed = function () {\n this.timeLastPageEventProcessed = new Date().getTime();\n };\n NavigationService.prototype.onPageDown = function (gridCell) {\n if (this.isTimeSinceLastPageEventToRecent()) {\n return;\n }\n var scrollPosition = this.gridPanel.getVScrollPosition();\n var pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;\n if (this.gridPanel.isHorizontalScrollShowing()) {\n pixelsInOnePage -= this.scrollWidth;\n }\n var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n var currentPageBottomPixel = scrollPosition.top + pixelsInOnePage;\n var currentPageBottomRow = this.paginationProxy.getRowIndexAtPixel(currentPageBottomPixel + pagingPixelOffset);\n var scrollIndex = currentPageBottomRow;\n var currentCellPixel = this.paginationProxy.getRow(gridCell.rowIndex).rowTop;\n var nextCellPixel = currentCellPixel + pixelsInOnePage - pagingPixelOffset;\n var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n var pageLastRow = this.paginationProxy.getPageLastRow();\n if (focusIndex > pageLastRow) {\n focusIndex = pageLastRow;\n }\n if (scrollIndex > pageLastRow) {\n scrollIndex = pageLastRow;\n }\n this.navigateTo(scrollIndex, 'top', null, focusIndex, gridCell.column);\n this.setTimeLastPageEventProcessed();\n };\n NavigationService.prototype.onPageUp = function (gridCell) {\n if (this.isTimeSinceLastPageEventToRecent()) {\n return;\n }\n var scrollPosition = this.gridPanel.getVScrollPosition();\n var pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;\n if (this.gridPanel.isHorizontalScrollShowing()) {\n pixelsInOnePage -= this.scrollWidth;\n }\n var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n var currentPageTopPixel = scrollPosition.top;\n var currentPageTopRow = this.paginationProxy.getRowIndexAtPixel(currentPageTopPixel + pagingPixelOffset);\n var scrollIndex = currentPageTopRow;\n var currentRowNode = this.paginationProxy.getRow(gridCell.rowIndex);\n var nextCellPixel = currentRowNode.rowTop + currentRowNode.rowHeight - pixelsInOnePage - pagingPixelOffset;\n var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n var firstRow = this.paginationProxy.getPageFirstRow();\n if (focusIndex < firstRow) {\n focusIndex = firstRow;\n }\n if (scrollIndex < firstRow) {\n scrollIndex = firstRow;\n }\n this.navigateTo(scrollIndex, 'bottom', null, focusIndex, gridCell.column);\n this.setTimeLastPageEventProcessed();\n };\n // common logic to navigate. takes parameters:\n // scrollIndex - what row to vertically scroll to\n // scrollType - what position to put scroll index ie top/bottom\n // scrollColumn - what column to horizontally scroll to\n // focusIndex / focusColumn - for page up / down, we want to scroll to one row/column, but focus another\n NavigationService.prototype.navigateTo = function (scrollIndex, scrollType, scrollColumn, focusIndex, focusColumn) {\n if (_.exists(scrollColumn)) {\n this.gridPanel.ensureColumnVisible(scrollColumn);\n }\n if (_.exists(scrollIndex)) {\n this.gridPanel.ensureIndexVisible(scrollIndex, scrollType);\n }\n // make sure the cell is rendered, needed if we are to focus\n this.animationFrameService.flushAllFrames();\n // if we don't do this, the range will be left on the last cell, which will leave the last focused cell\n // highlighted.\n this.focusedCellController.setFocusedCell(focusIndex, focusColumn, null, true);\n if (this.rangeController) {\n var cellPosition = { rowIndex: focusIndex, rowPinned: null, column: focusColumn };\n this.rangeController.setRangeToCell(cellPosition);\n }\n };\n // ctrl + up/down will bring focus to same column, first/last row. no horizontal scrolling.\n NavigationService.prototype.onCtrlUpOrDown = function (key, gridCell) {\n var upKey = key === Constants.KEY_UP;\n var rowIndexToScrollTo = upKey ? 0 : this.paginationProxy.getPageLastRow();\n this.navigateTo(rowIndexToScrollTo, null, gridCell.column, rowIndexToScrollTo, gridCell.column);\n };\n // ctrl + left/right will bring focus to same row, first/last cell. no vertical scrolling.\n NavigationService.prototype.onCtrlLeftOrRight = function (key, gridCell) {\n var leftKey = key === Constants.KEY_LEFT;\n var allColumns = this.columnController.getAllDisplayedColumns();\n var columnToSelect = leftKey ? allColumns[0] : _.last(allColumns);\n this.navigateTo(gridCell.rowIndex, null, columnToSelect, gridCell.rowIndex, columnToSelect);\n };\n // home brings focus to top left cell, end brings focus to bottom right, grid scrolled to bring\n // same cell into view (which means either scroll all the way up, or all the way down).\n NavigationService.prototype.onHomeOrEndKey = function (key) {\n var homeKey = key === Constants.KEY_PAGE_HOME;\n var allColumns = this.columnController.getAllDisplayedColumns();\n var columnToSelect = homeKey ? allColumns[0] : _.last(allColumns);\n var rowIndexToScrollTo = homeKey ? 0 : this.paginationProxy.getPageLastRow();\n this.navigateTo(rowIndexToScrollTo, null, columnToSelect, rowIndexToScrollTo, columnToSelect);\n };\n __decorate([\n Autowired('mouseEventService')\n ], NavigationService.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], NavigationService.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('focusedCellController')\n ], NavigationService.prototype, \"focusedCellController\", void 0);\n __decorate([\n Autowired('animationFrameService')\n ], NavigationService.prototype, \"animationFrameService\", void 0);\n __decorate([\n Optional('rangeController')\n ], NavigationService.prototype, \"rangeController\", void 0);\n __decorate([\n Autowired('columnController')\n ], NavigationService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], NavigationService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], NavigationService.prototype, \"init\", null);\n NavigationService = __decorate([\n Bean('navigationService')\n ], NavigationService);\n return NavigationService;\n}());\nexport { NavigationService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { GridOptionsWrapper } from \"./gridOptionsWrapper\";\nimport { SelectionController } from \"./selectionController\";\nimport { ColumnApi } from \"./columnController/columnApi\";\nimport { ColumnController } from \"./columnController/columnController\";\nimport { RowRenderer } from \"./rendering/rowRenderer\";\nimport { HeaderRootComp } from \"./headerRendering/headerRootComp\";\nimport { FilterManager } from \"./filter/filterManager\";\nimport { ValueService } from \"./valueService/valueService\";\nimport { EventService } from \"./eventService\";\nimport { GridPanel } from \"./gridPanel/gridPanel\";\nimport { GridApi } from \"./gridApi\";\nimport { ColumnFactory } from \"./columnController/columnFactory\";\nimport { DisplayedGroupCreator } from \"./columnController/displayedGroupCreator\";\nimport { ExpressionService } from \"./valueService/expressionService\";\nimport { TemplateService } from \"./templateService\";\nimport { PopupService } from \"./widgets/popupService\";\nimport { Logger, LoggerFactory } from \"./logger\";\nimport { ColumnUtils } from \"./columnController/columnUtils\";\nimport { AutoWidthCalculator } from \"./rendering/autoWidthCalculator\";\nimport { HorizontalResizeService } from \"./headerRendering/horizontalResizeService\";\nimport { Context } from \"./context/context\";\nimport { GridCore } from \"./gridCore\";\nimport { StandardMenuFactory } from \"./headerRendering/standardMenu\";\nimport { DragAndDropService } from \"./dragAndDrop/dragAndDropService\";\nimport { DragService } from \"./dragAndDrop/dragService\";\nimport { SortController } from \"./sortController\";\nimport { FocusedCellController } from \"./focusedCellController\";\nimport { MouseEventService } from \"./gridPanel/mouseEventService\";\nimport { CellNavigationService } from \"./cellNavigationService\";\nimport { Events } from \"./events\";\nimport { CellRendererFactory } from \"./rendering/cellRendererFactory\";\nimport { ValueFormatterService } from \"./rendering/valueFormatterService\";\nimport { AgCheckbox } from \"./widgets/agCheckbox\";\nimport { AgRadioButton } from \"./widgets/agRadioButton\";\nimport { VanillaFrameworkOverrides } from \"./vanillaFrameworkOverrides\";\nimport { ScrollVisibleService } from \"./gridPanel/scrollVisibleService\";\nimport { StylingService } from \"./styling/stylingService\";\nimport { ColumnHoverService } from \"./rendering/columnHoverService\";\nimport { ColumnAnimationService } from \"./rendering/columnAnimationService\";\nimport { AutoGroupColService } from \"./columnController/autoGroupColService\";\nimport { PaginationProxy } from \"./pagination/paginationProxy\";\nimport { PaginationAutoPageSizeService } from \"./pagination/paginationAutoPageSizeService\";\nimport { Constants } from \"./constants\";\nimport { ValueCache } from \"./valueService/valueCache\";\nimport { ChangeDetectionService } from \"./valueService/changeDetectionService\";\nimport { AlignedGridsService } from \"./alignedGridsService\";\nimport { UserComponentFactory } from \"./components/framework/userComponentFactory\";\nimport { UserComponentRegistry } from \"./components/framework/userComponentRegistry\";\nimport { AgComponentUtils } from \"./components/framework/agComponentUtils\";\nimport { ComponentMetadataProvider } from \"./components/framework/componentMetadataProvider\";\nimport { Beans } from \"./rendering/beans\";\nimport { Environment } from \"./environment\";\nimport { AnimationFrameService } from \"./misc/animationFrameService\";\nimport { NavigationService } from \"./gridPanel/navigationService\";\nimport { MaxDivHeightScaler } from \"./rendering/maxDivHeightScaler\";\nimport { SelectableService } from \"./rowNodes/selectableService\";\nimport { AutoHeightCalculator } from \"./rendering/autoHeightCalculator\";\nimport { PaginationComp } from \"./pagination/paginationComp\";\nimport { ResizeObserverService } from \"./misc/resizeObserverService\";\nimport { TooltipManager } from \"./widgets/tooltipManager\";\nimport { OverlayWrapperComponent } from \"./rendering/overlays/overlayWrapperComponent\";\nimport { AgGroupComponent } from \"./widgets/agGroupComponent\";\nimport { AgDialog } from \"./widgets/agDialog\";\nimport { AgPanel } from \"./widgets/agPanel\";\nimport { AgInputTextField } from \"./widgets/agInputTextField\";\nimport { AgInputTextArea } from \"./widgets/agInputTextArea\";\nimport { AgSlider } from \"./widgets/agSlider\";\nimport { _ } from \"./utils\";\nimport { AgColorPicker } from \"./widgets/agColorPicker\";\nimport { AgInputNumberField } from \"./widgets/agInputNumberField\";\nimport { AgInputRange } from \"./widgets/agInputRange\";\nimport { AgSelect } from \"./widgets/agSelect\";\nimport { AgAngleSelect } from \"./widgets/agAngleSelect\";\nimport { AgToggleButton } from \"./widgets/agToggleButton\";\nimport { DetailRowCompCache } from \"./rendering/detailRowCompCache\";\nimport { RowPositionUtils } from \"./entities/rowPosition\";\nimport { CellPositionUtils } from \"./entities/cellPosition\";\nimport { PinnedRowModel } from \"./pinnedRowModel/pinnedRowModel\";\nimport { ModuleRegistry } from \"./modules/moduleRegistry\";\nimport { ModuleNames } from \"./modules/moduleNames\";\nimport { UndoRedoService } from \"./undoRedo/undoRedoService\";\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 return;\n }\n if (!gridOptions) {\n console.error('ag-Grid: no gridOptions provided to the grid');\n return;\n }\n var debug = !!gridOptions.debug;\n this.gridOptions = gridOptions;\n var registeredModules = this.getRegisteredModules(params);\n var beanClasses = this.createBeansList(registeredModules);\n var agStackComponents = this.createAgStackComponentsList(registeredModules);\n var providedBeanInstances = this.createProvidedBeans(eGridDiv, params);\n if (!beanClasses) {\n return;\n } // happens when no row model found\n var contextParams = {\n providedBeanInstances: providedBeanInstances,\n beanClasses: beanClasses,\n components: agStackComponents,\n debug: debug\n };\n this.logger = new Logger('ag-Grid', function () { return gridOptions.debug; });\n var contextLogger = new Logger('Context', function () { return contextParams.debug; });\n this.context = new Context(contextParams, contextLogger);\n this.registerModuleUserComponents(registeredModules);\n var gridCore = new GridCore();\n this.context.wireBean(gridCore);\n this.setColumnsAndData();\n this.dispatchGridReadyEvent(gridOptions);\n var isEnterprise = ModuleRegistry.isRegistered(ModuleNames.EnterpriseCoreModule);\n this.logger.log(\"initialised successfully, enterprise = \" + isEnterprise);\n }\n Grid.prototype.getRegisteredModules = function (params) {\n var passedViaConstructor = params ? params.modules : null;\n var registered = ModuleRegistry.getRegisteredModules();\n var allModules = [];\n var mapNames = {};\n // adds to list and removes duplicates\n function addModule(module) {\n function addIndividualModule(module) {\n if (!mapNames[module.moduleName]) {\n mapNames[module.moduleName] = true;\n allModules.push(module);\n ModuleRegistry.register(module);\n }\n }\n addIndividualModule(module);\n if (module.dependantModules) {\n module.dependantModules.forEach(addModule);\n }\n }\n if (passedViaConstructor) {\n passedViaConstructor.forEach(addModule);\n }\n if (registered) {\n registered.forEach(addModule);\n }\n return allModules;\n };\n Grid.prototype.registerModuleUserComponents = function (registeredModules) {\n var userComponentRegistry = this.context.getBean('userComponentRegistry');\n var moduleUserComps = this.extractModuleEntity(registeredModules, function (module) { return module.userComponents ? module.userComponents : []; });\n moduleUserComps.forEach(function (compMeta) {\n userComponentRegistry.registerDefaultComponent(compMeta.componentName, compMeta.componentClass);\n });\n };\n Grid.prototype.createProvidedBeans = function (eGridDiv, params) {\n var frameworkOverrides = params ? params.frameworkOverrides : null;\n if (_.missing(frameworkOverrides)) {\n frameworkOverrides = new VanillaFrameworkOverrides();\n }\n var seed = {\n gridOptions: this.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 frameworkOverrides: frameworkOverrides\n };\n if (params && params.providedBeanInstances) {\n _.assign(seed, params.providedBeanInstances);\n }\n return seed;\n };\n Grid.prototype.createAgStackComponentsList = function (registeredModules) {\n var components = [\n { componentName: 'AgCheckbox', componentClass: AgCheckbox },\n { componentName: 'AgRadioButton', componentClass: AgRadioButton },\n { componentName: 'AgToggleButton', componentClass: AgToggleButton },\n { componentName: 'AgInputTextField', componentClass: AgInputTextField },\n { componentName: 'AgInputTextArea', componentClass: AgInputTextArea },\n { componentName: 'AgInputNumberField', componentClass: AgInputNumberField },\n { componentName: 'AgInputRange', componentClass: AgInputRange },\n { componentName: 'AgSelect', componentClass: AgSelect },\n { componentName: 'AgSlider', componentClass: AgSlider },\n { componentName: 'AgAngleSelect', componentClass: AgAngleSelect },\n { componentName: 'AgColorPicker', componentClass: AgColorPicker },\n { componentName: 'AgGridComp', componentClass: GridPanel },\n { componentName: 'AgHeaderRoot', componentClass: HeaderRootComp },\n { componentName: 'AgPagination', componentClass: PaginationComp },\n { componentName: 'AgOverlayWrapper', componentClass: OverlayWrapperComponent },\n { componentName: 'AgGroupComponent', componentClass: AgGroupComponent },\n { componentName: 'AgPanel', componentClass: AgPanel },\n { componentName: 'AgDialog', componentClass: AgDialog }\n ];\n var moduleAgStackComps = this.extractModuleEntity(registeredModules, function (module) { return module.agStackComponents ? module.agStackComponents : []; });\n components = components.concat(moduleAgStackComps);\n return components;\n };\n Grid.prototype.createBeansList = function (registeredModules) {\n var rowModelClass = this.getRowModelClass(registeredModules);\n if (!rowModelClass) {\n return undefined;\n }\n // beans should only contain SERVICES, it should NEVER contain COMPONENTS\n var beans = [\n rowModelClass, Beans, RowPositionUtils, CellPositionUtils,\n PaginationAutoPageSizeService, GridApi, UserComponentRegistry, AgComponentUtils,\n ComponentMetadataProvider, ResizeObserverService, UserComponentFactory,\n MaxDivHeightScaler, AutoHeightCalculator, CellRendererFactory, HorizontalResizeService,\n PinnedRowModel, DragService, DisplayedGroupCreator, EventService, GridOptionsWrapper, PopupService,\n SelectionController, FilterManager, ColumnController, PaginationProxy, RowRenderer, ExpressionService,\n ColumnFactory, TemplateService, AlignedGridsService,\n NavigationService, ValueCache, ValueService, LoggerFactory, ColumnUtils, AutoWidthCalculator,\n StandardMenuFactory, DragAndDropService, ColumnApi, FocusedCellController, MouseEventService, Environment,\n CellNavigationService, ValueFormatterService, StylingService, ScrollVisibleService, SortController,\n ColumnHoverService, ColumnAnimationService, SelectableService, AutoGroupColService,\n ChangeDetectionService, AnimationFrameService, TooltipManager, DetailRowCompCache, UndoRedoService\n ];\n var moduleBeans = this.extractModuleEntity(registeredModules, function (module) { return module.beans ? module.beans : []; });\n beans.push.apply(beans, moduleBeans);\n // check for duplicates, as different modules could include the same beans that\n // they depend on, eg ClientSideRowModel in enterprise, and ClientSideRowModel in community\n var beansNoDuplicates = [];\n beans.forEach(function (bean) {\n if (beansNoDuplicates.indexOf(bean) < 0) {\n beansNoDuplicates.push(bean);\n }\n });\n return beansNoDuplicates;\n };\n Grid.prototype.extractModuleEntity = function (moduleEntities, extractor) {\n return [].concat.apply([], moduleEntities.map(extractor));\n };\n Grid.prototype.setColumnsAndData = function () {\n var gridOptionsWrapper = this.context.getBean('gridOptionsWrapper');\n var columnController = this.context.getBean('columnController');\n var columnDefs = gridOptionsWrapper.getColumnDefs();\n if (_.exists(columnDefs)) {\n columnController.setColumnDefs(columnDefs, \"gridInitializing\");\n }\n var rowModel = this.context.getBean('rowModel');\n rowModel.start();\n };\n Grid.prototype.dispatchGridReadyEvent = function (gridOptions) {\n var eventService = this.context.getBean('eventService');\n var readyEvent = {\n type: Events.EVENT_GRID_READY,\n api: gridOptions.api,\n columnApi: gridOptions.columnApi\n };\n eventService.dispatchEvent(readyEvent);\n };\n Grid.prototype.getRowModelClass = function (registeredModules) {\n var rowModelType = this.gridOptions.rowModelType;\n //TODO: temporary measure before 'enterprise' is completely removed (similar handling in gridOptionsWrapper is also required)\n if (rowModelType === 'enterprise') {\n console.warn(\"ag-Grid: enterprise rowModel deprecated. Should now be called server side row model instead.\");\n rowModelType = Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n }\n if (rowModelType === 'normal') {\n console.warn(\"ag-Grid: normal rowModel deprecated. Should now be called client side row model instead.\");\n rowModelType = Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n }\n // default to client side\n if (!rowModelType) {\n rowModelType = Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n }\n var rowModelClasses = {};\n registeredModules.forEach(function (module) {\n _.iterateObject(module.rowModels, function (key, value) {\n rowModelClasses[key] = value;\n });\n });\n var rowModelClass = rowModelClasses[rowModelType];\n if (_.exists(rowModelClass)) {\n return rowModelClass;\n }\n else {\n if (rowModelType === Constants.ROW_MODEL_TYPE_INFINITE) {\n console.error(\"ag-Grid: Row Model \\\"Infinite\\\" not found. Please ensure the \"\n + \"InfiniteRowModelModule is loaded using: import '@ag-grid-community/infinite-row-model';\");\n }\n console.error('ag-Grid: could not find matching row model for rowModelType ' + rowModelType);\n if (rowModelType === Constants.ROW_MODEL_TYPE_VIEWPORT) {\n console.error(\"ag-Grid: Row Model \\\"Viewport\\\" not found. For this row model to work you must \" +\n \"a) be using ag-Grid Enterprise and \" +\n \"b) ensure ViewportRowModelModule is \" +\n \"loaded using: import '@ag-grid-enterprise/viewport-row-model;\");\n }\n if (rowModelType === Constants.ROW_MODEL_TYPE_SERVER_SIDE) {\n console.error(\"ag-Grid: Row Model \\\"Server Side\\\" not found. For this row model to work you must \" +\n \"a) be using ag-Grid Enterprise and \" +\n \"b) ensure ServerSideRowModelModule is \" +\n \"loaded using: import '@ag-grid-enterprise/server-server-side-row-model';\");\n }\n if (rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n console.error(\"ag-Grid: Row Model \\\"Client Side\\\" not found. Please ensure the \"\n + \"ClientSideRowModelModule is loaded using: import '@ag-grid-community/client-side-row-model';\");\n }\n return undefined;\n }\n };\n Grid.prototype.destroy = function () {\n this.gridOptions.api.destroy();\n };\n return Grid;\n}());\nexport { Grid };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { HeaderRowComp, HeaderRowType } from \"./headerRowComp\";\nimport { BodyDropTarget } from \"./bodyDropTarget\";\nimport { _ } from \"../utils\";\nimport { Constants } from \"../constants\";\nvar HeaderContainer = /** @class */ (function () {\n function HeaderContainer(eContainer, eViewport, pinned) {\n this.headerRowComps = [];\n this.eContainer = eContainer;\n this.pinned = pinned;\n this.eViewport = eViewport;\n }\n HeaderContainer.prototype.registerGridComp = function (gridPanel) {\n this.setupDragAndDrop(gridPanel);\n };\n HeaderContainer.prototype.forEachHeaderElement = function (callback) {\n this.headerRowComps.forEach(function (headerRowComp) { return headerRowComp.forEachHeaderElement(callback); });\n };\n HeaderContainer.prototype.init = function () {\n this.scrollWidth = this.gridOptionsWrapper.getScrollbarWidth();\n // if value changes, then if not pivoting, we at least need to change the label eg from sum() to avg(),\n // if pivoting, then the columns have changed\n this.eventService.addEventListener(Events.EVENT_COLUMN_VALUE_CHANGED, this.onColumnValueChanged.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));\n this.eventService.addEventListener(Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.eventService.addEventListener(Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n this.eventService.addEventListener(Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n };\n // if row group changes, that means we may need to add aggFuncs to the column headers,\n // if the grid goes from no aggregation (ie no grouping) to grouping\n HeaderContainer.prototype.onColumnRowGroupChanged = function () {\n this.onGridColumnsChanged();\n };\n // if the agg func of a column changes, then we may need to update the agg func in columns header\n HeaderContainer.prototype.onColumnValueChanged = function () {\n this.onGridColumnsChanged();\n };\n HeaderContainer.prototype.onColumnResized = function () {\n this.setWidthOfPinnedContainer();\n };\n HeaderContainer.prototype.onDisplayedColumnsChanged = function () {\n this.setWidthOfPinnedContainer();\n };\n HeaderContainer.prototype.onScrollVisibilityChanged = function () {\n this.setWidthOfPinnedContainer();\n };\n HeaderContainer.prototype.setWidthOfPinnedContainer = function () {\n var pinningLeft = this.pinned === Constants.PINNED_LEFT;\n var pinningRight = this.pinned === Constants.PINNED_RIGHT;\n var controller = this.columnController;\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n if (pinningLeft || pinningRight) {\n // size to fit all columns\n var width = controller[pinningLeft ? 'getPinnedLeftContainerWidth' : 'getPinnedRightContainerWidth']();\n // if there is a scroll showing (and taking up space, so Windows, and not iOS)\n // in the body, then we add extra space to keep header aligned with the body,\n // as body width fits the cols and the scrollbar\n var addPaddingForScrollbar = this.scrollVisibleService.isVerticalScrollShowing() && ((isRtl && pinningLeft) || (!isRtl && pinningRight));\n if (addPaddingForScrollbar) {\n width += this.scrollWidth;\n }\n _.setFixedWidth(this.eContainer, width);\n }\n };\n HeaderContainer.prototype.destroy = function () {\n this.removeHeaderRowComps();\n };\n HeaderContainer.prototype.getRowComps = function () {\n return this.headerRowComps;\n };\n // grid cols have changed - this also means the number of rows in the header can have\n // changed. so we remove all the old rows and insert new ones for a complete refresh\n HeaderContainer.prototype.onGridColumnsChanged = function () {\n this.removeAndCreateAllRowComps();\n };\n HeaderContainer.prototype.removeAndCreateAllRowComps = function () {\n this.removeHeaderRowComps();\n this.createHeaderRowComps();\n };\n // we expose this for gridOptions.api.refreshHeader() to call\n HeaderContainer.prototype.refresh = function () {\n this.removeAndCreateAllRowComps();\n };\n HeaderContainer.prototype.setupDragAndDrop = function (gridComp) {\n var dropContainer = this.eViewport ? this.eViewport : this.eContainer;\n var bodyDropTarget = new BodyDropTarget(this.pinned, dropContainer);\n this.context.wireBean(bodyDropTarget);\n bodyDropTarget.registerGridComp(gridComp);\n };\n HeaderContainer.prototype.removeHeaderRowComps = function () {\n this.headerRowComps.forEach(function (headerRowComp) {\n headerRowComp.destroy();\n });\n this.headerRowComps.length = 0;\n _.clearElement(this.eContainer);\n };\n HeaderContainer.prototype.createHeaderRowComps = function () {\n // if we are displaying header groups, then we have many rows here.\n // go through each row of the header, one by one.\n var rowCount = this.columnController.getHeaderRowCount();\n for (var dept = 0; dept < rowCount; dept++) {\n var groupRow = dept !== (rowCount - 1);\n var type = groupRow ? HeaderRowType.COLUMN_GROUP : HeaderRowType.COLUMN;\n var headerRowComp = new HeaderRowComp(dept, type, this.pinned, this.dropTarget);\n this.context.wireBean(headerRowComp);\n this.headerRowComps.push(headerRowComp);\n headerRowComp.getGui().setAttribute('aria-rowindex', this.headerRowComps.length.toString());\n this.eContainer.appendChild(headerRowComp.getGui());\n }\n var includeFloatingFilterRow = this.gridOptionsWrapper.isFloatingFilter() && !this.columnController.isPivotMode();\n if (includeFloatingFilterRow) {\n var headerRowComp = new HeaderRowComp(rowCount, HeaderRowType.FLOATING_FILTER, this.pinned, this.dropTarget);\n this.context.wireBean(headerRowComp);\n this.headerRowComps.push(headerRowComp);\n headerRowComp.getGui().setAttribute('aria-rowindex', this.headerRowComps.length.toString());\n this.eContainer.appendChild(headerRowComp.getGui());\n }\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HeaderContainer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('context')\n ], HeaderContainer.prototype, \"context\", void 0);\n __decorate([\n Autowired('$scope')\n ], HeaderContainer.prototype, \"$scope\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], HeaderContainer.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnController')\n ], HeaderContainer.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], HeaderContainer.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('scrollVisibleService')\n ], HeaderContainer.prototype, \"scrollVisibleService\", void 0);\n __decorate([\n PostConstruct\n ], HeaderContainer.prototype, \"init\", null);\n return HeaderContainer;\n}());\nexport { HeaderContainer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Autowired, PostConstruct } from \"../context/context\";\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.element = element;\n return _this;\n }\n HoverFeature.prototype.postConstruct = function () {\n this.addMouseHoverListeners();\n };\n HoverFeature.prototype.addMouseHoverListeners = function () {\n this.addDestroyableEventListener(this.element, 'mouseout', this.onMouseOut.bind(this));\n this.addDestroyableEventListener(this.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 Autowired('columnHoverService')\n ], HoverFeature.prototype, \"columnHoverService\", void 0);\n __decorate([\n PostConstruct\n ], HoverFeature.prototype, \"postConstruct\", null);\n return HoverFeature;\n}(BeanStub));\nexport { HoverFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { HeaderContainer } from \"./headerContainer\";\nimport { Events } from \"../events\";\nimport { Component } from \"../widgets/component\";\nimport { RefSelector } from \"../widgets/componentAnnotations\";\nimport { Constants } from \"../constants\";\nimport { _ } from \"../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.DOM_LAYOUT_PRINT;\n this.gridApi.registerHeaderRootComp(this);\n this.autoWidthCalculator.registerHeaderRootComp(this);\n var centerContainer = new HeaderContainer(this.eHeaderContainer, this.eHeaderViewport, null);\n var pinnedLeftContainer = new HeaderContainer(this.ePinnedLeftHeader, null, Constants.PINNED_LEFT);\n var pinnedRightContainer = new HeaderContainer(this.ePinnedRightHeader, null, Constants.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.EVENT_COLUMN_VALUE_CHANGED, this.refreshHeader.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, 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.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.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 _.addOrRemoveCssClass(this.getGui(), 'ag-pivot-on', pivotMode);\n _.addOrRemoveCssClass(this.getGui(), 'ag-pivot-off', !pivotMode);\n };\n HeaderRootComp.prototype.setHeight = function (height) {\n // one extra pixel is needed here to account for the\n // height of the border\n var px = height + 1 + \"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 _.setDisplayed(this.ePinnedLeftHeader, visible);\n };\n HeaderRootComp.prototype.setRightVisible = function (visible) {\n _.setDisplayed(this.ePinnedRightHeader, visible);\n };\n HeaderRootComp.prototype.getHeaderRowCount = function () {\n if (this.childContainers.length === 0) {\n return 0;\n }\n return this.childContainers[0].getRowComps().length;\n };\n HeaderRootComp.TEMPLATE = \"
\\n
\\n
\\n
\\n
\\n
\\n
\";\n __decorate([\n RefSelector('ePinnedLeftHeader')\n ], HeaderRootComp.prototype, \"ePinnedLeftHeader\", void 0);\n __decorate([\n RefSelector('ePinnedRightHeader')\n ], HeaderRootComp.prototype, \"ePinnedRightHeader\", void 0);\n __decorate([\n RefSelector('eHeaderContainer')\n ], HeaderRootComp.prototype, \"eHeaderContainer\", void 0);\n __decorate([\n RefSelector('eHeaderViewport')\n ], HeaderRootComp.prototype, \"eHeaderViewport\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HeaderRootComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], HeaderRootComp.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], HeaderRootComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], HeaderRootComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('autoWidthCalculator')\n ], HeaderRootComp.prototype, \"autoWidthCalculator\", void 0);\n __decorate([\n PostConstruct\n ], HeaderRootComp.prototype, \"postConstruct\", null);\n return HeaderRootComp;\n}(Component));\nexport { HeaderRootComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { DragSourceType } from \"../dragAndDrop/dragAndDropService\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { MoveColumnController } from \"./moveColumnController\";\nimport { BodyDropPivotTarget } from \"./bodyDropPivotTarget\";\nimport { Constants } from \"../constants\";\nvar DropType;\n(function (DropType) {\n DropType[DropType[\"ColumnMove\"] = 0] = \"ColumnMove\";\n DropType[DropType[\"Pivot\"] = 1] = \"Pivot\";\n})(DropType || (DropType = {}));\nvar BodyDropTarget = /** @class */ (function () {\n function BodyDropTarget(pinned, eContainer) {\n this.dropListeners = {};\n this.pinned = pinned;\n this.eContainer = eContainer;\n }\n BodyDropTarget.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.moveColumnController.registerGridComp(gridPanel);\n switch (this.pinned) {\n case Constants.PINNED_LEFT:\n this.eSecondaryContainers = this.gridPanel.getDropTargetLeftContainers();\n break;\n case Constants.PINNED_RIGHT:\n this.eSecondaryContainers = this.gridPanel.getDropTargetRightContainers();\n break;\n default:\n this.eSecondaryContainers = this.gridPanel.getDropTargetBodyContainers();\n break;\n }\n };\n BodyDropTarget.prototype.isInterestedIn = function (type) {\n return type === DragSourceType.HeaderCell\n || (type === DragSourceType.ToolPanel && this.gridOptionsWrapper.isAllowDragFromColumnsToolPanel());\n };\n BodyDropTarget.prototype.getSecondaryContainers = function () {\n return this.eSecondaryContainers;\n };\n BodyDropTarget.prototype.getContainer = function () {\n return this.eContainer;\n };\n BodyDropTarget.prototype.init = function () {\n this.moveColumnController = new MoveColumnController(this.pinned, this.eContainer);\n this.context.wireBean(this.moveColumnController);\n var bodyDropPivotTarget = new BodyDropPivotTarget(this.pinned);\n this.context.wireBean(bodyDropPivotTarget);\n this.dropListeners[DropType.ColumnMove] = this.moveColumnController;\n this.dropListeners[DropType.Pivot] = bodyDropPivotTarget;\n this.dragAndDropService.addDropTarget(this);\n };\n BodyDropTarget.prototype.getIconName = function () {\n return this.currentDropListener.getIconName();\n };\n // we want to use the bodyPivotTarget if the user is dragging columns in from the toolPanel\n // and we are in pivot mode, as it has to logic to set pivot/value/group on the columns when\n // dropped into the grid's body.\n BodyDropTarget.prototype.getDropType = function (draggingEvent) {\n if (this.columnController.isPivotMode()) {\n // in pivot mode, then if moving a column (ie didn't come from toolpanel) then it's\n // a standard column move, however if it came from teh toolpanel, then we are introducing\n // dimensions or values to the grid\n if (draggingEvent.dragSource.type === DragSourceType.ToolPanel) {\n return DropType.Pivot;\n }\n else {\n return DropType.ColumnMove;\n }\n }\n else {\n // it's a column, and not pivot mode, so always moving\n return DropType.ColumnMove;\n }\n };\n BodyDropTarget.prototype.onDragEnter = function (draggingEvent) {\n // we pick the drop listener depending on whether we are in pivot mode are not. if we are\n // in pivot mode, then dropping cols changes the row group, pivot, value stats. otherwise\n // we change visibility state and position.\n // if (this.columnController.isPivotMode()) {\n var dropType = this.getDropType(draggingEvent);\n this.currentDropListener = this.dropListeners[dropType];\n this.currentDropListener.onDragEnter(draggingEvent);\n };\n BodyDropTarget.prototype.onDragLeave = function (params) {\n this.currentDropListener.onDragLeave(params);\n };\n BodyDropTarget.prototype.onDragging = function (params) {\n this.currentDropListener.onDragging(params);\n };\n BodyDropTarget.prototype.onDragStop = function (params) {\n this.currentDropListener.onDragStop(params);\n };\n __decorate([\n Autowired('context')\n ], BodyDropTarget.prototype, \"context\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], BodyDropTarget.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnController')\n ], BodyDropTarget.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], BodyDropTarget.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], BodyDropTarget.prototype, \"init\", null);\n return BodyDropTarget;\n}());\nexport { BodyDropTarget };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { _ } from \"../utils\";\nimport { DragAndDropService, DragSourceType, HorizontalDirection } from \"../dragAndDrop/dragAndDropService\";\nimport { Constants } from \"../constants\";\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 = !_.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.ICON_PINNED : 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 === 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.getDragItem();\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.getColDef().lockVisible; });\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.getColDef().lockPinned; });\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 if (this.gridOptionsWrapper.isEnableRtl()) {\n var clientWidth = this.eContainer.clientWidth;\n x = clientWidth - x;\n }\n // adjust for scroll only if centre container (the pinned containers don't scroll)\n if (this.centerContainer) {\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 (_.missing(draggingEvent.hDirection)) {\n return;\n }\n var mouseXNormalised = 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(mouseXNormalised);\n }\n var hDirectionNormalised = this.normaliseDirection(draggingEvent.hDirection);\n var dragSourceType = draggingEvent.dragSource.type;\n var columnsToMove = draggingEvent.dragSource.getDragItem().columns;\n columnsToMove = columnsToMove.filter(function (col) {\n if (col.getColDef().lockPinned) {\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, mouseXNormalised, fromEnter);\n };\n MoveColumnController.prototype.normaliseDirection = function (hDirection) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n switch (hDirection) {\n case HorizontalDirection.Left: return HorizontalDirection.Right;\n case HorizontalDirection.Right: return HorizontalDirection.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 = _.sortNumerically(movingCols.map(function (col) { return gridCols.indexOf(col); }));\n var firstIndex = indexes[0];\n var lastIndex = _.last(indexes);\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, mouseX, fromEnter) {\n var draggingLeft = hDirection === HorizontalDirection.Left;\n var draggingRight = hDirection === HorizontalDirection.Right;\n var validMoves = this.calculateValidMoves(allMovingColumns, draggingRight, mouseX);\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 if (validMoves.length === 0) {\n return;\n }\n var firstValidMove = validMoves[0];\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 == DragSourceType.HeaderCell) {\n constrainDirection = oldIndex !== null;\n }\n if (constrainDirection) {\n // only allow left drag if this column is moving left\n if (draggingLeft && firstValidMove >= oldIndex) {\n return;\n }\n // only allow right drag if this column is moving right\n if (draggingRight && firstValidMove <= oldIndex) {\n return;\n }\n }\n for (var i = 0; i < validMoves.length; i++) {\n var move = validMoves[i];\n if (!this.columnController.doesMovePassRules(allMovingColumns, move)) {\n continue;\n }\n this.columnController.moveColumns(allMovingColumns, move, \"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, mouseX) {\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 movingDisplayedCols = allDisplayedCols.filter(function (col) { return _.includes(movingCols, col); });\n var otherDisplayedCols = allDisplayedCols.filter(function (col) { return !_.includes(movingCols, col); });\n var otherGridCols = allGridCols.filter(function (col) { return !_.includes(movingCols, col); });\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 = mouseX;\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 firstValidMove;\n if (displayIndex > 0) {\n var leftColumn = otherDisplayedCols[displayIndex - 1];\n firstValidMove = otherGridCols.indexOf(leftColumn) + 1;\n }\n else {\n firstValidMove = otherGridCols.indexOf(otherDisplayedCols[0]);\n if (firstValidMove === -1) {\n firstValidMove = 0;\n }\n }\n var validMoves = [firstValidMove];\n // add in other valid moves due to hidden columns and married children. for example, a particular\n // move might break a group that has married children (so move isn't valid), however there could\n // be hidden columns (not displayed) that we could jump over to make the move valid. because\n // they are hidden, user doesn't see any different, however it allows moves that would otherwise\n // not work. for example imagine a group with 9 columns and all columns are hidden except the\n // middle one (so 4 hidden to left, 4 hidden to right), then when moving 'firstValidMove' will\n // be relative to the not-shown column, however we need to consider the move jumping over all the\n // hidden children. if we didn't do this, then if the group just described was at the end (RHS) of the\n // grid, there would be no way to put a column after it (as the grid would only consider beside the\n // visible column, which would fail valid move rules).\n if (draggingRight) {\n // if dragging right, then we add all the additional moves to the right. so in other words\n // if the next move is not valid, find the next move to the right that is valid.\n var pointer = firstValidMove + 1;\n var lastIndex = allGridCols.length - 1;\n while (pointer <= lastIndex) {\n validMoves.push(pointer);\n pointer++;\n }\n }\n else {\n // if dragging left we do the reverse of dragging right, we add in all the valid moves to the\n // left. however we also have to consider moves to the right for all hidden columns first.\n // (this logic is hard to reason with, it was worked out with trial and error,\n // move observation rather than science).\n // add moves to the right\n var pointer = firstValidMove;\n var lastIndex = allGridCols.length - 1;\n var displacedCol = allGridCols[pointer];\n while (pointer <= lastIndex && this.isColumnHidden(allDisplayedCols, displacedCol)) {\n pointer++;\n validMoves.push(pointer);\n displacedCol = allGridCols[pointer];\n }\n // add moves to the left\n pointer = firstValidMove - 1;\n var firstDisplayIndex = 0;\n while (pointer >= firstDisplayIndex) {\n validMoves.push(pointer);\n pointer--;\n }\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.ICON_LEFT, true);\n }\n else {\n this.dragAndDropService.setGhostIcon(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.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.getColDef().lockPinned; });\n if (columnsThatCanPin.length > 0) {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_PINNED);\n if (this.failedMoveAttempts > 7) {\n var pinType = this.needToMoveLeft ? Constants.PINNED_LEFT : Constants.PINNED_RIGHT;\n this.setColumnsPinned(columnsThatCanPin, pinType, \"uiColumnDragged\");\n this.dragAndDropService.nudge();\n }\n }\n }\n };\n __decorate([\n Autowired('loggerFactory')\n ], MoveColumnController.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('columnController')\n ], MoveColumnController.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], MoveColumnController.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], MoveColumnController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], MoveColumnController.prototype, \"init\", null);\n return MoveColumnController;\n}());\nexport { MoveColumnController };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { DragAndDropService } from \"../dragAndDrop/dragAndDropService\";\nimport { Autowired } from \"../context/context\";\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.ICON_PINNED : 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 Autowired('columnController')\n ], BodyDropPivotTarget.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], BodyDropPivotTarget.prototype, \"gridOptionsWrapper\", void 0);\n return BodyDropPivotTarget;\n}());\nexport { BodyDropPivotTarget };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { GridOptionsWrapper } from \"./gridOptionsWrapper\";\nimport { Constants } from \"./constants\";\nimport { Autowired, Bean, Optional, PostConstruct } from \"./context/context\";\nimport { ModuleNames } from \"./modules/moduleNames\";\nimport { _ } from \"./utils\";\nimport { ModuleRegistry } from \"./modules/moduleRegistry\";\nvar GridApi = /** @class */ (function () {\n function GridApi() {\n this.detailGridInfoMap = {};\n }\n GridApi.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n GridApi.prototype.registerGridCore = function (gridCore) {\n this.gridCore = gridCore;\n };\n GridApi.prototype.registerHeaderRootComp = function (headerRootComp) {\n this.headerRootComp = headerRootComp;\n };\n GridApi.prototype.init = function () {\n switch (this.rowModel.getType()) {\n case Constants.ROW_MODEL_TYPE_CLIENT_SIDE:\n this.clientSideRowModel = this.rowModel;\n break;\n case Constants.ROW_MODEL_TYPE_INFINITE:\n this.infiniteRowModel = this.rowModel;\n break;\n case Constants.ROW_MODEL_TYPE_SERVER_SIDE:\n this.serverSideRowModel = this.rowModel;\n break;\n }\n };\n /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n GridApi.prototype.__getAlignedGridService = function () {\n return this.alignedGridsService;\n };\n GridApi.prototype.addDetailGridInfo = function (id, gridInfo) {\n this.detailGridInfoMap[id] = gridInfo;\n };\n GridApi.prototype.removeDetailGridInfo = function (id) {\n this.detailGridInfoMap[id] = undefined;\n };\n GridApi.prototype.getDetailGridInfo = function (id) {\n return this.detailGridInfoMap[id];\n };\n GridApi.prototype.forEachDetailGridInfo = function (callback) {\n var index = 0;\n _.iterateObject(this.detailGridInfoMap, function (id, gridInfo) {\n // check for undefined, as old references will still be lying around\n if (_.exists(gridInfo)) {\n callback(gridInfo, index);\n index++;\n }\n });\n };\n GridApi.prototype.getDataAsCsv = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.CsvExportModule, 'api.getDataAsCsv')) {\n return this.csvCreator.getDataAsCsv(params);\n }\n };\n GridApi.prototype.exportDataAsCsv = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.CsvExportModule, 'api.exportDataAsCSv')) {\n this.csvCreator.exportDataAsCsv(params);\n }\n };\n GridApi.prototype.getDataAsExcel = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.getDataAsExcel')) {\n return this.excelCreator.getDataAsExcelXml(params);\n }\n };\n GridApi.prototype.exportDataAsExcel = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.exportDataAsExcel')) {\n this.excelCreator.exportDataAsExcel(params);\n }\n };\n /** @deprecated */\n GridApi.prototype.setEnterpriseDatasource = function (datasource) {\n console.warn(\"ag-grid: since version 18.x, api.setEnterpriseDatasource() should be replaced with api.setServerSideDatasource()\");\n this.setServerSideDatasource(datasource);\n };\n GridApi.prototype.setServerSideDatasource = function (datasource) {\n if (this.gridOptionsWrapper.isRowModelServerSide()) {\n // should really have an IEnterpriseRowModel interface, so we are not casting to any\n this.rowModel.setDatasource(datasource);\n }\n else {\n console.warn(\"ag-Grid: you can only use an enterprise datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_SERVER_SIDE + \"'\");\n }\n };\n GridApi.prototype.setDatasource = function (datasource) {\n if (this.gridOptionsWrapper.isRowModelInfinite()) {\n this.rowModel.setDatasource(datasource);\n }\n else {\n console.warn(\"ag-Grid: you can only use a datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_INFINITE + \"'\");\n }\n };\n GridApi.prototype.setViewportDatasource = function (viewportDatasource) {\n if (this.gridOptionsWrapper.isRowModelViewport()) {\n // this is bad coding, because it's using an interface that's exposed in the enterprise.\n // really we should create an interface in the core for viewportDatasource and let\n // the enterprise implement it, rather than casting to 'any' here\n this.rowModel.setViewportDatasource(viewportDatasource);\n }\n else {\n console.warn(\"ag-Grid: you can only use a viewport datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_VIEWPORT + \"'\");\n }\n };\n GridApi.prototype.setRowData = function (rowData) {\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n if (this.gridOptionsWrapper.isDeltaRowDataMode()) {\n var _a = this.immutableService.createTransactionForRowData(rowData), transaction = _a[0], orderIdMap = _a[1];\n this.clientSideRowModel.updateRowData(transaction, orderIdMap);\n // need to force updating of full width rows - note this wouldn't be necessary the full width cell comp listened\n // to the data change event on the row node and refreshed itself.\n this.rowRenderer.refreshFullWidthRows();\n }\n else {\n this.selectionController.reset();\n this.clientSideRowModel.setRowData(rowData);\n }\n }\n else {\n console.warn('cannot call setRowData unless using normal row model');\n }\n };\n /** @deprecated */\n GridApi.prototype.setFloatingTopRowData = function (rows) {\n console.warn('ag-Grid: since v12, api.setFloatingTopRowData() is now api.setPinnedTopRowData()');\n this.setPinnedTopRowData(rows);\n };\n /** @deprecated */\n GridApi.prototype.setFloatingBottomRowData = function (rows) {\n console.warn('ag-Grid: since v12, api.setFloatingBottomRowData() is now api.setPinnedBottomRowData()');\n this.setPinnedBottomRowData(rows);\n };\n /** @deprecated */\n GridApi.prototype.getFloatingTopRowCount = function () {\n console.warn('ag-Grid: since v12, api.getFloatingTopRowCount() is now api.getPinnedTopRowCount()');\n return this.getPinnedTopRowCount();\n };\n /** @deprecated */\n GridApi.prototype.getFloatingBottomRowCount = function () {\n console.warn('ag-Grid: since v12, api.getFloatingBottomRowCount() is now api.getPinnedBottomRowCount()');\n return this.getPinnedBottomRowCount();\n };\n /** @deprecated */\n GridApi.prototype.getFloatingTopRow = function (index) {\n console.warn('ag-Grid: since v12, api.getFloatingTopRow() is now api.getPinnedTopRow()');\n return this.getPinnedTopRow(index);\n };\n /** @deprecated */\n GridApi.prototype.getFloatingBottomRow = function (index) {\n console.warn('ag-Grid: since v12, api.getFloatingBottomRow() is now api.getPinnedBottomRow()');\n return this.getPinnedBottomRow(index);\n };\n GridApi.prototype.setPinnedTopRowData = function (rows) {\n this.pinnedRowModel.setPinnedTopRowData(rows);\n };\n GridApi.prototype.setPinnedBottomRowData = function (rows) {\n this.pinnedRowModel.setPinnedBottomRowData(rows);\n };\n GridApi.prototype.getPinnedTopRowCount = function () {\n return this.pinnedRowModel.getPinnedTopRowCount();\n };\n GridApi.prototype.getPinnedBottomRowCount = function () {\n return this.pinnedRowModel.getPinnedBottomRowCount();\n };\n GridApi.prototype.getPinnedTopRow = function (index) {\n return this.pinnedRowModel.getPinnedTopRow(index);\n };\n GridApi.prototype.getPinnedBottomRow = function (index) {\n return this.pinnedRowModel.getPinnedBottomRow(index);\n };\n GridApi.prototype.setColumnDefs = function (colDefs, source) {\n if (source === void 0) { source = \"api\"; }\n this.columnController.setColumnDefs(colDefs, source);\n };\n GridApi.prototype.expireValueCache = function () {\n this.valueCache.expire();\n };\n GridApi.prototype.getVerticalPixelRange = function () {\n return this.gridPanel.getVScrollPosition();\n };\n GridApi.prototype.getHorizontalPixelRange = function () {\n return this.gridPanel.getHScrollPosition();\n };\n GridApi.prototype.setAlwaysShowVerticalScroll = function (show) {\n this.gridOptionsWrapper.setProperty('alwaysShowVerticalScroll', show);\n };\n GridApi.prototype.refreshToolPanel = function () {\n this.gridCore.refreshSideBar();\n };\n GridApi.prototype.refreshCells = function (params) {\n if (params === void 0) { params = {}; }\n if (Array.isArray(params)) {\n // the old version of refreshCells() took an array of rowNodes for the first argument\n console.warn('since ag-Grid v11.1, refreshCells() now takes parameters, please see the documentation.');\n return;\n }\n this.rowRenderer.refreshCells(params);\n };\n GridApi.prototype.flashCells = function (params) {\n if (params === void 0) { params = {}; }\n this.rowRenderer.flashCells(params);\n };\n GridApi.prototype.redrawRows = function (params) {\n if (params === void 0) { params = {}; }\n if (params && params.rowNodes) {\n this.rowRenderer.redrawRows(params.rowNodes);\n }\n else {\n this.rowRenderer.redrawAfterModelUpdate();\n }\n };\n GridApi.prototype.timeFullRedraw = function (count) {\n if (count === void 0) { count = 1; }\n var iterationCount = 0;\n var totalProcessing = 0;\n var totalReflow = 0;\n var that = this;\n doOneIteration();\n function doOneIteration() {\n var start = (new Date()).getTime();\n that.rowRenderer.redrawAfterModelUpdate();\n var endProcessing = (new Date()).getTime();\n window.setTimeout(function () {\n var endReflow = (new Date()).getTime();\n var durationProcessing = endProcessing - start;\n var durationReflow = endReflow - endProcessing;\n // tslint:disable-next-line\n console.log('duration: processing = ' + durationProcessing + 'ms, reflow = ' + durationReflow + 'ms');\n iterationCount++;\n totalProcessing += durationProcessing;\n totalReflow += durationReflow;\n if (iterationCount < count) {\n // wait for 1s between tests\n window.setTimeout(doOneIteration, 1000);\n }\n else {\n finish();\n }\n }, 0);\n }\n function finish() {\n // tslint:disable-next-line\n console.log('tests complete. iteration count = ' + iterationCount);\n // tslint:disable-next-line\n console.log('average processing = ' + (totalProcessing / iterationCount) + 'ms');\n // tslint:disable-next-line\n console.log('average reflow = ' + (totalReflow / iterationCount) + 'ms');\n }\n };\n /** @deprecated */\n GridApi.prototype.refreshView = function () {\n console.warn('ag-Grid: since v11.1, refreshView() is deprecated, please call refreshCells() or redrawRows() instead');\n this.redrawRows();\n };\n //** @deprecated */\n GridApi.prototype.refreshRows = function (rowNodes) {\n console.warn('since ag-Grid v11.1, refreshRows() is deprecated, please use refreshCells({rowNodes: rows}) or redrawRows({rowNodes: rows}) instead');\n this.refreshCells({ rowNodes: rowNodes });\n };\n /** @deprecated */\n GridApi.prototype.rowDataChanged = function (rows) {\n console.warn('ag-Grid: rowDataChanged is deprecated, either call refreshView() to refresh everything, or call rowNode.setRowData(newData) to set value on a particular node');\n this.redrawRows();\n };\n /** @deprecated */\n GridApi.prototype.softRefreshView = function () {\n console.error('ag-Grid: since v16, softRefreshView() is no longer supported. Please check the documentation on how to refresh.');\n };\n /** @deprecated */\n GridApi.prototype.refreshGroupRows = function () {\n console.warn('ag-Grid: since v11.1, refreshGroupRows() is no longer supported, call refreshCells() instead. ' +\n 'Because refreshCells() now does dirty checking, it will only refresh cells that have changed, so it should ' +\n 'not be necessary to only refresh the group rows.');\n this.refreshCells();\n };\n GridApi.prototype.setFunctionsReadOnly = function (readOnly) {\n this.gridOptionsWrapper.setProperty('functionsReadOnly', readOnly);\n };\n GridApi.prototype.refreshHeader = function () {\n this.headerRootComp.refreshHeader();\n this.gridPanel.setHeaderAndFloatingHeights();\n };\n GridApi.prototype.isAnyFilterPresent = function () {\n return this.filterManager.isAnyFilterPresent();\n };\n GridApi.prototype.isAdvancedFilterPresent = function () {\n console.warn('ag-Grid: isAdvancedFilterPresent() is deprecated, please use isColumnFilterPresent()');\n return this.isColumnFilterPresent();\n };\n GridApi.prototype.isColumnFilterPresent = function () {\n return this.filterManager.isAdvancedFilterPresent();\n };\n GridApi.prototype.isQuickFilterPresent = function () {\n return this.filterManager.isQuickFilterPresent();\n };\n GridApi.prototype.getModel = function () {\n return this.rowModel;\n };\n GridApi.prototype.setRowNodeExpanded = function (rowNode, expanded) {\n if (rowNode) {\n rowNode.setExpanded(expanded);\n }\n };\n GridApi.prototype.onGroupExpandedOrCollapsed = function (deprecated_refreshFromIndex) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('ag-Grid: cannot call onGroupExpandedOrCollapsed unless using normal row model');\n }\n if (_.exists(deprecated_refreshFromIndex)) {\n console.warn('ag-Grid: api.onGroupExpandedOrCollapsed - refreshFromIndex parameter is no longer used, the grid will refresh all rows');\n }\n // we don't really want the user calling this if only one rowNode was expanded, instead they should be\n // calling rowNode.setExpanded(boolean) - this way we do a 'keepRenderedRows=false' so that the whole\n // grid gets refreshed again - otherwise the row with the rowNodes that were changed won't get updated,\n // and thus the expand icon in the group cell won't get 'opened' or 'closed'.\n this.clientSideRowModel.refreshModel({ step: Constants.STEP_MAP });\n };\n GridApi.prototype.refreshInMemoryRowModel = function (step) {\n console.warn(\"ag-grid: since version 18.x, api.refreshInMemoryRowModel() should be replaced with api.refreshClientSideRowModel()\");\n this.refreshClientSideRowModel(step);\n };\n GridApi.prototype.refreshClientSideRowModel = function (step) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call refreshClientSideRowModel unless using normal row model');\n }\n var paramsStep = Constants.STEP_EVERYTHING;\n var stepsMapped = {\n group: Constants.STEP_EVERYTHING,\n filter: Constants.STEP_FILTER,\n map: Constants.STEP_MAP,\n aggregate: Constants.STEP_AGGREGATE,\n sort: Constants.STEP_SORT,\n pivot: Constants.STEP_PIVOT\n };\n if (_.exists(step)) {\n paramsStep = stepsMapped[step];\n }\n if (_.missing(paramsStep)) {\n console.error(\"ag-Grid: invalid step \" + step + \", available steps are \" + Object.keys(stepsMapped).join(', '));\n return;\n }\n var modelParams = {\n step: paramsStep,\n keepRenderedRows: true,\n animate: true,\n keepEditingRows: true\n };\n this.clientSideRowModel.refreshModel(modelParams);\n };\n GridApi.prototype.isAnimationFrameQueueEmpty = function () {\n return this.animationFrameService.isQueueEmpty();\n };\n GridApi.prototype.getRowNode = function (id) {\n return this.rowModel.getRowNode(id);\n };\n GridApi.prototype.expandAll = function () {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('ag-Grid: cannot call expandAll unless using normal row model');\n return;\n }\n this.clientSideRowModel.expandOrCollapseAll(true);\n };\n GridApi.prototype.collapseAll = function () {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('ag-Grid: cannot call collapseAll unless using normal row model');\n return;\n }\n this.clientSideRowModel.expandOrCollapseAll(false);\n };\n GridApi.prototype.getToolPanelInstance = function (id) {\n return this.gridCore.getToolPanelInstance(id);\n };\n GridApi.prototype.addVirtualRowListener = function (eventName, rowIndex, callback) {\n if (typeof eventName !== 'string') {\n console.warn('ag-Grid: addVirtualRowListener is deprecated, please use addRenderedRowListener.');\n }\n this.addRenderedRowListener(eventName, rowIndex, callback);\n };\n GridApi.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n if (eventName === 'virtualRowSelected') {\n console.warn(\"ag-Grid: event virtualRowSelected is deprecated, to register for individual row\\n selection events, add a listener directly to the row node.\");\n }\n this.rowRenderer.addRenderedRowListener(eventName, rowIndex, callback);\n };\n GridApi.prototype.setQuickFilter = function (newFilter) {\n this.filterManager.setQuickFilter(newFilter);\n };\n GridApi.prototype.selectIndex = function (index, tryMulti, suppressEvents) {\n console.warn('ag-Grid: do not use api for selection, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n this.selectionController.selectIndex(index, tryMulti);\n };\n GridApi.prototype.deselectIndex = function (index, suppressEvents) {\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('ag-Grid: do not use api for selection, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n this.selectionController.deselectIndex(index);\n };\n GridApi.prototype.selectNode = function (node, tryMulti, suppressEvents) {\n if (tryMulti === void 0) { tryMulti = false; }\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('ag-Grid: API for selection is deprecated, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n node.setSelectedParams({ newValue: true, clearSelection: !tryMulti });\n };\n GridApi.prototype.deselectNode = function (node, suppressEvents) {\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('ag-Grid: API for selection is deprecated, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n node.setSelectedParams({ newValue: false });\n };\n GridApi.prototype.selectAll = function () {\n this.selectionController.selectAllRowNodes();\n };\n GridApi.prototype.deselectAll = function () {\n this.selectionController.deselectAllRowNodes();\n };\n GridApi.prototype.selectAllFiltered = function () {\n this.selectionController.selectAllRowNodes(true);\n };\n GridApi.prototype.deselectAllFiltered = function () {\n this.selectionController.deselectAllRowNodes(true);\n };\n GridApi.prototype.recomputeAggregates = function () {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call recomputeAggregates unless using normal row model');\n }\n console.warn(\"recomputeAggregates is deprecated, please call api.refreshClientSideRowModel('aggregate') instead\");\n this.clientSideRowModel.refreshModel({ step: Constants.STEP_AGGREGATE });\n };\n GridApi.prototype.sizeColumnsToFit = function () {\n this.gridPanel.sizeColumnsToFit();\n };\n GridApi.prototype.showLoadingOverlay = function () {\n this.gridPanel.showLoadingOverlay();\n };\n GridApi.prototype.showNoRowsOverlay = function () {\n this.gridPanel.showNoRowsOverlay();\n };\n GridApi.prototype.hideOverlay = function () {\n this.gridPanel.hideOverlay();\n };\n GridApi.prototype.isNodeSelected = function (node) {\n console.warn('ag-Grid: no need to call api.isNodeSelected(), just call node.isSelected() instead');\n return node.isSelected();\n };\n GridApi.prototype.getSelectedNodesById = function () {\n console.error('ag-Grid: since version 3.4, getSelectedNodesById no longer exists, use getSelectedNodes() instead');\n return null;\n };\n GridApi.prototype.getSelectedNodes = function () {\n return this.selectionController.getSelectedNodes();\n };\n GridApi.prototype.getSelectedRows = function () {\n return this.selectionController.getSelectedRows();\n };\n GridApi.prototype.getBestCostNodeSelection = function () {\n return this.selectionController.getBestCostNodeSelection();\n };\n GridApi.prototype.getRenderedNodes = function () {\n return this.rowRenderer.getRenderedNodes();\n };\n GridApi.prototype.ensureColIndexVisible = function (index) {\n console.warn('ag-Grid: ensureColIndexVisible(index) no longer supported, use ensureColumnVisible(colKey) instead.');\n };\n GridApi.prototype.ensureColumnVisible = function (key) {\n this.gridPanel.ensureColumnVisible(key);\n };\n // Valid values for position are bottom, middle and top\n GridApi.prototype.ensureIndexVisible = function (index, position) {\n this.gridPanel.ensureIndexVisible(index, position);\n };\n // Valid values for position are bottom, middle and top\n GridApi.prototype.ensureNodeVisible = function (comparator, position) {\n this.gridCore.ensureNodeVisible(comparator, position);\n };\n GridApi.prototype.forEachLeafNode = function (callback) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNode unless using normal row model');\n }\n this.clientSideRowModel.forEachLeafNode(callback);\n };\n GridApi.prototype.forEachNode = function (callback) {\n this.rowModel.forEachNode(callback);\n };\n GridApi.prototype.forEachNodeAfterFilter = function (callback) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNodeAfterFilter unless using normal row model');\n }\n this.clientSideRowModel.forEachNodeAfterFilter(callback);\n };\n GridApi.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNodeAfterFilterAndSort unless using normal row model');\n }\n this.clientSideRowModel.forEachNodeAfterFilterAndSort(callback);\n };\n GridApi.prototype.getFilterApiForColDef = function (colDef) {\n console.warn('ag-grid API method getFilterApiForColDef deprecated, use getFilterApi instead');\n return this.getFilterInstance(colDef);\n };\n GridApi.prototype.getFilterInstance = function (key) {\n var column = this.columnController.getPrimaryColumn(key);\n if (column) {\n return this.filterManager.getFilterComponent(column, 'NO_UI').resolveNow(null, function (filterComp) { return filterComp; });\n }\n };\n GridApi.prototype.getFilterApi = function (key) {\n console.warn('ag-Grid: getFilterApi is deprecated, use getFilterInstance instead');\n return this.getFilterInstance(key);\n };\n GridApi.prototype.destroyFilter = function (key) {\n var column = this.columnController.getPrimaryColumn(key);\n if (column) {\n return this.filterManager.destroyFilter(column, \"filterDestroyed\");\n }\n };\n GridApi.prototype.getStatusPanel = function (key) {\n if (this.statusBarService) {\n return this.statusBarService.getStatusPanel(key);\n }\n };\n GridApi.prototype.getColumnDef = function (key) {\n var column = this.columnController.getPrimaryColumn(key);\n if (column) {\n return column.getColDef();\n }\n else {\n return null;\n }\n };\n GridApi.prototype.onFilterChanged = function () {\n this.filterManager.onFilterChanged();\n };\n GridApi.prototype.onSortChanged = function () {\n this.sortController.onSortChanged();\n };\n GridApi.prototype.setSortModel = function (sortModel, source) {\n if (source === void 0) { source = \"api\"; }\n this.sortController.setSortModel(sortModel, source);\n };\n GridApi.prototype.getSortModel = function () {\n return this.sortController.getSortModel();\n };\n GridApi.prototype.setFilterModel = function (model) {\n this.filterManager.setFilterModel(model);\n };\n GridApi.prototype.getFilterModel = function () {\n return this.filterManager.getFilterModel();\n };\n GridApi.prototype.getFocusedCell = function () {\n return this.focusedCellController.getFocusedCell();\n };\n GridApi.prototype.clearFocusedCell = function () {\n return this.focusedCellController.clearFocusedCell();\n };\n GridApi.prototype.setFocusedCell = function (rowIndex, colKey, floating) {\n this.focusedCellController.setFocusedCell(rowIndex, colKey, floating, true);\n };\n GridApi.prototype.setSuppressRowDrag = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_ROW_DRAG, value);\n };\n GridApi.prototype.setHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_HEADER_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.setGridAutoHeight = function (gridAutoHeight) {\n console.warn('api.setGridAutoHeight(boolean) is deprecated, please use api.setDomLayout() instead');\n this.setDomLayout(gridAutoHeight ? 'autoHeight' : 'normal');\n };\n GridApi.prototype.setDomLayout = function (domLayout) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_DOM_LAYOUT, domLayout);\n };\n GridApi.prototype.setEnableCellTextSelection = function (selectable) {\n this.gridPanel.setCellTextSelection(selectable);\n };\n GridApi.prototype.setGroupHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.setFloatingFiltersHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.setPivotGroupHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.setPivotHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.isSideBarVisible = function () {\n return this.gridCore.isSideBarVisible();\n };\n GridApi.prototype.setSideBarVisible = function (show) {\n this.gridCore.setSideBarVisible(show);\n };\n GridApi.prototype.setSideBarPosition = function (position) {\n this.gridCore.setSideBarPosition(position);\n };\n GridApi.prototype.showToolPanel = function (show) {\n console.warn(\"ag-grid: from v19 api.showToolPanel has been deprecated in favour of api.setSideBarVisible\");\n this.setSideBarVisible(show);\n };\n GridApi.prototype.openToolPanel = function (key) {\n this.gridCore.openToolPanel(key);\n };\n GridApi.prototype.closeToolPanel = function () {\n this.gridCore.closeToolPanel();\n };\n GridApi.prototype.getOpenedToolPanel = function () {\n return this.gridCore.getOpenedToolPanel();\n };\n GridApi.prototype.getSideBar = function () {\n return this.gridCore.getSideBar();\n };\n GridApi.prototype.setSideBar = function (def) {\n return this.gridCore.setSideBar(def);\n };\n GridApi.prototype.setSuppressClipboardPaste = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_CLIPBOARD_PASTE, value);\n };\n GridApi.prototype.isToolPanelShowing = function () {\n return this.gridCore.isToolPanelShowing();\n };\n GridApi.prototype.doLayout = function () {\n this.gridPanel.checkViewportAndScrolls();\n };\n GridApi.prototype.resetRowHeights = function () {\n if (_.exists(this.clientSideRowModel)) {\n this.clientSideRowModel.resetRowHeights();\n }\n };\n GridApi.prototype.setGroupRemoveSingleChildren = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN, value);\n };\n GridApi.prototype.setGroupRemoveLowestSingleChildren = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, value);\n };\n GridApi.prototype.onRowHeightChanged = function () {\n if (_.exists(this.clientSideRowModel)) {\n this.clientSideRowModel.onRowHeightChanged();\n }\n };\n GridApi.prototype.getValue = function (colKey, rowNode) {\n var column = this.columnController.getPrimaryColumn(colKey);\n if (_.missing(column)) {\n column = this.columnController.getGridColumn(colKey);\n }\n if (_.missing(column)) {\n return null;\n }\n else {\n return this.valueService.getValue(column, rowNode);\n }\n };\n GridApi.prototype.addEventListener = function (eventType, listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.addEventListener(eventType, listener, async);\n };\n GridApi.prototype.addGlobalListener = function (listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.addGlobalListener(listener, async);\n };\n GridApi.prototype.removeEventListener = function (eventType, listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.removeEventListener(eventType, listener, async);\n };\n GridApi.prototype.removeGlobalListener = function (listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.removeGlobalListener(listener, async);\n };\n GridApi.prototype.dispatchEvent = function (event) {\n this.eventService.dispatchEvent(event);\n };\n GridApi.prototype.destroy = function () {\n // destroy the UI first (as they use the services)\n this.gridCore.destroy();\n // destroy the services\n this.context.destroy();\n };\n GridApi.prototype.resetQuickFilter = function () {\n this.rowModel.forEachNode(function (node) { return node.quickFilterAggregateText = null; });\n };\n GridApi.prototype.getRangeSelections = function () {\n console.warn(\"ag-Grid: in v20.1.x, api.getRangeSelections() is gone, please use getCellRanges() instead.\\n We had to change how cell selections works a small bit to allow charting to integrate. The return type of\\n getCellRanges() is a bit different, please check the ag-Grid documentation.\");\n return null;\n };\n GridApi.prototype.getCellRanges = function () {\n if (this.rangeController) {\n return this.rangeController.getCellRanges();\n }\n else {\n console.warn('ag-Grid: cell range selection is only available in ag-Grid Enterprise');\n return null;\n }\n };\n GridApi.prototype.camelCaseToHumanReadable = function (camelCase) {\n return _.camelCaseToHumanText(camelCase);\n };\n GridApi.prototype.addRangeSelection = function (deprecatedNoLongerUsed) {\n console.warn('ag-Grid: As of version 21.x, range selection changed slightly to allow charting integration. Please call api.addCellRange() instead of api.addRangeSelection()');\n };\n GridApi.prototype.addCellRange = function (params) {\n if (!this.rangeController) {\n console.warn('ag-Grid: cell range selection is only available in ag-Grid Enterprise');\n }\n this.rangeController.addCellRange(params);\n };\n GridApi.prototype.clearRangeSelection = function () {\n if (!this.rangeController) {\n console.warn('ag-Grid: cell range selection is only available in ag-Grid Enterprise');\n }\n this.rangeController.removeAllCellRanges();\n };\n GridApi.prototype.undoCellEditing = function () {\n this.undoRedoService.undo();\n };\n GridApi.prototype.redoCellEditing = function () {\n this.undoRedoService.redo();\n };\n GridApi.prototype.getChartModels = function () {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.getChartModels') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.getChartModels')) {\n return this.chartService.getChartModels();\n }\n };\n GridApi.prototype.createRangeChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.createRangeChart') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createRangeChart')) {\n return this.chartService.createRangeChart(params);\n }\n };\n GridApi.prototype.createPivotChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.createPivotChart') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createPivotChart')) {\n return this.chartService.createPivotChart(params);\n }\n };\n GridApi.prototype.copySelectedRowsToClipboard = function (includeHeader, columnKeys) {\n if (!this.clipboardService) {\n console.warn('ag-Grid: clipboard is only available in ag-Grid Enterprise');\n }\n this.clipboardService.copySelectedRowsToClipboard(includeHeader, columnKeys);\n };\n GridApi.prototype.copySelectedRangeToClipboard = function (includeHeader) {\n if (!this.clipboardService) {\n console.warn('ag-Grid: clipboard is only available in ag-Grid Enterprise');\n }\n this.clipboardService.copySelectedRangeToClipboard(includeHeader);\n };\n GridApi.prototype.copySelectedRangeDown = function () {\n if (!this.clipboardService) {\n console.warn('ag-Grid: clipboard is only available in ag-Grid Enterprise');\n }\n this.clipboardService.copyRangeDown();\n };\n GridApi.prototype.showColumnMenuAfterButtonClick = function (colKey, buttonElement) {\n // use grid column so works with pivot mode\n var column = this.columnController.getGridColumn(colKey);\n this.menuFactory.showMenuAfterButtonClick(column, buttonElement);\n };\n GridApi.prototype.showColumnMenuAfterMouseClick = function (colKey, mouseEvent) {\n // use grid column so works with pivot mode\n var column = this.columnController.getGridColumn(colKey);\n this.menuFactory.showMenuAfterMouseEvent(column, mouseEvent);\n };\n GridApi.prototype.hidePopupMenu = function () {\n // hide the context menu if in enterprise\n if (this.contextMenuFactory) {\n this.contextMenuFactory.hideActiveMenu();\n }\n // and hide the column menu always\n this.menuFactory.hideActiveMenu();\n };\n GridApi.prototype.setPopupParent = function (ePopupParent) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_POPUP_PARENT, ePopupParent);\n };\n GridApi.prototype.tabToNextCell = function () {\n return this.rowRenderer.tabToNextCell(false);\n };\n GridApi.prototype.tabToPreviousCell = function () {\n return this.rowRenderer.tabToNextCell(true);\n };\n GridApi.prototype.getCellRendererInstances = function (params) {\n if (params === void 0) { params = {}; }\n return this.rowRenderer.getCellRendererInstances(params);\n };\n GridApi.prototype.getCellEditorInstances = function (params) {\n if (params === void 0) { params = {}; }\n return this.rowRenderer.getCellEditorInstances(params);\n };\n GridApi.prototype.getEditingCells = function () {\n return this.rowRenderer.getEditingCells();\n };\n GridApi.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.rowRenderer.stopEditing(cancel);\n };\n GridApi.prototype.startEditingCell = function (params) {\n var column = this.columnController.getGridColumn(params.colKey);\n if (!column) {\n console.warn(\"ag-Grid: no column found for \" + params.colKey);\n return;\n }\n var cellPosition = {\n rowIndex: params.rowIndex,\n rowPinned: params.rowPinned,\n column: column\n };\n var notPinned = _.missing(params.rowPinned);\n if (notPinned) {\n this.gridPanel.ensureIndexVisible(params.rowIndex);\n }\n this.rowRenderer.startEditingCell(cellPosition, params.keyPress, params.charPress);\n };\n GridApi.prototype.addAggFunc = function (key, aggFunc) {\n if (this.aggFuncService) {\n this.aggFuncService.addAggFunc(key, aggFunc);\n }\n };\n GridApi.prototype.addAggFuncs = function (aggFuncs) {\n if (this.aggFuncService) {\n this.aggFuncService.addAggFuncs(aggFuncs);\n }\n };\n GridApi.prototype.clearAggFuncs = function () {\n if (this.aggFuncService) {\n this.aggFuncService.clear();\n }\n };\n GridApi.prototype.updateRowData = function (rowDataTransaction) {\n var res = null;\n if (this.clientSideRowModel) {\n res = this.clientSideRowModel.updateRowData(rowDataTransaction);\n }\n else if (this.infiniteRowModel) {\n this.infiniteRowModel.updateRowData(rowDataTransaction);\n }\n else {\n console.error('ag-Grid: updateRowData() only works with ClientSideRowModel and InfiniteRowModel.');\n }\n // refresh all the full width rows\n this.rowRenderer.refreshFullWidthRows();\n // do change detection for all present cells\n if (!this.gridOptionsWrapper.isSuppressChangeDetection()) {\n this.rowRenderer.refreshCells();\n }\n return res;\n };\n GridApi.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {\n if (!this.clientSideRowModel) {\n console.error('ag-Grid: api.batchUpdateRowData() only works with ClientSideRowModel.');\n return;\n }\n this.clientSideRowModel.batchUpdateRowData(rowDataTransaction, callback);\n };\n GridApi.prototype.insertItemsAtIndex = function (index, items, skipRefresh) {\n if (skipRefresh === void 0) { skipRefresh = false; }\n console.warn('ag-Grid: insertItemsAtIndex() is deprecated, use updateRowData(transaction) instead.');\n this.updateRowData({ add: items, addIndex: index, update: null, remove: null });\n };\n GridApi.prototype.removeItems = function (rowNodes, skipRefresh) {\n if (skipRefresh === void 0) { skipRefresh = false; }\n console.warn('ag-Grid: removeItems() is deprecated, use updateRowData(transaction) instead.');\n var dataToRemove = rowNodes.map(function (rowNode) { return rowNode.data; });\n this.updateRowData({ add: null, addIndex: null, update: null, remove: dataToRemove });\n };\n GridApi.prototype.addItems = function (items, skipRefresh) {\n if (skipRefresh === void 0) { skipRefresh = false; }\n console.warn('ag-Grid: addItems() is deprecated, use updateRowData(transaction) instead.');\n this.updateRowData({ add: items, addIndex: null, update: null, remove: null });\n };\n GridApi.prototype.refreshVirtualPageCache = function () {\n console.warn('ag-Grid: refreshVirtualPageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');\n this.refreshInfiniteCache();\n };\n GridApi.prototype.refreshInfinitePageCache = function () {\n console.warn('ag-Grid: refreshInfinitePageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');\n this.refreshInfiniteCache();\n };\n GridApi.prototype.refreshInfiniteCache = function () {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.refreshCache();\n }\n else {\n console.warn(\"ag-Grid: api.refreshInfiniteCache is only available when rowModelType='infinite'.\");\n }\n };\n GridApi.prototype.purgeVirtualPageCache = function () {\n console.warn('ag-Grid: purgeVirtualPageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');\n this.purgeInfinitePageCache();\n };\n GridApi.prototype.purgeInfinitePageCache = function () {\n console.warn('ag-Grid: purgeInfinitePageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');\n this.purgeInfiniteCache();\n };\n GridApi.prototype.purgeInfiniteCache = function () {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.purgeCache();\n }\n else {\n console.warn(\"ag-Grid: api.purgeInfiniteCache is only available when rowModelType='infinite'.\");\n }\n };\n /** @deprecated */\n GridApi.prototype.purgeEnterpriseCache = function (route) {\n console.warn(\"ag-grid: since version 18.x, api.purgeEnterpriseCache() should be replaced with api.purgeServerSideCache()\");\n this.purgeServerSideCache(route);\n };\n GridApi.prototype.purgeServerSideCache = function (route) {\n if (this.serverSideRowModel) {\n this.serverSideRowModel.purgeCache(route);\n }\n else {\n console.warn(\"ag-Grid: api.purgeServerSideCache is only available when rowModelType='enterprise'.\");\n }\n };\n GridApi.prototype.getVirtualRowCount = function () {\n console.warn('ag-Grid: getVirtualRowCount() is now called getInfiniteRowCount(), please call getInfiniteRowCount() instead');\n return this.getInfiniteRowCount();\n };\n GridApi.prototype.getInfiniteRowCount = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.getVirtualRowCount();\n }\n else {\n console.warn(\"ag-Grid: api.getVirtualRowCount is only available when rowModelType='virtual'.\");\n }\n };\n GridApi.prototype.isMaxRowFound = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.isMaxRowFound();\n }\n else {\n console.warn(\"ag-Grid: api.isMaxRowFound is only available when rowModelType='virtual'.\");\n }\n };\n GridApi.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {\n console.warn('ag-Grid: setVirtualRowCount() is now called setInfiniteRowCount(), please call setInfiniteRowCount() instead');\n this.setInfiniteRowCount(rowCount, maxRowFound);\n };\n GridApi.prototype.setInfiniteRowCount = function (rowCount, maxRowFound) {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.setVirtualRowCount(rowCount, maxRowFound);\n }\n else {\n console.warn(\"ag-Grid: api.setVirtualRowCount is only available when rowModelType='virtual'.\");\n }\n };\n GridApi.prototype.getVirtualPageState = function () {\n console.warn('ag-Grid: getVirtualPageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');\n return this.getCacheBlockState();\n };\n GridApi.prototype.getInfinitePageState = function () {\n console.warn('ag-Grid: getInfinitePageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');\n return this.getCacheBlockState();\n };\n GridApi.prototype.getCacheBlockState = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.getBlockState();\n }\n else if (this.serverSideRowModel) {\n return this.serverSideRowModel.getBlockState();\n }\n else {\n console.warn(\"ag-Grid: api.getCacheBlockState() is only available when rowModelType='infinite' or rowModelType='serverSide'.\");\n }\n };\n GridApi.prototype.checkGridSize = function () {\n this.gridPanel.setHeaderAndFloatingHeights();\n };\n GridApi.prototype.getFirstRenderedRow = function () {\n console.warn('in ag-Grid v12, getFirstRenderedRow() was renamed to getFirstDisplayedRow()');\n return this.getFirstDisplayedRow();\n };\n GridApi.prototype.getFirstDisplayedRow = function () {\n return this.rowRenderer.getFirstVirtualRenderedRow();\n };\n GridApi.prototype.getLastRenderedRow = function () {\n console.warn('in ag-Grid v12, getLastRenderedRow() was renamed to getLastDisplayedRow()');\n return this.getLastDisplayedRow();\n };\n GridApi.prototype.getLastDisplayedRow = function () {\n return this.rowRenderer.getLastVirtualRenderedRow();\n };\n GridApi.prototype.getDisplayedRowAtIndex = function (index) {\n return this.rowModel.getRow(index);\n };\n GridApi.prototype.getDisplayedRowCount = function () {\n return this.rowModel.getRowCount();\n };\n GridApi.prototype.paginationIsLastPageFound = function () {\n return this.paginationProxy.isLastPageFound();\n };\n GridApi.prototype.paginationGetPageSize = function () {\n return this.paginationProxy.getPageSize();\n };\n GridApi.prototype.paginationSetPageSize = function (size) {\n this.gridOptionsWrapper.setProperty('paginationPageSize', size);\n };\n GridApi.prototype.paginationGetCurrentPage = function () {\n return this.paginationProxy.getCurrentPage();\n };\n GridApi.prototype.paginationGetTotalPages = function () {\n return this.paginationProxy.getTotalPages();\n };\n GridApi.prototype.paginationGetRowCount = function () {\n return this.paginationProxy.getMasterRowCount();\n };\n GridApi.prototype.paginationGoToNextPage = function () {\n this.paginationProxy.goToNextPage();\n };\n GridApi.prototype.paginationGoToPreviousPage = function () {\n this.paginationProxy.goToPreviousPage();\n };\n GridApi.prototype.paginationGoToFirstPage = function () {\n this.paginationProxy.goToFirstPage();\n };\n GridApi.prototype.paginationGoToLastPage = function () {\n this.paginationProxy.goToLastPage();\n };\n GridApi.prototype.paginationGoToPage = function (page) {\n this.paginationProxy.goToPage(page);\n };\n __decorate([\n Optional('immutableService')\n ], GridApi.prototype, \"immutableService\", void 0);\n __decorate([\n Optional('csvCreator')\n ], GridApi.prototype, \"csvCreator\", void 0);\n __decorate([\n Optional('excelCreator')\n ], GridApi.prototype, \"excelCreator\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], GridApi.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('filterManager')\n ], GridApi.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('columnController')\n ], GridApi.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('selectionController')\n ], GridApi.prototype, \"selectionController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], GridApi.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('valueService')\n ], GridApi.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('alignedGridsService')\n ], GridApi.prototype, \"alignedGridsService\", void 0);\n __decorate([\n Autowired('eventService')\n ], GridApi.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], GridApi.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('context')\n ], GridApi.prototype, \"context\", void 0);\n __decorate([\n Autowired('rowModel')\n ], GridApi.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('sortController')\n ], GridApi.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], GridApi.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('focusedCellController')\n ], GridApi.prototype, \"focusedCellController\", void 0);\n __decorate([\n Optional('rangeController')\n ], GridApi.prototype, \"rangeController\", void 0);\n __decorate([\n Optional('clipboardService')\n ], GridApi.prototype, \"clipboardService\", void 0);\n __decorate([\n Optional('aggFuncService')\n ], GridApi.prototype, \"aggFuncService\", void 0);\n __decorate([\n Autowired('menuFactory')\n ], GridApi.prototype, \"menuFactory\", void 0);\n __decorate([\n Optional('contextMenuFactory')\n ], GridApi.prototype, \"contextMenuFactory\", void 0);\n __decorate([\n Autowired('cellRendererFactory')\n ], GridApi.prototype, \"cellRendererFactory\", void 0);\n __decorate([\n Autowired('valueCache')\n ], GridApi.prototype, \"valueCache\", void 0);\n __decorate([\n Autowired('animationFrameService')\n ], GridApi.prototype, \"animationFrameService\", void 0);\n __decorate([\n Optional('statusBarService')\n ], GridApi.prototype, \"statusBarService\", void 0);\n __decorate([\n Optional('chartService')\n ], GridApi.prototype, \"chartService\", void 0);\n __decorate([\n Optional('undoRedoService')\n ], GridApi.prototype, \"undoRedoService\", void 0);\n __decorate([\n PostConstruct\n ], GridApi.prototype, \"init\", null);\n GridApi = __decorate([\n Bean('gridApi')\n ], GridApi);\n return GridApi;\n}());\nexport { GridApi };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"../context/context\";\nvar HorizontalResizeService = /** @class */ (function () {\n function HorizontalResizeService() {\n }\n HorizontalResizeService.prototype.addResizeBar = function (params) {\n var _this = this;\n var dragSource = {\n dragStartPixels: params.dragStartPixels || 0,\n eElement: params.eResizeBar,\n onDragStart: this.onDragStart.bind(this, params),\n onDragStop: this.onDragStop.bind(this, params),\n onDragging: this.onDragging.bind(this, params)\n };\n this.dragService.addDragSource(dragSource, true);\n // we pass remove func back to the caller, so call can tell us when they\n // are finished, and then we remove the listener from the drag source\n var finishedWithResizeFunc = function () { return _this.dragService.removeDragSource(dragSource); };\n return finishedWithResizeFunc;\n };\n HorizontalResizeService.prototype.onDragStart = function (params, mouseEvent) {\n this.draggingStarted = true;\n this.dragStartX = mouseEvent.clientX;\n this.setResizeIcons();\n var shiftKey = mouseEvent instanceof MouseEvent ? mouseEvent.shiftKey === true : false;\n params.onResizeStart(shiftKey);\n };\n HorizontalResizeService.prototype.setResizeIcons = function () {\n this.oldBodyCursor = this.eGridDiv.style.cursor;\n this.oldMsUserSelect = this.eGridDiv.style.msUserSelect;\n this.oldWebkitUserSelect = this.eGridDiv.style.webkitUserSelect;\n // change the body cursor, so when drag moves out of the drag bar, the cursor is still 'resize' (or 'move'\n this.eGridDiv.style.cursor = 'col-resize';\n // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)\n this.eGridDiv.style.msUserSelect = 'none';\n this.eGridDiv.style.webkitUserSelect = 'none';\n };\n HorizontalResizeService.prototype.onDragStop = function (params, mouseEvent) {\n params.onResizeEnd(this.resizeAmount);\n this.resetIcons();\n };\n HorizontalResizeService.prototype.resetIcons = function () {\n // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)\n this.eGridDiv.style.cursor = this.oldBodyCursor;\n this.eGridDiv.style.msUserSelect = this.oldMsUserSelect;\n this.eGridDiv.style.webkitUserSelect = this.oldWebkitUserSelect;\n };\n HorizontalResizeService.prototype.onDragging = function (params, mouseEvent) {\n this.resizeAmount = mouseEvent.clientX - this.dragStartX;\n params.onResizing(this.resizeAmount);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HorizontalResizeService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('dragService')\n ], HorizontalResizeService.prototype, \"dragService\", void 0);\n __decorate([\n Autowired('eGridDiv')\n ], HorizontalResizeService.prototype, \"eGridDiv\", void 0);\n HorizontalResizeService = __decorate([\n Bean('horizontalResizeService')\n ], HorizontalResizeService);\n return HorizontalResizeService;\n}());\nexport { HorizontalResizeService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Autowired, Optional, PostConstruct } from \"./context/context\";\nimport { Component } from \"./widgets/component\";\nimport { RefSelector } from \"./widgets/componentAnnotations\";\nimport { Events } from \"./events\";\nimport { SideBarDefParser } from \"./entities/sideBar\";\nimport { _ } from \"./utils\";\nimport { ModuleNames } from \"./modules/moduleNames\";\nimport { ModuleRegistry } from \"./modules/moduleRegistry\";\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.createTemplate();\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 (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule)) {\n this.clipboardService.registerGridCore(this);\n }\n this.gridOptionsWrapper.addLayoutElement(this.getGui());\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 _.addCssClass(gridPanelEl, 'ag-has-focus');\n });\n this.addDestroyableEventListener(gridPanelEl, 'focusout', function (e) {\n if (!gridPanelEl.contains(e.relatedTarget)) {\n _.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 var theme = this.environment.getTheme().theme;\n if (/^ag-theme-(fresh|dark|blue|bootstrap)$/.test(theme)) {\n console.warn(\"ag-Grid: \\\"\" + theme + \"\\\" theme is deprecated and will be removed in the next major release (v23)\");\n }\n };\n GridCore.prototype.createTemplate = function () {\n var sideBarModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.SideBarModule);\n var statusBarModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.StatusBarModule);\n var rowGroupingLoaded = ModuleRegistry.isRegistered(ModuleNames.RowGroupingModule);\n var enterpriseCoreLoaded = ModuleRegistry.isRegistered(ModuleNames.EnterpriseCoreModule);\n var dropZones = rowGroupingLoaded ? '' : '';\n var sideBar = sideBarModuleLoaded ? '' : '';\n var statusBar = statusBarModuleLoaded ? '' : '';\n var watermark = enterpriseCoreLoaded ? '' : '';\n var template = \"
\\n \" + dropZones + \"\\n
\\n \\n \" + sideBar + \"\\n
\\n \" + statusBar + \"\\n \\n \" + watermark + \"\\n
\";\n return template;\n };\n GridCore.prototype.onGridSizeChanged = function () {\n var event = {\n type: 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 _.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.isDisplayed();\n };\n GridCore.prototype.setSideBarVisible = function (show) {\n if (!this.sideBarComp) {\n if (show) {\n console.warn('ag-Grid: sideBar is not loaded');\n }\n return;\n }\n this.sideBarComp.setDisplayed(show);\n };\n GridCore.prototype.setSideBarPosition = function (position) {\n if (!this.sideBarComp) {\n console.warn('ag-Grid: sideBar is not loaded');\n return;\n }\n this.sideBarComp.setSideBarPosition(position);\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.getToolPanelInstance = function (key) {\n if (!this.sideBarComp) {\n console.warn('ag-Grid: toolPanel is only available in ag-Grid Enterprise');\n return;\n }\n return this.sideBarComp.getToolPanelInstance(key);\n };\n GridCore.prototype.refreshSideBar = function () {\n if (this.sideBarComp) {\n this.sideBarComp.refresh();\n }\n };\n GridCore.prototype.setSideBar = function (def) {\n if (!this.sideBarComp) {\n return;\n }\n this.eRootWrapperBody.removeChild(this.sideBarComp.getGui());\n this.gridOptions.sideBar = 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.getRowCount();\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 __decorate([\n Autowired('gridOptions')\n ], GridCore.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], GridCore.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('rowModel')\n ], GridCore.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('resizeObserverService')\n ], GridCore.prototype, \"resizeObserverService\", void 0);\n __decorate([\n Autowired('columnController')\n ], GridCore.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], GridCore.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('filterManager')\n ], GridCore.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('eventService')\n ], GridCore.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('eGridDiv')\n ], GridCore.prototype, \"eGridDiv\", void 0);\n __decorate([\n Autowired('$scope')\n ], GridCore.prototype, \"$scope\", void 0);\n __decorate([\n Autowired('quickFilterOnScope')\n ], GridCore.prototype, \"quickFilterOnScope\", void 0);\n __decorate([\n Autowired('popupService')\n ], GridCore.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('focusedCellController')\n ], GridCore.prototype, \"focusedCellController\", void 0);\n __decorate([\n Autowired('loggerFactory')\n ], GridCore.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('columnApi')\n ], GridCore.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], GridCore.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('environment')\n ], GridCore.prototype, \"environment\", void 0);\n __decorate([\n Optional('clipboardService')\n ], GridCore.prototype, \"clipboardService\", void 0);\n __decorate([\n RefSelector('gridPanel')\n ], GridCore.prototype, \"gridPanel\", void 0);\n __decorate([\n RefSelector('sideBar')\n ], GridCore.prototype, \"sideBarComp\", void 0);\n __decorate([\n RefSelector('rootWrapperBody')\n ], GridCore.prototype, \"eRootWrapperBody\", void 0);\n __decorate([\n PostConstruct\n ], GridCore.prototype, \"init\", null);\n return GridCore;\n}(Component));\nexport { GridCore };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar StandardMenuFactory = /** @class */ (function () {\n function StandardMenuFactory() {\n }\n StandardMenuFactory.prototype.hideActiveMenu = function () {\n if (this.hidePopup) {\n this.hidePopup();\n }\n };\n StandardMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent) {\n var _this = this;\n this.showPopup(column, function (eMenu) {\n _this.popupService.positionPopupUnderMouseEvent({\n column: column,\n type: 'columnMenu',\n mouseEvent: mouseEvent,\n ePopup: eMenu\n });\n });\n };\n StandardMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource) {\n var _this = this;\n this.showPopup(column, function (eMenu) {\n _this.popupService.positionPopupUnderComponent({\n type: 'columnMenu', eventSource: eventSource,\n ePopup: eMenu, keepWithinBounds: true, column: column\n });\n });\n };\n StandardMenuFactory.prototype.showPopup = function (column, positionCallback) {\n var _this = this;\n var filterWrapper = this.filterManager.getOrCreateFilterWrapper(column, 'COLUMN_MENU');\n var eMenu = document.createElement('div');\n _.addCssClass(eMenu, 'ag-menu');\n filterWrapper.guiPromise.promise.then(function (gui) {\n eMenu.appendChild(gui);\n });\n var hidePopup;\n var bodyScrollListener = function (event) {\n // if h scroll, popup is no longer over the column\n if (event.direction === 'horizontal') {\n hidePopup();\n }\n };\n this.eventService.addEventListener('bodyScroll', bodyScrollListener);\n var closedCallback = function () {\n _this.eventService.removeEventListener('bodyScroll', bodyScrollListener);\n column.setMenuVisible(false, \"contextMenu\");\n };\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 hidePopup = this.popupService.addAsModalPopup(eMenu, true, closedCallback);\n positionCallback(eMenu);\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.afterGuiAttached) {\n var params = {\n hidePopup: hidePopup\n };\n filter.afterGuiAttached(params);\n }\n });\n this.hidePopup = hidePopup;\n column.setMenuVisible(true, \"contextMenu\");\n };\n StandardMenuFactory.prototype.isMenuEnabled = function (column) {\n // for standard, we show menu if filter is enabled, and he menu is not suppressed\n return column.isFilterAllowed();\n };\n __decorate([\n Autowired('eventService')\n ], StandardMenuFactory.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('filterManager')\n ], StandardMenuFactory.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('popupService')\n ], StandardMenuFactory.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], StandardMenuFactory.prototype, \"gridOptionsWrapper\", void 0);\n StandardMenuFactory = __decorate([\n Bean('menuFactory')\n ], StandardMenuFactory);\n return StandardMenuFactory;\n}());\nexport { StandardMenuFactory };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean, PostConstruct } from \"../context/context\";\nimport { Autowired } from \"../context/context\";\nimport { NumberSequence, _ } from '../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 _.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 = _.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 (_.exists(instanceId)) {\n var eventFromThisGrid = instanceId === this.gridInstanceId;\n return eventFromThisGrid;\n }\n }\n return false;\n };\n MouseEventService.prototype.getCellPositionForEvent = function (event) {\n var cellComp = this.getRenderedCellForEvent(event);\n return cellComp ? cellComp.getCellPosition() : null;\n };\n var MouseEventService_1;\n MouseEventService.gridInstanceSequence = new NumberSequence();\n MouseEventService.GRID_DOM_KEY = '__ag_grid_instance';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], MouseEventService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eGridDiv')\n ], MouseEventService.prototype, \"eGridDiv\", void 0);\n __decorate([\n PostConstruct\n ], MouseEventService.prototype, \"init\", null);\n MouseEventService = MouseEventService_1 = __decorate([\n Bean('mouseEventService')\n ], MouseEventService);\n return MouseEventService;\n}());\nexport { MouseEventService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean, Autowired } from \"../context/context\";\nimport { Events } from \"../events\";\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.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 Autowired('eventService')\n ], ScrollVisibleService.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnController')\n ], ScrollVisibleService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ScrollVisibleService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ScrollVisibleService.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ScrollVisibleService.prototype, \"gridOptionsWrapper\", void 0);\n ScrollVisibleService = __decorate([\n Bean('scrollVisibleService')\n ], ScrollVisibleService);\n return ScrollVisibleService;\n}());\nexport { ScrollVisibleService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { DragAndDropService, DragSourceType, VerticalDirection } from \"../dragAndDrop/dragAndDropService\";\nimport { Autowired, Optional, PostConstruct } from \"../context/context\";\nimport { Events } from \"../eventKeys\";\nimport { Constants } from \"../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 === DragSourceType.RowDrag;\n };\n RowDragFeature.prototype.getIconName = function () {\n return 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(Events.EVENT_ROW_DRAG_ENTER, draggingEvent);\n this.dragAndDropService.setGhostIcon(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(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.removeAllCellRanges();\n }\n }\n };\n RowDragFeature.prototype.normaliseForScroll = function (pixel) {\n var gridPanelHasScrolls = this.gridOptionsWrapper.getDomLayout() === 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 VerticalDirection.Down:\n vDirectionString = 'down';\n break;\n case VerticalDirection.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(Events.EVENT_ROW_DRAG_LEAVE, draggingEvent);\n this.stopDragging(draggingEvent);\n };\n RowDragFeature.prototype.onDragStop = function (draggingEvent) {\n this.dispatchEvent(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 Autowired('dragAndDropService')\n ], RowDragFeature.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('rowModel')\n ], RowDragFeature.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('focusedCellController')\n ], RowDragFeature.prototype, \"focusedCellController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RowDragFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Optional('rangeController')\n ], RowDragFeature.prototype, \"rangeController\", void 0);\n __decorate([\n Autowired('eventService')\n ], RowDragFeature.prototype, \"eventService\", void 0);\n __decorate([\n PostConstruct\n ], RowDragFeature.prototype, \"postConstruct\", null);\n return RowDragFeature;\n}());\nexport { RowDragFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { Autowired, Optional, PostConstruct } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { Constants } from \"../constants\";\nimport { RowContainerComponent } from \"../rendering/rowContainerComponent\";\nimport { PopupEditorWrapper } from \"../rendering/cellEditors/popupEditorWrapper\";\nimport { RowComp } from \"../rendering/rowComp\";\nimport { TouchListener } from \"../widgets/touchListener\";\nimport { RowDragFeature } from \"./rowDragFeature\";\nimport { Component } from \"../widgets/component\";\nimport { RefSelector } from \"../widgets/componentAnnotations\";\nimport { _ } from \"../utils\";\nimport { ModuleRegistry } from \"../modules/moduleRegistry\";\nimport { ModuleNames } from \"../modules/moduleNames\";\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 = _.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.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.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 if (_.isVisible(this.eCenterViewport)) {\n this.checkViewportAndScrolls();\n this.columnController.refreshFlexedColumns(this.getCenterWidth());\n }\n else {\n this.bodyHeight = 0;\n }\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.eBodyViewport, this.eBottom]\n .forEach(function (ct) { return _.addOrRemoveCssClass(ct, 'ag-selectable', selectable); });\n };\n GridPanel.prototype.addRowDragListener = function () {\n var rowDragFeature = new 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 (_.exists(pointer) && !clickInsideGrid) {\n var isPopup = !!_this.gridOptionsWrapper.getDomData(pointer, 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.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n this.addDestroyableEventListener(this.eventService, 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.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_ROW_DATA_CHANGED, this.onRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_ROW_DATA_UPDATED, this.onRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, 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 _.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 };\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);\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 = _.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 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 = _.getTarget(event);\n while (sourceElement) {\n var renderedRow = this.gridOptionsWrapper.getDomData(sourceElement, 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 = _.getCellCompForEvent(this.gridOptionsWrapper, keyboardEvent);\n if (!cellComp) {\n return;\n }\n var rowNode = cellComp.getRenderedRow().getRowNode();\n var column = cellComp.getColumn();\n var editing = cellComp.isEditing();\n var gridProcessingAllowed = !_.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 = !editing && this.navigationService.handlePageScrollingKey(keyboardEvent);\n // if not a scroll key, then we pass onto cell\n if (!wasScrollKey) {\n cellComp.onKeyDown(keyboardEvent);\n }\n // perform clipboard and undo / redo operations\n this.doGridOperations(keyboardEvent, cellComp);\n break;\n case 'keypress':\n cellComp.onKeyPress(keyboardEvent);\n break;\n }\n }\n if (eventName === 'keydown') {\n var cellKeyDownEvent = cellComp.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_DOWN);\n this.beans.eventService.dispatchEvent(cellKeyDownEvent);\n }\n if (eventName === 'keypress') {\n var cellKeyPressEvent = cellComp.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_PRESS);\n this.beans.eventService.dispatchEvent(cellKeyPressEvent);\n }\n };\n GridPanel.prototype.doGridOperations = 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.KEY_A:\n return this.onCtrlAndA(keyboardEvent);\n case Constants.KEY_C:\n return this.onCtrlAndC(keyboardEvent);\n case Constants.KEY_V:\n return this.onCtrlAndV();\n case Constants.KEY_D:\n return this.onCtrlAndD(keyboardEvent);\n case Constants.KEY_Z:\n return keyboardEvent.shiftKey ? this.undoRedoService.redo() : this.undoRedoService.undo();\n case Constants.KEY_Y:\n return this.undoRedoService.redo();\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 _.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 (!_.isIOSUserAgent()) {\n return;\n }\n this.eAllCellContainers.forEach(function (container) {\n var touchListener = new 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.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 var gridOptionsWrapper = this.gridOptionsWrapper;\n var which = mouseEvent.which;\n if (gridOptionsWrapper.isPreventDefaultOnContextMenu() ||\n (gridOptionsWrapper.isSuppressMiddleClickScrolls() && 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.PINNED_BOTTOM, PINNED_TOP = 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.getRowCount() - 1;\n }\n else {\n floatingEnd = PINNED_BOTTOM;\n rowEnd = pinnedRowModel.getPinnedBottomRowData().length - 1;\n }\n var allDisplayedColumns = columnController.getAllDisplayedColumns();\n if (_.missingOrEmpty(allDisplayedColumns)) {\n return;\n }\n rangeController.setCellRange({\n rowStartIndex: 0,\n rowStartPinned: floatingStart,\n rowEndIndex: rowEnd,\n rowEndPinned: floatingEnd,\n columnStart: allDisplayedColumns[0],\n columnEnd: _.last(allDisplayedColumns)\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.rowPinned, true);\n }\n };\n GridPanel.prototype.onCtrlAndV = function () {\n if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule)) {\n this.clipboardService.pasteFromClipboard();\n }\n };\n GridPanel.prototype.onCtrlAndD = function (event) {\n if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule)) {\n this.clipboardService.copyRangeDown();\n event.preventDefault();\n }\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.getRowCount();\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 _.addOrRemoveCssClass(this.eBodyViewport, 'ag-force-vertical-scroll', isAlwaysShowVerticalScroll);\n return isAlwaysShowVerticalScroll || _.isVerticalScrollShowing(this.eBodyViewport);\n };\n GridPanel.prototype.isHorizontalScrollShowing = function () {\n return _.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 // this is to cater for AG-3274, where grid is removed from the dom and then inserted back in again.\n // (which happens with some implementations of tabbing). this can result in horizontal scroll getting\n // reset back to the left, however no scroll event is fired. so we need to get header to also scroll\n // back to the left to be kept in sync.\n // adding and removing the grid from the DOM both resets the scroll position and\n // triggers a resize event, so notify listeners if the scroll position has changed\n if (this.scrollLeft !== this.getCenterViewportScrollLeft()) {\n this.onBodyHorizontalScroll(this.eCenterViewport);\n }\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 = _.isBrowserIE() && visible;\n this.eCenterViewport.style.height = \"calc(100% + \" + scrollSize + \"px)\";\n _.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 _.setFixedHeight(this.eBodyHorizontalScrollViewport, scrollContainerSize + (addIEPadding ? 1 : 0));\n _.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.updateRowCount = function () {\n var headerCount = this.headerRootComp.getHeaderRowCount();\n var rowCount = this.paginationProxy.getRowCount();\n var total = (headerCount + rowCount).toString();\n this.getGui().setAttribute('aria-rowcount', total);\n };\n GridPanel.prototype.updateColumnCount = function () {\n var columns = this.beans.columnController.getAllDisplayedColumns();\n this.getGui().setAttribute('aria-colcount', columns.length.toString());\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({\n eContainer: this.eCenterContainer,\n eWrapper: this.eCenterColsClipper,\n eViewport: this.eBodyViewport\n }),\n fullWidth: new RowContainerComponent({\n eContainer: this.eFullWidthContainer\n }),\n pinnedLeft: new RowContainerComponent({ eContainer: this.eLeftContainer }),\n pinnedRight: new RowContainerComponent({ eContainer: this.eRightContainer }),\n floatingTop: new RowContainerComponent({ eContainer: this.eTopContainer }),\n floatingTopPinnedLeft: new RowContainerComponent({ eContainer: this.eLeftTop }),\n floatingTopPinnedRight: new RowContainerComponent({ eContainer: this.eRightTop }),\n floatingTopFullWidth: new RowContainerComponent({\n eContainer: this.eTopFullWidthContainer,\n hideWhenNoChildren: true\n }),\n floatingBottom: new RowContainerComponent({ eContainer: this.eBottomContainer }),\n floatingBottomPinnedLeft: new RowContainerComponent({ eContainer: this.eLeftBottom }),\n floatingBottomPinnedRight: new RowContainerComponent({ eContainer: this.eRightBottom }),\n floatingBottomFullWith: new RowContainerComponent({\n eContainer: this.eBottomFullWidthContainer,\n hideWhenNoChildren: true\n }),\n };\n _.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 _.addOrRemoveCssClass(_this.eBodyViewport, 'ag-row-animation', animateRows);\n _.addOrRemoveCssClass(_this.eBodyViewport, 'ag-row-no-animation', !animateRows);\n };\n listener();\n this.addDestroyableEventListener(this.eventService, 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 this.updateColumnCount();\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 _.setDisplayed(e, _this.pinningLeft); });\n if (newPinning) {\n containers.forEach(function (ct) { return _.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 _.setDisplayed(ct, newPinning); });\n if (newPinning) {\n containers.forEach(function (ct) { return _.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 _.setFixedWidth(this.eHorizontalRightSpacer, rightSpacing);\n _.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 _.setFixedWidth(this.eHorizontalLeftSpacer, leftSpacing);\n _.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.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.animationFrameService.setScrollTop(scrollTop);\n this.scrollTop = 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(_.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.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.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 _.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 _.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 _.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 Autowired('alignedGridsService')\n ], GridPanel.prototype, \"alignedGridsService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], GridPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], GridPanel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], GridPanel.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], GridPanel.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('eventService')\n ], GridPanel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('animationFrameService')\n ], GridPanel.prototype, \"animationFrameService\", void 0);\n __decorate([\n Autowired('navigationService')\n ], GridPanel.prototype, \"navigationService\", void 0);\n __decorate([\n Autowired('autoHeightCalculator')\n ], GridPanel.prototype, \"autoHeightCalculator\", void 0);\n __decorate([\n Autowired('columnAnimationService')\n ], GridPanel.prototype, \"columnAnimationService\", void 0);\n __decorate([\n Autowired('autoWidthCalculator')\n ], GridPanel.prototype, \"autoWidthCalculator\", void 0);\n __decorate([\n Autowired('paginationAutoPageSizeService')\n ], GridPanel.prototype, \"paginationAutoPageSizeService\", void 0);\n __decorate([\n Autowired('beans')\n ], GridPanel.prototype, \"beans\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], GridPanel.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('columnApi')\n ], GridPanel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], GridPanel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('dragService')\n ], GridPanel.prototype, \"dragService\", void 0);\n __decorate([\n Autowired('mouseEventService')\n ], GridPanel.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired('focusedCellController')\n ], GridPanel.prototype, \"focusedCellController\", void 0);\n __decorate([\n Autowired('$scope')\n ], GridPanel.prototype, \"$scope\", void 0);\n __decorate([\n Autowired('scrollVisibleService')\n ], GridPanel.prototype, \"scrollVisibleService\", void 0);\n __decorate([\n Autowired('valueService')\n ], GridPanel.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], GridPanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('maxDivHeightScaler')\n ], GridPanel.prototype, \"heightScaler\", void 0);\n __decorate([\n Autowired('resizeObserverService')\n ], GridPanel.prototype, \"resizeObserverService\", void 0);\n __decorate([\n Autowired('undoRedoService')\n ], GridPanel.prototype, \"undoRedoService\", void 0);\n __decorate([\n Optional('rangeController')\n ], GridPanel.prototype, \"rangeController\", void 0);\n __decorate([\n Optional('contextMenuFactory')\n ], GridPanel.prototype, \"contextMenuFactory\", void 0);\n __decorate([\n Optional('clipboardService')\n ], GridPanel.prototype, \"clipboardService\", void 0);\n __decorate([\n RefSelector('eBodyViewport')\n ], GridPanel.prototype, \"eBodyViewport\", void 0);\n __decorate([\n RefSelector('eCenterContainer')\n ], GridPanel.prototype, \"eCenterContainer\", void 0);\n __decorate([\n RefSelector('eCenterViewport')\n ], GridPanel.prototype, \"eCenterViewport\", void 0);\n __decorate([\n RefSelector('eLeftContainer')\n ], GridPanel.prototype, \"eLeftContainer\", void 0);\n __decorate([\n RefSelector('eRightContainer')\n ], GridPanel.prototype, \"eRightContainer\", void 0);\n __decorate([\n RefSelector('eCenterColsClipper')\n ], GridPanel.prototype, \"eCenterColsClipper\", void 0);\n __decorate([\n RefSelector('eHorizontalScrollBody')\n ], GridPanel.prototype, \"eHorizontalScrollBody\", void 0);\n __decorate([\n RefSelector('eHorizontalLeftSpacer')\n ], GridPanel.prototype, \"eHorizontalLeftSpacer\", void 0);\n __decorate([\n RefSelector('eHorizontalRightSpacer')\n ], GridPanel.prototype, \"eHorizontalRightSpacer\", void 0);\n __decorate([\n RefSelector('eBodyHorizontalScrollViewport')\n ], GridPanel.prototype, \"eBodyHorizontalScrollViewport\", void 0);\n __decorate([\n RefSelector('eBodyHorizontalScrollContainer')\n ], GridPanel.prototype, \"eBodyHorizontalScrollContainer\", void 0);\n __decorate([\n RefSelector('eFullWidthContainer')\n ], GridPanel.prototype, \"eFullWidthContainer\", void 0);\n __decorate([\n RefSelector('eTop')\n ], GridPanel.prototype, \"eTop\", void 0);\n __decorate([\n RefSelector('eLeftTop')\n ], GridPanel.prototype, \"eLeftTop\", void 0);\n __decorate([\n RefSelector('eRightTop')\n ], GridPanel.prototype, \"eRightTop\", void 0);\n __decorate([\n RefSelector('eTopContainer')\n ], GridPanel.prototype, \"eTopContainer\", void 0);\n __decorate([\n RefSelector('eTopViewport')\n ], GridPanel.prototype, \"eTopViewport\", void 0);\n __decorate([\n RefSelector('eTopFullWidthContainer')\n ], GridPanel.prototype, \"eTopFullWidthContainer\", void 0);\n __decorate([\n RefSelector('eBottom')\n ], GridPanel.prototype, \"eBottom\", void 0);\n __decorate([\n RefSelector('eLeftBottom')\n ], GridPanel.prototype, \"eLeftBottom\", void 0);\n __decorate([\n RefSelector('eRightBottom')\n ], GridPanel.prototype, \"eRightBottom\", void 0);\n __decorate([\n RefSelector('eBottomContainer')\n ], GridPanel.prototype, \"eBottomContainer\", void 0);\n __decorate([\n RefSelector('eBottomViewport')\n ], GridPanel.prototype, \"eBottomViewport\", void 0);\n __decorate([\n RefSelector('eBottomFullWidthContainer')\n ], GridPanel.prototype, \"eBottomFullWidthContainer\", void 0);\n __decorate([\n RefSelector('headerRoot')\n ], GridPanel.prototype, \"headerRootComp\", void 0);\n __decorate([\n RefSelector('overlayWrapper')\n ], GridPanel.prototype, \"overlayWrapper\", void 0);\n __decorate([\n PostConstruct\n ], GridPanel.prototype, \"init\", null);\n return GridPanel;\n}(Component));\nexport { GridPanel };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { AgCheckbox } from \"../../widgets/agCheckbox\";\nimport { BeanStub } from \"../../context/beanStub\";\nimport { PostConstruct, Autowired } from \"../../context/context\";\nimport { Events } from \"../../events\";\nimport { Constants } from \"../../constants\";\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.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelectAll.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_SELECTION_CHANGED, this.onSelectionChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelChanged.bind(this));\n this.addDestroyableEventListener(this.cbSelectAll, AgCheckbox.EVENT_CHANGED, this.onCbSelectAll.bind(this));\n };\n SelectAllFeature.prototype.showOrHideSelectAll = function () {\n this.cbSelectAllVisible = this.isCheckboxSelection();\n this.cbSelectAll.setDisplayed(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.setValue(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.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.getValue();\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 Autowired('gridApi')\n ], SelectAllFeature.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], SelectAllFeature.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('eventService')\n ], SelectAllFeature.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('rowModel')\n ], SelectAllFeature.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('selectionController')\n ], SelectAllFeature.prototype, \"selectionController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], SelectAllFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], SelectAllFeature.prototype, \"postConstruct\", null);\n return SelectAllFeature;\n}(BeanStub));\nexport { SelectAllFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../../widgets/component\";\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { Column } from \"../../entities/column\";\nimport { DragSourceType } from \"../../dragAndDrop/dragAndDropService\";\nimport { CssClassApplier } from \"../cssClassApplier\";\nimport { SetLeftFeature } from \"../../rendering/features/setLeftFeature\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { SelectAllFeature } from \"./selectAllFeature\";\nimport { Events } from \"../../events\";\nimport { HoverFeature } from \"../hoverFeature\";\nimport { TouchListener } from \"../../widgets/touchListener\";\nimport { _ } from \"../../utils\";\nimport { Constants } from \"../../constants\";\nvar HeaderWrapperComp = /** @class */ (function (_super) {\n __extends(HeaderWrapperComp, _super);\n function HeaderWrapperComp(column, dragSourceDropTarget, pinned) {\n var _this = _super.call(this, HeaderWrapperComp.TEMPLATE) || this;\n _this.column = column;\n _this.dragSourceDropTarget = dragSourceDropTarget;\n _this.pinned = pinned;\n return _this;\n }\n HeaderWrapperComp.prototype.getColumn = function () {\n return this.column;\n };\n HeaderWrapperComp.prototype.getComponentHolder = function () {\n return this.column.getColDef();\n };\n HeaderWrapperComp.prototype.init = function () {\n var colDef = this.getComponentHolder();\n var displayName = this.columnController.getDisplayNameForColumn(this.column, 'header', true);\n var enableSorting = colDef.sortable;\n var enableMenu = this.menuFactory.isMenuEnabled(this.column) && !colDef.suppressMenu;\n this.appendHeaderComp(displayName, enableSorting, enableMenu);\n this.setupWidth();\n this.setupMovingCss();\n this.setupTooltip();\n this.setupResize();\n this.setupMenuClass();\n this.setupSortableClass(enableSorting);\n this.addColumnHoverListener();\n this.addFeature(new HoverFeature([this.column], this.getGui()));\n this.addDestroyableEventListener(this.column, Column.EVENT_FILTER_ACTIVE_CHANGED, this.onFilterChanged.bind(this));\n this.onFilterChanged();\n this.addFeature(new SelectAllFeature(this.cbSelectAll, this.column));\n var setLeftFeature = new SetLeftFeature(this.column, this.getGui(), this.beans);\n setLeftFeature.init();\n this.addDestroyFunc(setLeftFeature.destroy.bind(setLeftFeature));\n this.addAttributes();\n CssClassApplier.addHeaderClassesFromColDef(colDef, this.getGui(), this.gridOptionsWrapper, this.column, null);\n };\n HeaderWrapperComp.prototype.addColumnHoverListener = function () {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, this.onColumnHover.bind(this));\n this.onColumnHover();\n };\n HeaderWrapperComp.prototype.onColumnHover = function () {\n var isHovered = this.columnHoverService.isHovered(this.column);\n _.addOrRemoveCssClass(this.getGui(), 'ag-column-hover', isHovered);\n };\n HeaderWrapperComp.prototype.setupSortableClass = function (enableSorting) {\n if (enableSorting) {\n var element = this.getGui();\n _.addCssClass(element, 'ag-header-cell-sortable');\n }\n };\n HeaderWrapperComp.prototype.onFilterChanged = function () {\n var filterPresent = this.column.isFilterActive();\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-filtered', filterPresent);\n };\n HeaderWrapperComp.prototype.appendHeaderComp = function (displayName, enableSorting, enableMenu) {\n var _this = this;\n var params = {\n column: this.column,\n displayName: displayName,\n enableSorting: enableSorting,\n enableMenu: enableMenu,\n showColumnMenu: function (source) {\n _this.gridApi.showColumnMenuAfterButtonClick(_this.column, source);\n },\n progressSort: function (multiSort) {\n _this.sortController.progressSort(_this.column, !!multiSort, \"uiColumnSorted\");\n },\n setSort: function (sort, multiSort) {\n _this.sortController.setSortForColumn(_this.column, sort, !!multiSort, \"uiColumnSorted\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext()\n };\n var callback = this.afterHeaderCompCreated.bind(this, displayName);\n this.userComponentFactory.newHeaderComponent(params).then(callback);\n };\n HeaderWrapperComp.prototype.afterHeaderCompCreated = function (displayName, headerComp) {\n this.appendChild(headerComp);\n this.setupMove(headerComp.getGui(), displayName);\n };\n HeaderWrapperComp.prototype.onColumnMovingChanged = function () {\n // this function adds or removes the moving css, based on if the col is moving.\n // this is what makes the header go dark when it is been moved (gives impression to\n // user that the column was picked up).\n if (this.column.isMoving()) {\n _.addCssClass(this.getGui(), 'ag-header-cell-moving');\n }\n else {\n _.removeCssClass(this.getGui(), 'ag-header-cell-moving');\n }\n };\n HeaderWrapperComp.prototype.setupMove = function (eHeaderCellLabel, displayName) {\n var _this = this;\n var suppressMove = this.gridOptionsWrapper.isSuppressMovableColumns()\n || this.getComponentHolder().suppressMovable\n || this.column.getColDef().lockPosition;\n if (suppressMove) {\n return;\n }\n if (eHeaderCellLabel) {\n var dragSource_1 = {\n type: DragSourceType.HeaderCell,\n eElement: eHeaderCellLabel,\n getDragItem: function () { return _this.createDragItem(); },\n dragItemName: displayName,\n dragSourceDropTarget: this.dragSourceDropTarget,\n onDragStarted: function () { return _this.column.setMoving(true, \"uiColumnMoved\"); },\n onDragStopped: function () { return _this.column.setMoving(false, \"uiColumnMoved\"); }\n };\n this.dragAndDropService.addDragSource(dragSource_1, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource_1); });\n }\n };\n HeaderWrapperComp.prototype.createDragItem = function () {\n var visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n };\n HeaderWrapperComp.prototype.setupResize = function () {\n var _this = this;\n var colDef = this.getComponentHolder();\n // if no eResize in template, do nothing\n if (!this.eResize) {\n return;\n }\n if (!this.column.isResizable()) {\n _.removeFromParent(this.eResize);\n return;\n }\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.eResize,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this, false),\n onResizeEnd: this.onResizing.bind(this, true)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n var weWantAutoSize = !this.gridOptionsWrapper.isSuppressAutoSize() && !colDef.suppressAutoSize;\n var skipHeaderOnAutoSize = this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n if (weWantAutoSize) {\n this.addDestroyableEventListener(this.eResize, 'dblclick', function () {\n _this.columnController.autoSizeColumn(_this.column, skipHeaderOnAutoSize, \"uiColumnResized\");\n });\n var touchListener = new TouchListener(this.eResize);\n this.addDestroyableEventListener(touchListener, TouchListener.EVENT_DOUBLE_TAP, function () {\n _this.columnController.autoSizeColumn(_this.column, skipHeaderOnAutoSize, \"uiColumnResized\");\n });\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n }\n };\n HeaderWrapperComp.prototype.onResizing = function (finished, resizeAmount) {\n var resizeAmountNormalised = this.normaliseResizeAmount(resizeAmount);\n var newWidth = this.resizeStartWidth + resizeAmountNormalised;\n this.columnController.setColumnWidth(this.column, newWidth, this.resizeWithShiftKey, finished, \"uiColumnDragged\");\n if (finished) {\n _.removeCssClass(this.getGui(), 'ag-column-resizing');\n }\n };\n HeaderWrapperComp.prototype.onResizeStart = function (shiftKey) {\n this.resizeStartWidth = this.column.getActualWidth();\n this.resizeWithShiftKey = shiftKey;\n _.addCssClass(this.getGui(), 'ag-column-resizing');\n };\n HeaderWrapperComp.prototype.getTooltipText = function () {\n var colDef = this.getComponentHolder();\n return colDef.headerTooltip;\n };\n HeaderWrapperComp.prototype.setupTooltip = function () {\n var tooltipText = this.getTooltipText();\n // add tooltip if exists\n if (tooltipText == null) {\n return;\n }\n if (this.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.getGui().setAttribute('title', tooltipText);\n }\n else {\n this.beans.tooltipManager.registerTooltip(this);\n }\n };\n HeaderWrapperComp.prototype.setupMovingCss = function () {\n this.addDestroyableEventListener(this.column, Column.EVENT_MOVING_CHANGED, this.onColumnMovingChanged.bind(this));\n this.onColumnMovingChanged();\n };\n HeaderWrapperComp.prototype.addAttributes = function () {\n this.getGui().setAttribute(\"col-id\", this.column.getColId());\n };\n HeaderWrapperComp.prototype.setupWidth = function () {\n this.addDestroyableEventListener(this.column, Column.EVENT_WIDTH_CHANGED, this.onColumnWidthChanged.bind(this));\n this.onColumnWidthChanged();\n };\n HeaderWrapperComp.prototype.setupMenuClass = function () {\n this.addDestroyableEventListener(this.column, Column.EVENT_MENU_VISIBLE_CHANGED, this.onMenuVisible.bind(this));\n this.onColumnWidthChanged();\n };\n HeaderWrapperComp.prototype.onMenuVisible = function () {\n this.addOrRemoveCssClass('ag-column-menu-visible', this.column.isMenuVisible());\n };\n HeaderWrapperComp.prototype.onColumnWidthChanged = function () {\n this.getGui().style.width = this.column.getActualWidth() + 'px';\n };\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderGroupCell - should refactor out?\n HeaderWrapperComp.prototype.normaliseResizeAmount = function (dragChange) {\n var result = dragChange;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (this.pinned !== Constants.PINNED_LEFT) {\n result *= -1;\n }\n }\n else {\n // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n if (this.pinned === Constants.PINNED_RIGHT) {\n result *= -1;\n }\n }\n return result;\n };\n HeaderWrapperComp.TEMPLATE = '
' +\n '
' +\n ' ' +\n // \n '
';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HeaderWrapperComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], HeaderWrapperComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnController')\n ], HeaderWrapperComp.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('horizontalResizeService')\n ], HeaderWrapperComp.prototype, \"horizontalResizeService\", void 0);\n __decorate([\n Autowired('menuFactory')\n ], HeaderWrapperComp.prototype, \"menuFactory\", void 0);\n __decorate([\n Autowired('gridApi')\n ], HeaderWrapperComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], HeaderWrapperComp.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('sortController')\n ], HeaderWrapperComp.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('eventService')\n ], HeaderWrapperComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], HeaderWrapperComp.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('columnHoverService')\n ], HeaderWrapperComp.prototype, \"columnHoverService\", void 0);\n __decorate([\n Autowired('beans')\n ], HeaderWrapperComp.prototype, \"beans\", void 0);\n __decorate([\n RefSelector('eResize')\n ], HeaderWrapperComp.prototype, \"eResize\", void 0);\n __decorate([\n RefSelector('cbSelectAll')\n ], HeaderWrapperComp.prototype, \"cbSelectAll\", void 0);\n __decorate([\n PostConstruct\n ], HeaderWrapperComp.prototype, \"init\", null);\n return HeaderWrapperComp;\n}(Component));\nexport { HeaderWrapperComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { _ } from '../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 _.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 _.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 _.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 = _.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 _.callIfPresent(this.params.onActiveItemClicked);\n return;\n }\n _.clearElement(this.eBody);\n wrapper.tabbedItem.bodyPromise.then(function (body) {\n _this.eBody.appendChild(body);\n });\n if (this.activeItem) {\n _.removeCssClass(this.activeItem.eHeaderButton, 'ag-tab-selected');\n }\n _.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}());\nexport { TabbedLayout };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { _ } from './utils';\nexport function defaultGroupComparator(valueA, valueB, nodeA, nodeB, accentedCompare) {\n if (accentedCompare === void 0) { accentedCompare = false; }\n console.warn('ag-Grid: Since ag-grid 11.0.0 defaultGroupComparator is not necessary. You can remove this from your colDef');\n var nodeAIsGroup = _.exists(nodeA) && nodeA.group;\n var nodeBIsGroup = _.exists(nodeB) && nodeB.group;\n var bothAreGroups = nodeAIsGroup && nodeBIsGroup;\n var bothAreNormal = !nodeAIsGroup && !nodeBIsGroup;\n if (bothAreGroups) {\n return _.defaultComparator(nodeA.key, nodeB.key, accentedCompare);\n }\n else if (bothAreNormal) {\n return _.defaultComparator(valueA, valueB, accentedCompare);\n }\n else if (nodeAIsGroup) {\n return 1;\n }\n else {\n return -1;\n }\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var ChartType;\n(function (ChartType) {\n ChartType[\"GroupedColumn\"] = \"groupedColumn\";\n ChartType[\"StackedColumn\"] = \"stackedColumn\";\n ChartType[\"NormalizedColumn\"] = \"normalizedColumn\";\n ChartType[\"GroupedBar\"] = \"groupedBar\";\n ChartType[\"StackedBar\"] = \"stackedBar\";\n ChartType[\"NormalizedBar\"] = \"normalizedBar\";\n ChartType[\"Line\"] = \"line\";\n ChartType[\"Scatter\"] = \"scatter\";\n ChartType[\"Bubble\"] = \"bubble\";\n ChartType[\"Pie\"] = \"pie\";\n ChartType[\"Doughnut\"] = \"doughnut\";\n ChartType[\"Area\"] = \"area\";\n ChartType[\"StackedArea\"] = \"stackedArea\";\n ChartType[\"NormalizedArea\"] = \"normalizedArea\";\n})(ChartType || (ChartType = {}));\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../../widgets/component\";\nimport { Column } from \"../../entities/column\";\nimport { Autowired } from \"../../context/context\";\nimport { TouchListener } from \"../../widgets/touchListener\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { Events } from \"../../events\";\nimport { _ } from \"../../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 = _.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 = _.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 = _.createIconNoSpan(iconName, this.gridOptionsWrapper, column);\n eParent.appendChild(eIcon);\n };\n HeaderComp.prototype.setupTap = function () {\n var _this = this;\n var options = this.gridOptionsWrapper;\n if (options.isSuppressTouch()) {\n return;\n }\n var touchListener = new TouchListener(this.getGui(), true);\n var suppressMenuHide = options.isSuppressMenuHide();\n var tapMenuButton = suppressMenuHide && _.exists(this.eMenu);\n var menuTouchListener = tapMenuButton ? new TouchListener(this.eMenu, true) : touchListener;\n if (this.params.enableMenu) {\n var eventType = tapMenuButton ? 'EVENT_TAP' : 'EVENT_LONG_TAP';\n var showMenuFn = function (event) {\n options.getApi().showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);\n };\n this.addDestroyableEventListener(menuTouchListener, 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.EVENT_TAP, tapListener);\n }\n // if tapMenuButton is true `touchListener` and `menuTouchListener` are different\n // so we need to make sure to destroy both listeners here\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n if (tapMenuButton) {\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 hideShowMenu = !this.params.enableMenu || (_.isIOSUserAgent() && !suppressMenuHide);\n if (hideShowMenu) {\n _.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 _.removeFromParent(this.eSortAsc);\n _.removeFromParent(this.eSortDesc);\n _.removeFromParent(this.eSortNone);\n _.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.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.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.onSortChanged();\n this.addDestroyableEventListener(this.eventService, Events.EVENT_SORT_CHANGED, this.setMultiSortOrder.bind(this));\n this.setMultiSortOrder();\n };\n HeaderComp.prototype.onSortChanged = function () {\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-asc', this.params.column.isSortAscending());\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-desc', this.params.column.isSortDescending());\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-none', this.params.column.isSortNone());\n if (this.eSortAsc) {\n _.addOrRemoveCssClass(this.eSortAsc, 'ag-hidden', !this.params.column.isSortAscending());\n }\n if (this.eSortDesc) {\n _.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 _.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 _.setDisplayed(this.eSortOrder, showIndex);\n if (indexThisCol >= 0) {\n this.eSortOrder.innerHTML = (indexThisCol + 1).toString();\n }\n else {\n _.clearElement(this.eSortOrder);\n }\n };\n HeaderComp.prototype.setupFilterIcon = function () {\n if (!this.eFilter) {\n return;\n }\n this.addDestroyableEventListener(this.params.column, 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 _.addOrRemoveCssClass(this.eFilter, 'ag-hidden', !filterPresent);\n };\n HeaderComp.TEMPLATE = '
' +\n ' ' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HeaderComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('sortController')\n ], HeaderComp.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('menuFactory')\n ], HeaderComp.prototype, \"menuFactory\", void 0);\n __decorate([\n Autowired('eventService')\n ], HeaderComp.prototype, \"eventService\", void 0);\n __decorate([\n RefSelector('eFilter')\n ], HeaderComp.prototype, \"eFilter\", void 0);\n __decorate([\n RefSelector('eSortAsc')\n ], HeaderComp.prototype, \"eSortAsc\", void 0);\n __decorate([\n RefSelector('eSortDesc')\n ], HeaderComp.prototype, \"eSortDesc\", void 0);\n __decorate([\n RefSelector('eSortNone')\n ], HeaderComp.prototype, \"eSortNone\", void 0);\n __decorate([\n RefSelector('eSortOrder')\n ], HeaderComp.prototype, \"eSortOrder\", void 0);\n __decorate([\n RefSelector('eMenu')\n ], HeaderComp.prototype, \"eMenu\", void 0);\n __decorate([\n RefSelector('eLabel')\n ], HeaderComp.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eText')\n ], HeaderComp.prototype, \"eText\", void 0);\n return HeaderComp;\n}(Component));\nexport { HeaderComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../../widgets/component\";\nimport { Autowired } from \"../../context/context\";\nimport { TouchListener } from \"../../widgets/touchListener\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { OriginalColumnGroup } from \"../../entities/originalColumnGroup\";\nimport { _ } from \"../../utils\";\nvar HeaderGroupComp = /** @class */ (function (_super) {\n __extends(HeaderGroupComp, _super);\n function HeaderGroupComp() {\n return _super.call(this, HeaderGroupComp.TEMPLATE) || this;\n }\n HeaderGroupComp.prototype.init = function (params) {\n this.params = params;\n this.setupLabel();\n this.addGroupExpandIcon();\n this.setupExpandIcons();\n };\n HeaderGroupComp.prototype.setupExpandIcons = function () {\n var _this = this;\n this.addInIcon(\"columnGroupOpened\", \"agOpened\");\n this.addInIcon(\"columnGroupClosed\", \"agClosed\");\n var expandAction = function (event) {\n if (_.isStopPropagationForAgGrid(event)) {\n return;\n }\n var newExpandedValue = !_this.params.columnGroup.isExpanded();\n _this.columnController.setColumnGroupOpened(_this.params.columnGroup.getOriginalColumnGroup(), newExpandedValue, \"uiColumnExpanded\");\n };\n this.addTouchAndClickListeners(this.eCloseIcon, expandAction);\n this.addTouchAndClickListeners(this.eOpenIcon, expandAction);\n var stopPropagationAction = function (event) {\n _.stopPropagationForAgGrid(event);\n };\n // adding stopPropagation to the double click for the icons prevents double click action happening\n // when the icons are clicked. if the icons are double clicked, then the groups should open and\n // then close again straight away. if we also listened to double click, then the group would open,\n // close, then open, which is not what we want. double click should only action if the user double\n // clicks outside of the icons.\n this.addDestroyableEventListener(this.eCloseIcon, \"dblclick\", stopPropagationAction);\n this.addDestroyableEventListener(this.eOpenIcon, \"dblclick\", stopPropagationAction);\n this.addDestroyableEventListener(this.getGui(), \"dblclick\", expandAction);\n this.updateIconVisibility();\n var originalColumnGroup = this.params.columnGroup.getOriginalColumnGroup();\n this.addDestroyableEventListener(originalColumnGroup, OriginalColumnGroup.EVENT_EXPANDED_CHANGED, this.updateIconVisibility.bind(this));\n this.addDestroyableEventListener(originalColumnGroup, OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED, this.updateIconVisibility.bind(this));\n };\n HeaderGroupComp.prototype.addTouchAndClickListeners = function (eElement, action) {\n var touchListener = new TouchListener(eElement);\n this.addDestroyableEventListener(touchListener, TouchListener.EVENT_TAP, action);\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n this.addDestroyableEventListener(eElement, \"click\", action);\n };\n HeaderGroupComp.prototype.updateIconVisibility = function () {\n var columnGroup = this.params.columnGroup;\n if (columnGroup.isExpandable()) {\n var expanded = this.params.columnGroup.isExpanded();\n _.setDisplayed(this.eOpenIcon, expanded);\n _.setDisplayed(this.eCloseIcon, !expanded);\n }\n else {\n _.setDisplayed(this.eOpenIcon, false);\n _.setDisplayed(this.eCloseIcon, false);\n }\n };\n HeaderGroupComp.prototype.addInIcon = function (iconName, refName) {\n var eIcon = _.createIconNoSpan(iconName, this.gridOptionsWrapper, null);\n this.getRefElement(refName).appendChild(eIcon);\n };\n HeaderGroupComp.prototype.addGroupExpandIcon = function () {\n if (!this.params.columnGroup.isExpandable()) {\n _.setDisplayed(this.eOpenIcon, false);\n _.setDisplayed(this.eCloseIcon, false);\n return;\n }\n };\n HeaderGroupComp.prototype.setupLabel = function () {\n // no renderer, default text render\n if (this.params.displayName && this.params.displayName !== \"\") {\n var eInnerText = this.getRefElement(\"agLabel\");\n eInnerText.innerHTML = this.params.displayName;\n }\n };\n HeaderGroupComp.TEMPLATE = \"
\" +\n \"\" +\n \"\" +\n \"\" +\n \"
\";\n __decorate([\n Autowired(\"columnController\")\n ], HeaderGroupComp.prototype, \"columnController\", void 0);\n __decorate([\n Autowired(\"gridOptionsWrapper\")\n ], HeaderGroupComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector(\"agOpened\")\n ], HeaderGroupComp.prototype, \"eOpenIcon\", void 0);\n __decorate([\n RefSelector(\"agClosed\")\n ], HeaderGroupComp.prototype, \"eCloseIcon\", void 0);\n return HeaderGroupComp;\n}(Component));\nexport { HeaderGroupComp };\n"],"sourceRoot":""}