{"version":3,"sources":["webpack:///./node_modules/ag-grid-community/dist/lib/rendering/columnHoverService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellEditors/selectCellEditor.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/defaultColumnTypes.js","webpack:///./node_modules/ag-grid-community/dist/lib/misc/simpleHttpRequest.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerContainer.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/clientSide/sortStage.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/clientSide/changedPath.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridOptionsWrapper.js","webpack:///./node_modules/ag-grid-community/dist/lib/exporter/xmlFactory.js","webpack:///./node_modules/ag-grid-community/dist/lib/context/context.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/beans.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/checkboxSelectionComponent.js","webpack:///./node_modules/vue-class-component/dist/vue-class-component.esm.js","webpack:///./node_modules/vue-property-decorator/lib/vue-property-decorator.js","webpack:///./node_modules/ag-grid-vue/lib/VueComponentFactory.js","webpack:///./node_modules/ag-grid-vue/lib/VueFrameworkComponentWrapper.js","webpack:///./node_modules/ag-grid-vue/lib/Utils.js","webpack:///./node_modules/ag-grid-vue/lib/AgGridColumn.js","webpack:///./node_modules/ag-grid-vue/lib/AgGridVue.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/overlays/overlayWrapperComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerGroup/headerGroupComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/column.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/horizontalResizeService.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/cssClassApplier.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/colDefUtil.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/columnApi.js","webpack:///./node_modules/ag-grid-community/dist/lib/exporter/csvCreator.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/columnKeyCreator.js","webpack:///./node_modules/ag-grid-community/dist/lib/eventKeys.js","webpack:///./node_modules/ag-grid-community/dist/lib/filter/filterManager.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridApi.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/columnController.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellEditors/popupEditorWrapper.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/displayedGroupCreator.js","webpack:///./node_modules/ag-grid-community/dist/lib/functions.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerRowComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/cache/rowNodeBlock.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/clientSide/filterStage.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/bodyDropTarget.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerGroup/headerGroupWrapperComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/standardMenu.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/framework/userComponentRegistry.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/header/headerWrapperComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/filter/floatingFilterWrapper.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/framework/agComponentUtils.js","webpack:///./node_modules/ag-grid-vue/main.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridPanel/navigationService.js","webpack:///./node_modules/ag-grid-community/dist/lib/misc/resizeObserverService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/infinite/infiniteRowModel.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/autoGroupColService.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/touchListener.js","webpack:///./node_modules/ag-grid-community/dist/lib/misc/animationFrameService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowNodes/selectableService.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/gridRow.js","webpack:///./node_modules/ag-grid-community/dist/lib/exporter/downloader.js","webpack:///./node_modules/ag-grid-community/dist/lib/filter/dateFilter.js","webpack:///./node_modules/ag-grid-community/dist/lib/cellNavigationService.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/columnGroup.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/componentAnnotations.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/framework/componentMetadataProvider.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/agGridNg1.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/tooltipComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/popupService.js","webpack:///./node_modules/ag-grid-community/dist/lib/filter/baseFilter.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/rowContainerComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/cache/rowNodeBlockLoader.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/pagination/paginationComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/tooltipManager.js","webpack:///./node_modules/ag-grid-community/dist/lib/logger.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/valueFormatterService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/rowDragComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellEditors/popupSelectCellEditor.js","webpack:///./node_modules/ag-grid-community/dist/lib/valueService/valueService.js","webpack:///./node_modules/ag-grid-community/dist/lib/exporter/gridSerializer.js","webpack:///./node_modules/ag-grid-community/dist/lib/context/beanStub.js","webpack:///./node_modules/ag-grid-community/dist/lib/filter/floatingFilter.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/infinite/infiniteBlock.js","webpack:///./node_modules/ag-grid-community/dist/lib/exporter/files/zip/zipContainer.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/paginationProxy.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/componentUtil.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/rowRenderer.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/component.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/columnUtils.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/clientSide/clientSideNodeManager.js","webpack:///./node_modules/ag-grid-community/dist/lib/selectionController.js","webpack:///./node_modules/ag-grid-community/dist/lib/layout/verticalStack.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/moveColumnController.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowNodes/filterService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellEditors/textCellEditor.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/maxDivHeightScaler.js","webpack:///./node_modules/ag-grid-community/main.js","webpack:///./node_modules/ag-grid-community/dist/lib/constants.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridCore.js","webpack:///./node_modules/ag-grid-community/dist/lib/filter/textFilter.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/overlays/noRowsOverlayComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/autoWidthCalculator.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/columnFactory.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/popupMessageBox.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/framework/userComponentFactory.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/originalColumnGroup.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/cache/rowNodeCache.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellRenderers/loadingCellRenderer.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/agCheckbox.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/popupWindow.js","webpack:///./node_modules/ag-grid-community/dist/lib/widgets/popupComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/utils.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridPanel/scrollVisibleService.js","webpack:///./node_modules/ag-grid-community/dist/lib/valueService/changeDetectionService.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/rowNode.js","webpack:///./src/api/staff.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridPanel/rowDragFeature.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/framework/frameworkComponentWrapper.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/gridCell.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellEditors/popupTextCellEditor.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellRenderers/animateShowChangeCellRenderer.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/bodyDropPivotTarget.js","webpack:///./node_modules/ag-grid-community/dist/lib/grid.js","webpack:///./node_modules/ag-grid-community/dist/lib/eventService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowNodes/sortService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/environment.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/clientSide/clientSideRowModel.js","webpack:///./node_modules/ag-grid-community/dist/lib/templateService.js","webpack:///./node_modules/ag-grid-community/dist/lib/alignedGridsService.js","webpack:///./node_modules/ag-grid-community/dist/lib/dragAndDrop/dragAndDropService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/clientSide/immutableService.js","webpack:///./node_modules/ag-grid-community/dist/lib/styling/stylingService.js","webpack:///./node_modules/ag-grid-community/dist/lib/sortController.js","webpack:///./node_modules/ag-grid-community/dist/lib/dragAndDrop/dragService.js","webpack:///./node_modules/ag-grid-community/dist/lib/baseFrameworkFactory.js","webpack:///./node_modules/ag-grid-community/dist/lib/filter/numberFilter.js","webpack:///./node_modules/ag-grid-community/dist/lib/events.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/overlays/loadingOverlayComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/rowComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/pinnedRowModel.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/agGridWebComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/layout/tabbedLayout.js","webpack:///./node_modules/ag-grid-community/dist/lib/valueService/valueCache.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridPanel/gridPanel.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/header/headerComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/gridPanel/mouseEventService.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/header/selectAllFeature.js","webpack:///./node_modules/ag-grid-community/dist/lib/propertyKeys.js","webpack:///./node_modules/ag-grid-community/dist/lib/valueService/expressionService.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/groupInstanceIdCreator.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellRenderers/groupCellRenderer.js","webpack:///./node_modules/ag-grid-community/dist/lib/entities/sideBar.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/features/setLeftFeature.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellEditors/largeTextCellEditor.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellRenderers/animateSlideCellRenderer.js","webpack:///./node_modules/@vue/babel-preset-app/node_modules/@babel/runtime/helpers/builtin/es6/arrayWithoutHoles.js","webpack:///./node_modules/@vue/babel-preset-app/node_modules/@babel/runtime/helpers/builtin/es6/iterableToArray.js","webpack:///./node_modules/@vue/babel-preset-app/node_modules/@babel/runtime/helpers/builtin/es6/nonIterableSpread.js","webpack:///./node_modules/@vue/babel-preset-app/node_modules/@babel/runtime/helpers/builtin/es6/toConsumableArray.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/infinite/infiniteCache.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/autoHeightCalculator.js","webpack:///./node_modules/ag-grid-community/dist/lib/focusedCellController.js","webpack:///./node_modules/ag-grid-community/dist/lib/rowModels/clientSide/flattenStage.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/columnAnimationService.js","webpack:///./node_modules/ag-grid-community/dist/lib/rendering/cellRendererFactory.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerRootComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/hoverFeature.js"],"names":["__extends","this","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__metadata","k","v","metadata","exports","value","eventService_1","context_1","events_1","beanStub_1","columnApi_1","gridApi_1","ColumnHoverService","_super","apply","setMouseOver","columns","selectedColumns","event","type","Events","EVENT_COLUMN_HOVER_CHANGED","api","gridApi","columnApi","eventService","dispatchEvent","clearMouseOver","isHovered","column","indexOf","Autowired","EventService","ColumnApi","GridApi","Bean","BeanStub","popupComponent_1","constants_1","gridOptionsWrapper_1","valueFormatterService_1","utils_1","SelectCellEditor","_this","call","eSelect","getGui","querySelector","init","params","focusAfterAttached","cellStartedEdit","_","missing","values","console","warn","forEach","option","document","createElement","valueFormatted","valueFormatterService","formatValue","valueFormattedExits","undefined","text","selected","appendChild","gridOptionsWrapper","isFullRowEdit","addDestroyableEventListener","stopEditing","isNavigationKey","keyCode","Constants","KEY_UP","KEY_DOWN","stopPropagation","afterGuiAttached","focus","focusIn","getValue","isPopup","GridOptionsWrapper","ValueFormatterService","PopupComponent","DefaultColumnTypes","numericColumn","headerClass","cellClass","simpleHttpRequest","Promise","resolve","httpRequest","XMLHttpRequest","open","url","send","onreadystatechange","readyState","status","httpResponse","JSON","parse","responseText","dragAndDropService_1","columnController_1","headerRowComp_1","bodyDropTarget_1","column_1","scrollVisibleService_1","HeaderContainer","eContainer","eViewport","pinned","headerRowComps","registerGridComp","gridPanel","setupDragAndDrop","forEachHeaderElement","callback","headerRowComp","scrollWidth","getScrollbarWidth","addEventListener","EVENT_COLUMN_VALUE_CHANGED","onColumnValueChanged","bind","EVENT_COLUMN_ROW_GROUP_CHANGED","onColumnRowGroupChanged","EVENT_GRID_COLUMNS_CHANGED","onGridColumnsChanged","EVENT_SCROLL_VISIBILITY_CHANGED","onScrollVisibilityChanged","EVENT_COLUMN_RESIZED","onColumnResized","EVENT_DISPLAYED_COLUMNS_CHANGED","onDisplayedColumnsChanged","setWidthOfPinnedContainer","pinningLeft","Column","PINNED_LEFT","pinningRight","PINNED_RIGHT","controller","columnController","isRtl","isEnableRtl","width","addPaddingForScrollbar","scrollVisibleService","isVerticalScrollShowing","setFixedWidth","destroy","removeHeaderRowComps","removeAndCreateAllRowComps","createHeaderRowComps","refresh","gridComp","dropContainer","bodyDropTarget","BodyDropTarget","context","wireBean","clearElement","rowCount","getHeaderRowCount","dept","groupRow","HeaderRowType","COLUMN_GROUP","COLUMN","HeaderRowComp","dropTarget","push","includeFloatingFilterRow","isFloatingFilter","isPivotMode","FLOATING_FILTER","Context","DragAndDropService","ColumnController","ScrollVisibleService","PostConstruct","Function","sortService_1","sortController_1","SortStage","execute","sortOptions","sortController","getSortForRowController","sortActive","exists","deltaSort","rowNodeTransactions","isDeltaSort","dirtyLeafNodes","calculateDirtyNodes","valueColumns","getValueColumns","noAggregations","missingOrEmpty","sortService","sort","changedPath","dirtyNodes","addNodesFunc","rowNodes","rowNode","id","tran","add","update","remove","SortService","SortController","ChangedPath","keepingColumns","rootNode","active","nodeIdsToColumns","mapToItems","pathRoot","children","setInactive","isActive","depthFirstSearchChangedPath","pathItem","depthFirstSearchEverything","traverseEverything","childrenAfterGroup","childNode","forEachChangedNodeDepthFirst","traverseLeafNodes","executeFromRootNode","createPathItems","pointer","newEntryCount","newEntry","parent","populateColumnsMap","col","getId","linkPathItems","thisItem","parentItem","addParentNode","canSkip","getValueColumnsForNode","colsForThisNode","result","filter","getNotValueColumnsForNode","__param","paramIndex","decorator","componentUtil_1","environment_1","propertyKeys_1","colDefUtil_1","eventKeys_1","autoHeightCalculator_1","sideBar_1","DEFAULT_ROW_HEIGHT","DEFAULT_DETAIL_ROW_HEIGHT","DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE","DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE","isTrue","zeroOrGreater","defaultValue","oneOrGreater","propertyEventService","domDataKey","Math","random","toString","layoutElements","GridOptionsWrapper_1","agWire","gridOptions","checkForDeprecated","checkForViolations","suppressPropertyNamesCheck","checkGridOptionsProperties","checkColumnDefProperties","async","useAsyncEvents","addGlobalListener","globalEventHandler","isGroupSelectsChildren","isSuppressParentsInRowNodes","isRowSelectionMulti","isRowModelServerSide","isGroupRemoveSingleChildren","isGroupHideOpenParents","PROP_DOM_LAYOUT","updateLayoutClasses","columnDefs","colDef","userProperties","getOwnPropertyNames","validProperties","ColDefUtil","ALL_PROPERTIES","concat","FRAMEWORK_PROPERTIES","checkProperties","PropertyKeys","keys","it","ComponentUtil","getCallbackForEvent","validPropertiesAndExceptions","containerName","docsUrl","invalidProperties","fuzzyCheckStrings","invalidPropertyKeys","invalidPropertyKey","fuzzySuggestions","slice","join","getDomData","element","domData","setDomData","isEnterprise","enterprise","isRowSelection","rowSelection","isRowDeselection","rowDeselection","isRowMultiSelectWithClick","rowMultiSelectWithClick","getContext","pivotMode","isPivotTotals","pivotTotals","getPivotColumnGroupTotals","pivotColumnGroupTotals","getPivotRowTotals","pivotRowTotals","isRowModelInfinite","rowModelType","ROW_MODEL_TYPE_INFINITE","isRowModelViewport","ROW_MODEL_TYPE_VIEWPORT","ROW_MODEL_TYPE_SERVER_SIDE","isRowModelDefault","ROW_MODEL_TYPE_CLIENT_SIDE","DEPRECATED_ROW_MODEL_TYPE_NORMAL","editType","isSuppressFocusAfterRefresh","suppressFocusAfterRefresh","isSuppressBrowserResizeObserver","suppressBrowserResizeObserver","isSuppressMaintainUnsortedOrder","suppressMaintainUnsortedOrder","isShowToolPanel","sideBar","isArray","getSideBar","toolPanels","isSuppressTouch","suppressTouch","isSuppressRowTransform","suppressRowTransform","isSuppressSetColumnStateEvents","suppressSetColumnStateEvents","suppressAsyncEvents","isEnableCellChangeFlash","enableCellChangeFlash","groupSelectsChildren","isTreeData","isSuppressRowHoverHighlight","suppressRowHoverHighlight","isGroupSelectsFiltered","groupSelectsFiltered","groupHideOpenParents","isGroupMultiAutoColumn","groupMultiAutoColumn","groupRemoveSingleChildren","isGroupRemoveLowestSingleChildren","groupRemoveLowestSingleChildren","isGroupIncludeFooter","groupIncludeFooter","isGroupIncludeTotalFooter","groupIncludeTotalFooter","isGroupSuppressBlankHeader","groupSuppressBlankHeader","isSuppressRowClickSelection","suppressRowClickSelection","isSuppressCellSelection","suppressCellSelection","isSuppressMultiSort","suppressMultiSort","isMultiSortKeyCtrl","multiSortKey","isGroupSuppressAutoColumn","groupSuppressAutoColumn","isSuppressDragLeaveHidesColumns","suppressDragLeaveHidesColumns","isSuppressScrollOnNewData","suppressScrollOnNewData","isRowDragManaged","rowDragManaged","isSuppressRowDrag","suppressRowDrag","getDomLayout","domLayout","DOM_LAYOUT_PRINT","DOM_LAYOUT_AUTO_HEIGHT","DOM_LAYOUT_NORMAL","doOnce","isSuppressHorizontalScroll","suppressHorizontalScroll","isSuppressMaxRenderedRowRestriction","suppressMaxRenderedRowRestriction","isExcludeChildrenWhenTreeDataFiltering","excludeChildrenWhenTreeDataFiltering","isAlwaysShowVerticalScroll","alwaysShowVerticalScroll","isSuppressLoadingOverlay","suppressLoadingOverlay","isSuppressNoRowsOverlay","suppressNoRowsOverlay","isSuppressFieldDotNotation","suppressFieldDotNotation","getPinnedTopRowData","pinnedTopRowData","getPinnedBottomRowData","pinnedBottomRowData","isFunctionsPassive","functionsPassive","isSuppressTabbing","suppressTabbing","isSuppressChangeDetection","suppressChangeDetection","isSuppressAnimationFrame","suppressAnimationFrame","getQuickFilterText","quickFilterText","isCacheQuickFilter","cacheQuickFilter","isUnSortIcon","unSortIcon","isSuppressMenuHide","suppressMenuHide","isEnterMovesDownAfterEdit","enterMovesDownAfterEdit","isEnterMovesDown","enterMovesDown","getRowStyle","rowStyle","getRowClass","rowClass","getRowStyleFunc","getRowClassFunc","rowClassRules","getPopupParent","popupParent","getBlockLoadDebounceMillis","blockLoadDebounceMillis","getPostProcessPopupFunc","postProcessPopup","getDoesDataFlowerFunc","doesDataFlower","getPaginationNumberFormatterFunc","paginationNumberFormatter","getChildCountFunc","getChildCount","getDefaultGroupSortComparator","defaultGroupSortComparator","getIsFullWidthCellFunc","isFullWidthCell","getFullWidthCellRendererParams","fullWidthCellRendererParams","isEmbedFullWidthRows","deprecatedEmbedFullWidthRows","getSuppressKeyboardEventFunc","suppressKeyboardEvent","getBusinessKeyForNodeFunc","getBusinessKeyForNode","getApi","getColumnApi","isDeltaRowDataMode","deltaRowDataMode","isDeltaColumnMode","deltaColumnMode","isEnsureDomOrder","ensureDomOrder","isEnableCharts","enableCharts","getColResizeDefault","colResizeDefault","isSingleClickEdit","singleClickEdit","isSuppressClickEdit","suppressClickEdit","isStopEditingWhenGridLosesFocus","stopEditingWhenGridLosesFocus","getGroupDefaultExpanded","groupDefaultExpanded","getMaxConcurrentDatasourceRequests","maxConcurrentDatasourceRequests","getMaxBlocksInCache","maxBlocksInCache","getCacheOverflowSize","cacheOverflowSize","getPaginationPageSize","paginationPageSize","getCacheBlockSize","cacheBlockSize","getInfiniteInitialRowCount","infiniteInitialRowCount","isPurgeClosedRowNodes","purgeClosedRowNodes","isSuppressPaginationPanel","suppressPaginationPanel","getRowData","rowData","isGroupUseEntireRow","groupUseEntireRow","enableRtl","getAutoGroupColumnDef","autoGroupColumnDef","isGroupSuppressRow","groupSuppressRow","getRowGroupPanelShow","rowGroupPanelShow","getPivotPanelShow","pivotPanelShow","isAngularCompileRows","angularCompileRows","isAngularCompileFilters","angularCompileFilters","isAngularCompileHeaders","angularCompileHeaders","isDebug","debug","getColumnDefs","getColumnTypes","columnTypes","getDatasource","datasource","getViewportDatasource","viewportDatasource","getServerSideDatasource","serverSideDatasource","isAccentedSort","accentedSort","isEnableBrowserTooltips","enableBrowserTooltips","isEnableCellExpressions","enableCellExpressions","isEnableGroupEdit","enableGroupEdit","isSuppressMiddleClickScrolls","suppressMiddleClickScrolls","isSuppressPreventDefaultOnMouseWheel","suppressPreventDefaultOnMouseWheel","isSuppressColumnVirtualisation","suppressColumnVirtualisation","isSuppressContextMenu","suppressContextMenu","isAllowContextMenuWithControlKey","allowContextMenuWithControlKey","isSuppressCopyRowsToClipboard","suppressCopyRowsToClipboard","isCopyHeadersToClipboard","copyHeadersToClipboard","isSuppressClipboardPaste","suppressClipboardPaste","isPagination","pagination","isSuppressEnterpriseResetOnNewColumns","suppressEnterpriseResetOnNewColumns","getProcessDataFromClipboardFunc","processDataFromClipboard","getBatchUpdateWaitMillis","batchUpdateWaitMillis","BATCH_WAIT_MILLIS","isSuppressMovableColumns","suppressMovableColumns","isAnimateRows","animateRows","isSuppressColumnMoveAnimation","suppressColumnMoveAnimation","isSuppressAggFuncInHeader","suppressAggFuncInHeader","isSuppressAggAtRootLevel","suppressAggAtRootLevel","isEnableRangeSelection","enableRangeSelection","isSuppressMultiRangeSelection","suppressMultiRangeSelection","isPaginationAutoPageSize","paginationAutoPageSize","isRememberGroupStateWhenNewData","rememberGroupStateWhenNewData","getIcons","icons","getAggFuncs","aggFuncs","getSortingOrder","sortingOrder","getAlignedGrids","alignedGrids","isMasterDetail","usingMasterDetail","masterDetail","getIsRowMasterFunc","isRowMaster","getIsRowSelectableFunc","isRowSelectable","getGroupRowRendererParams","groupRowRendererParams","getOverlayLoadingTemplate","overlayLoadingTemplate","getOverlayNoRowsTemplate","overlayNoRowsTemplate","isSuppressAutoSize","suppressAutoSize","isEnableCellTextSelection","enableCellTextSelection","suppressParentsInRowNodes","isFunctionsReadOnly","functionsReadOnly","floatingFilter","isEnableCellTextSelect","isEnableOldSetFilterModel","enableOldSetFilterModel","getDefaultColDef","defaultColDef","getDefaultColGroupDef","defaultColGroupDef","getDefaultExportParams","defaultExportParams","isSuppressCsvExport","suppressCsvExport","isSuppressExcelExport","suppressExcelExport","isSuppressMakeColumnVisibleAfterUnGroup","suppressMakeColumnVisibleAfterUnGroup","getNodeChildDetailsFunc","getNodeChildDetails","getDataPathFunc","getDataPath","getIsServerSideGroupFunc","isServerSideGroup","getServerSideGroupKeyFunc","getServerSideGroupKey","getGroupRowAggNodesFunc","groupRowAggNodes","getContextMenuItemsFunc","getContextMenuItems","getMainMenuItemsFunc","getMainMenuItems","getRowNodeIdFunc","getRowNodeId","getNavigateToNextCellFunc","navigateToNextCell","getTabToNextCellFunc","tabToNextCell","usingTreeData","treeData","isValueCache","valueCache","isValueCacheNeverExpires","valueCacheNeverExpires","isAggregateOnlyChangedColumns","aggregateOnlyChangedColumns","getProcessSecondaryColDefFunc","processSecondaryColDef","getProcessSecondaryColGroupDefFunc","processSecondaryColGroupDef","getSendToClipboardFunc","sendToClipboard","getProcessRowPostCreateFunc","processRowPostCreate","getProcessCellForClipboardFunc","processCellForClipboard","getProcessHeaderForClipboardFunc","processHeaderForClipboard","getProcessCellFromClipboardFunc","processCellFromClipboard","getViewportRowModelPageSize","viewportRowModelPageSize","getViewportRowModelBufferSize","viewportRowModelBufferSize","isServerSideSortingAlwaysResets","serverSideSortingAlwaysResets","getPostSortFunc","postSort","getClipboardDeliminator","clipboardDeliminator","setProperty","gridOptionsNoType","previousValue","event_1","currentValue","addLayoutElement","domLayoutAutoHeight","domLayoutPrint","domLayoutNormal","e","addOrRemoveCssClass","listener","checkEventDeprecation","eventName","removeEventListener","getAutoSizePadding","autoSizePadding","getHeaderHeight","headerHeight","specialForNewMaterial","getFloatingFiltersHeight","floatingFiltersHeight","getGroupHeaderHeight","groupHeaderHeight","getPivotHeaderHeight","pivotHeaderHeight","getPivotGroupHeaderHeight","pivotGroupHeaderHeight","isExternalFilterPresent","doesExternalFilterPass","node","getDocument","getMinColWidth","minColWidth","MIN_COL_WIDTH","getMaxColWidth","maxColWidth","getColWidth","colWidth","getRowBufferInPixels","rowsToBuffer","rowBuffer","ROW_BUFFER_SIZE","defaultRowHeight","getRowHeightAsNumber","res","scrollbarWidth","options","suppressUnSort","suppressDescSort","groupAggFields","groupHidePivotColumns","groupKeys","onRowDeselected","rowDeselected","rowsAlreadyGrouped","groupAggFunction","checkboxSelection","paginationInitialRowCount","infinitePageSize","infiniteBlockSize","maxPagesInCache","paginationOverflowSize","suppressMenuFilterPanel","suppressMenuMainPanel","suppressMenuColumnPanel","suppressUseColIdForGroups","groupColumnDef","slaveGrids","floatingTopRowData","floatingBottomRowData","paginationStartPage","getHeaderCellTemplate","headerCellTemplate","headerCellRenderer","layoutInterval","gridAutoHeight","showToolPanel","oldToolPanelProperties","toolPanelSuppressRowGroups","toolPanelSuppressValues","toolPanelSuppressPivots","toolPanelSuppressPivotMode","toolPanelSuppressColumnFilter","toolPanelSuppressColumnSelectAll","toolPanelSuppressSideButtons","toolPanelSuppressColumnExpandAll","contractColumnSelection","toolPanelColumnsCompProps","translation","SideBarDefParser","sideBarDef","columnsDef","mergeDeep","componentParams","enableStatusBar","statusBar","components","component","alwaysShowStatusBar","enableServerSideSorting","enableSorting","sortable","enableFilter","enableServerSideFilter","enableColResize","resizable","embedFullWidthRows","treeDataViolations","getLocaleTextFunc","localeTextFunc","that","localeText","callbackMethodName","rowHeight","getDefaultRowHeight","isNumeric","getRowHeightForNode","allowEstimate","getRowHeight","height","estimated","data","detail","detailRowHeight","minRowHeight","isAutoRowHeightActive","autoHeight","autoHeightCalculator","getPreferredHeightForRow","max","isDynamicRowHeight","getVirtualItemHeight","isNaN","sassVariableName","theme","environment","getTheme","getSassVariable","PROP_HEADER_HEIGHT","PROP_GROUP_REMOVE_SINGLE_CHILDREN","PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN","PROP_PIVOT_HEADER_HEIGHT","PROP_SUPPRESS_CLIPBOARD_PASTE","PROP_GROUP_HEADER_HEIGHT","PROP_PIVOT_GROUP_HEADER_HEIGHT","PROP_FLOATING_FILTERS_HEIGHT","PROP_SUPPRESS_ROW_DRAG","PROP_POPUP_PARENT","Boolean","Environment","AutoHeightCalculator","Qualifier","PreDestroy","LINE_SEPARATOR","XmlFactory","createHeader","headerElement","headerStart","headerEnd","version","encoding","standalone","att","map","createXml","xmlElement","booleanTransformer","props","properties","prefixedAttributes","prefixedSet","returnAttributeIfPopulated","prefix","rawMap","name","textNode","xmlValue","logger","beanWrappers","componentsMappedByName","destroyed","beans","contextParams","log","setupComponents","createBeans","beanInstances","getBeanInstances","wireBeans","mapObject","beanEntry","beanInstance","componentMeta","addComponent","classEscaped","componentName","replace","toLowerCase","classUpperCase","toUpperCase","theClass","createComponentFromElement","afterPreCreateCallback","nodeName","newComponent","bean","Error","autoWireBeans","methodWireBeans","callLifeCycleMethods","createBeanWrapper","overrideBeans","iterateObject","constructorParamsMeta","__agBeanMetaData","autowireMethods","agConstructor","constructorParams","getBeansForParameters","newInstance","applyToConstructor","getBeanName","metaData","beanName","error","forEachMetaDataInHierarchy","attributes","agClassAttributes","attribute","otherBean","lookupBeanInstance","optional","attributeName","methodName","wireParams","initParams","getPrototypeOf","constructorString","substring","parameters","beansList","otherBeanName","Number","wiringBean","seed","lifeCycleMethod","methods","getBean","getEnterpriseDefaultComponents","enterpriseDefaultComponents","argArray","args","factoryFunction","PreConstruct","descriptor","getOrCreateProps","postConstructMethods","preConstructMethods","preDestroyMethods","classConstructor","propertyKey","autowiredFunc","Optional","classPrototype","methodOrAttributeName","index","expressionService_1","rowRenderer_1","templateService_1","valueService_1","columnAnimationService_1","focusedCellController_1","cellRendererFactory_1","popupService_1","stylingService_1","columnHoverService_1","paginationProxy_1","animationFrameService_1","userComponentFactory_1","filterManager_1","maxDivHeightScaler_1","tooltipManager_1","Beans","postConstruct","doingMasterDetail","PaginationProxy","ExpressionService","RowRenderer","TemplateService","ValueService","ColumnAnimationService","FocusedCellController","CellRendererFactory","PopupService","StylingService","UserComponentFactory","AnimationFrameService","FilterManager","MaxDivHeightScaler","TooltipManager","component_1","rowNode_1","CheckboxSelectionComponent","createAndAddIcons","eCheckedIcon","createIconNoSpan","eUncheckedIcon","eIndeterminateIcon","onDataChanged","onSelectionChanged","onSelectableChanged","showOrHideSelect","state","isSelected","setVisible","onCheckedClicked","updatedCount","setSelectedParams","newValue","onUncheckedClicked","rangeSelect","shiftKey","onIndeterminateClicked","addGuiEventListener","stopPropagationForAgGrid","RowNode","EVENT_ROW_SELECTED","EVENT_DATA_CHANGED","EVENT_SELECTABLE_CHANGED","isRowSelectableFunc","checkboxVisibleIsDynamic","checkboxCallbackExists","selectable","isCellCheckboxSelection","getColDef","Component","_typeof","obj","Symbol","iterator","_defineProperty","enumerable","configurable","writable","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","arr2","iter","from","TypeError","reflectionIsSupported","defineMetadata","getOwnMetadataKeys","copyReflectionMetadata","to","forwardMetadata","metaKeys","metaKey","getOwnMetadata","fakeArray","hasProto","createDecorator","factory","Ctor","__decorators__","isPrimitive","collectDataFromConstructor","vm","originalInit","_init","$options","charAt","get","set","plainData","$internalHooks","componentFactory","_componentTag","proto","mixins","computed","fn","superProto","Super","Extended","extend","forwardStaticMembers","shouldIgnore","callee","caller","Original","extendedDescriptor","superDescriptor","registerHooks","reflectMetadataIsSupported","getMetadata","applyMetadata","Prop","componentOptions","VueComponentFactory","getComponentType","componentInstance","$parent","createAndMountComponent","componentType","details","freeze","componentDependencies","dependency","$mount","VueFrameworkComponentWrapper","createWrapper","DynamicComponent","hasMethod","wrapper","getFrameworkComponentInstance","callMethod","frameworkComponentInstance","addMethod","overrideProcessing","autoParamsRefresh","processMethod","createComponent","VueComponent","createMethodProxy","mandatory","$el","$destroy","getAgGridProperties","default","rowDataModel","watch","processChanges","propertyName","model","prop","AgGridColumn","hasChildColumns","slots","mapChildColumnDefs","toColDef","createColDefFromGridColumn","getChildColDefs","columnChildren","assign","attrs","BOOLEAN_PROPERTIES","property","colDefAsAny","reduce","o","AgGridVue","gridCreated","isDestroyed","gridReadyFired","emitRowModel","AgGridVue_1","kebabProperty","render","h","globalEventListener","eventType","updateModelIfUsed","kebabName","$listeners","$emit","skipChange","changes","processOnChange","mounted","debounce","frameworkComponentWrapper","copyAttributesToGridOptions","checkForBindingConflicts","getRowDataBasedOnBindings","$slots","gridParams","seedBeanInstances","thisAsAny","forEachNode","ROW_DATA_EVENTS","currentRowData","previousRowData","func","delay","timeout","later","window","clearTimeout","setTimeout","LoadingType","componentAnnotations_1","OverlayWrapperComponent","TEMPLATE","eOverlayWrapper","setWrapperTypeClass","loadingType","Loading","NoRows","showLoadingOverlay","destroyActiveOverlay","userComponentFactory","newLoadingOverlayComponent","then","comp","activeOverlay","showNoRowsOverlay","newNoRowsOverlayComponent","hideOverlay","RefSelector","HTMLElement","touchListener_1","originalColumnGroup_1","HeaderGroupComp","setupLabel","addGroupExpandIcon","setupExpandIcons","addInIcon","expandAction","isStopPropagationForAgGrid","newExpandedValue","columnGroup","isExpanded","setColumnGroupOpened","getOriginalColumnGroup","addTouchAndClickListeners","eCloseIcon","eOpenIcon","stopPropagationAction","updateIconVisibility","originalColumnGroup","OriginalColumnGroup","EVENT_EXPANDED_CHANGED","EVENT_EXPANDABLE_CHANGED","eElement","action","touchListener","TouchListener","EVENT_TAP","addDestroyFunc","isExpandable","expanded","iconName","refName","eIcon","getRefElement","displayName","eInnerText","innerHTML","columnUtils_1","userProvidedColDef","colId","primary","moving","menuVisible","filterActive","rowGroupActive","pivotActive","aggregationActive","visible","hide","sortedAt","lockPosition","lockPinned","lockVisible","setColDef","getUserProvidedColDef","isLockPosition","isLockVisible","isLockPinned","setParent","getParent","setOriginalParent","originalParent","getOriginalParent","initialise","setPinned","minWidth","maxWidth","actualWidth","columnUtils","calculateColInitialWidth","suppressDotNotation","fieldContainsDots","field","tooltipFieldContainsDots","tooltipField","validate","isEmptyGroup","isRowGroupDisplayed","showRowGroup","showingAllGroups","showingThisGroup","getUniqueId","isPrimary","isFilterAllowed","filterDefined","filterFramework","isFieldContainsDots","isTooltipFieldContainsDots","colDefAny","itemsNotAllowedWithoutEnterprise","item","itemsNotAllowedWithTreeData","floatingCellRenderer","pinnedRowCellRenderer","floatingRendererFramework","pinnedRowCellRendererFramework","floatingRendererParams","pinnedRowCellRendererParams","floatingValueFormatter","pinnedRowValueFormatter","cellFormatter","valueFormatter","volatile","suppressSorting","suppressFilter","suppressResize","tooltip","tooltipValueGetter","createIsColumnFuncParams","isSuppressNavigable","suppressNavigable","userFunc","isCellEditable","group","isColumnFunc","editable","isRowDrag","rowDrag","isSuppressPaste","suppressPaste","isResizable","editableFunc","setMoving","source","createColumnEvent","EVENT_MOVING_CHANGED","isMoving","getSort","setSort","EVENT_SORT_CHANGED","setMenuVisible","EVENT_MENU_VISIBLE_CHANGED","isMenuVisible","isSortAscending","SORT_ASC","isSortDescending","SORT_DESC","isSortNone","isSorting","getSortedAt","setSortedAt","setAggFunc","aggFunc","getAggFunc","getLeft","left","getOldLeft","oldLeft","getRight","setLeft","EVENT_LEFT_CHANGED","isFilterActive","setFilterActive","EVENT_FILTER_ACTIVE_CHANGED","EVENT_FILTER_CHANGED","setFirstRightPinned","firstRightPinned","EVENT_FIRST_RIGHT_PINNED_CHANGED","setLastLeftPinned","lastLeftPinned","EVENT_LAST_LEFT_PINNED_CHANGED","isFirstRightPinned","isLastLeftPinned","isPinned","isPinnedLeft","isPinnedRight","getPinned","EVENT_VISIBLE_CHANGED","isVisible","getColumnGroupShow","columnGroupShow","getColId","getDefinition","getActualWidth","createBaseColDefParams","getColSpan","colSpan","getRowSpan","rowSpan","setActualWidth","EVENT_WIDTH_CHANGED","isGreaterThanMax","getMinWidth","getMaxWidth","setMinimum","setRowGroupActive","rowGroup","EVENT_ROW_GROUP_CHANGED","isRowGroupActive","setPivotActive","pivot","EVENT_PIVOT_CHANGED","isPivotActive","isAnyFunctionActive","isValueActive","isAnyFunctionAllowed","isAllowPivot","isAllowRowGroup","isAllowValue","setValueActive","EVENT_VALUE_CHANGED","enablePivot","enableValue","enableRowGroup","getMenuTabs","defaultValues","menuTabs","ColumnUtils","dragService_1","HorizontalResizeService","addResizeBar","dragSource","dragStartPixels","eResizeBar","onDragStart","onDragStop","onDragging","dragService","addDragSource","finishedWithResizeFunc","removeDragSource","mouseEvent","draggingStarted","dragStartX","clientX","setResizeIcons","MouseEvent","onResizeStart","oldBodyCursor","eGridDiv","style","cursor","oldMsUserSelect","msUserSelect","oldWebkitUserSelect","webkitUserSelect","onResizeEnd","resizeAmount","resetIcons","onResizing","DragService","CssClassApplier","addHeaderClassesFromColDef","abstractColDef","eHeaderCell","addColumnClassesFromCollDef","addToolPanelClassesFromColDef","toolPanelClass","classesOrFunc","classToUse","headerClassFunc","addCssClass","cssClassItem","STRING_PROPERTIES","OBJECT_PROPERTIES","ARRAY_PROPERTIES","NUMBER_PROPERTIES","FUNCTION_PROPERTIES","sizeColumnsToFit","gridWidth","getColumnGroup","instanceId","getDisplayNameForColumn","location","getDisplayNameForColumnGroup","getColumn","getPrimaryColumn","setColumnState","columnState","getColumnState","resetColumnState","getColumnGroupState","setColumnGroupState","stateItems","resetColumnGroupState","isPinning","isPinningLeft","isPinningRight","getDisplayedColAfter","getDisplayedColBefore","setColumnVisible","setColumnsVisible","setColumnPinned","setColumnsPinned","getAllColumns","getAllPrimaryColumns","getAllGridColumns","getDisplayedLeftColumns","getDisplayedCenterColumns","getDisplayedRightColumns","getAllDisplayedColumns","getAllDisplayedVirtualColumns","moveColumn","toIndex","moveColumnByIndex","fromIndex","moveColumns","columnsToMoveKeys","moveRowGroupColumn","setColumnAggFunc","setColumnWidth","newWidth","finished","setPivotMode","getSecondaryPivotColumn","pivotKeys","valueColKey","setValueColumns","colKeys","removeValueColumn","colKey","removeValueColumns","addValueColumn","addValueColumns","setRowGroupColumns","removeRowGroupColumn","removeRowGroupColumns","addRowGroupColumn","addRowGroupColumns","getRowGroupColumns","setPivotColumns","removePivotColumn","removePivotColumns","addPivotColumn","addPivotColumns","getPivotColumns","getLeftDisplayedColumnGroups","getCenterDisplayedColumnGroups","getRightDisplayedColumnGroups","getAllDisplayedColumnGroups","autoSizeColumn","autoSizeColumns","autoSizeAllColumns","setSecondaryColumns","colDefs","getSecondaryColumns","getPrimaryColumns","columnGroupOpened","hideColumns","colIds","hideColumn","setState","getState","resetState","getAggregationColumns","removeAggregationColumn","removeAggregationColumns","addAggregationColumn","addAggregationColumns","setColumnAggFunction","getDisplayNameForCol","gridSerializer_1","downloader_1","CsvSerializingSession","config","valueService","processCellCallback","processHeaderCallback","lineOpened","suppressQuotes","columnSeparator","prepare","columnsToExport","addCustomHeader","customHeader","addCustomFooter","customFooter","onNewHeaderGroupingRow","onColumn","onNewHeaderGroupingRowColumn","header","span","putInQuotes","onNewHeaderRow","onNewHeaderRowColumn","extractHeaderValue","onNewBodyRow","onNewBodyRowColumn","extractRowCellValue","EXPORT_TYPE_CSV","stringValue","valueEscaped","BaseGridSerializingSession","BaseCreator","setBeans","export","userParams","isExportSuppressed","_a","getMergedParamsAndData","mergedParams","fileNamePresent","fileName","getDefaultFileName","getDefaultFileExtension","downloader","download","packageFile","getData","mergeDefaultParams","gridSerializer","serialize","createSerializingSession","baseParams","Blob","navigator","msSaveOrOpenBlob","getMimeType","CsvCreator","exportDataAsCsv","getDataAsCsv","_b","Downloader","GridSerializer","ColumnKeyCreator","existingKeys","addExistingKeys","getUniqueKey","colField","toStringOrNull","count","idToTry","EVENT_COLUMN_EVERYTHING_CHANGED","EVENT_NEW_COLUMNS_LOADED","EVENT_COLUMN_PIVOT_MODE_CHANGED","EVENT_EXPAND_COLLAPSE_ALL","EVENT_COLUMN_PIVOT_CHANGED","EVENT_COLUMN_MOVED","EVENT_COLUMN_VISIBLE","EVENT_COLUMN_PINNED","EVENT_COLUMN_GROUP_OPENED","EVENT_VIRTUAL_COLUMNS_CHANGED","EVENT_ROW_GROUP_OPENED","EVENT_ROW_DATA_CHANGED","EVENT_ROW_DATA_UPDATED","EVENT_PINNED_ROW_DATA_CHANGED","EVENT_RANGE_SELECTION_CHANGED","EVENT_TOOL_PANEL_VISIBLE_CHANGED","EVENT_MODEL_UPDATED","EVENT_PASTE_START","EVENT_PASTE_END","EVENT_CELL_CLICKED","EVENT_CELL_DOUBLE_CLICKED","EVENT_CELL_MOUSE_DOWN","EVENT_CELL_CONTEXT_MENU","EVENT_CELL_VALUE_CHANGED","EVENT_ROW_VALUE_CHANGED","EVENT_CELL_FOCUSED","EVENT_SELECTION_CHANGED","EVENT_CELL_KEY_DOWN","EVENT_CELL_KEY_PRESS","EVENT_CELL_MOUSE_OVER","EVENT_CELL_MOUSE_OUT","EVENT_FILTER_MODIFIED","EVENT_FILTER_OPENED","EVENT_VIRTUAL_ROW_REMOVED","EVENT_ROW_CLICKED","EVENT_ROW_DOUBLE_CLICKED","EVENT_GRID_READY","EVENT_GRID_SIZE_CHANGED","EVENT_VIEWPORT_CHANGED","EVENT_FIRST_DATA_RENDERED","EVENT_DRAG_STARTED","EVENT_DRAG_STOPPED","EVENT_ROW_EDITING_STARTED","EVENT_ROW_EDITING_STOPPED","EVENT_CELL_EDITING_STARTED","EVENT_CELL_EDITING_STOPPED","EVENT_BODY_SCROLL","EVENT_ANIMATION_QUEUE_EMPTY","EVENT_HEIGHT_SCALE_CHANGED","EVENT_PAGINATION_CHANGED","EVENT_COMPONENT_STATE_CHANGED","EVENT_BODY_HEIGHT_CHANGED","EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED","EVENT_FLASH_CELLS","EVENT_ROW_DRAG_ENTER","EVENT_ROW_DRAG_MOVE","EVENT_ROW_DRAG_LEAVE","EVENT_ROW_DRAG_END","EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST","EVENT_COLUMN_PIVOT_CHANGE_REQUEST","EVENT_COLUMN_VALUE_CHANGE_REQUEST","EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST","allFilters","quickFilter","quickFilterParts","FilterManager_1","registerGridCore","gridCore","onNewRowsLoaded","onNewColumnsLoaded","parseQuickFilter","setQuickFilterParts","checkExternalFilter","split","setFilterModel","allPromises","modelKeys_1","filterWrapper","removeFromArray","newModel","setModelOnFilterWrapper","filterPromise","iterateArray","getOrCreateFilterWrapper","all","whatever","onFilterChanged","setModel","getFilterModel","resolveNow","getModel","isAdvancedFilterPresent","advancedFilterPresent","setAdvancedFilterPresent","atLeastOneActive","updateFilterFlagInColumns","isAnyFilterPresent","isQuickFilterPresent","externalFilterPresent","doesFilterPass","filterToSkip","l","newFilter","setQuickFilter","parsedFilter","onAnyFilterChanged","doesRowPassOtherFilters","doesRowPassFilter","doesRowPassQuickFilterNoCache","filterPart","getAllColumnsForQuickFilter","filterPasses","part","getQuickFilterTextForColumn","doesRowPassQuickFilterCache","quickFilterAggregateText","aggregateRowForQuickFilter","doesRowPassQuickFilter","usingCache","partPasses","valueAfterCallback","stringParts","QUICK_FILTER_SEPARATOR","createValueGetter","getFilterComponent","cachedFilter","putIntoGui","createFilterWrapper","createFilterInstance","$scope","defaultFilter","sanitisedColDef","cloneObject","filterChangedCallback","filterModifiedCallback","rowModel","valueGetter","doesRowPassOtherFilter","modifyParamsCallback","newFilterComponent","scope","compiledElement","guiPromise","external","$new","eFilterGui","className","guiFromFilter","loadTemplate","$compile","$apply","eGui","atLeastOneFilterGone","oldColumn","disposeFilterWrapper","destroyFilter","csvCreator_1","selectionController_1","gridCell_1","immutableService_1","valueCache_1","alignedGridsService_1","pinnedRowModel_1","detailGridInfoMap","registerHeaderRootComp","headerRootComp","getType","clientSideRowModel","infinitePageRowModel","serverSideRowModel","__getAlignedGridService","alignedGridsService","addDetailGridInfo","gridInfo","removeDetailGridInfo","getDetailGridInfo","forEachDetailGridInfo","csvCreator","getDataAsExcel","excelCreator","getDataAsExcelXml","exportDataAsExcel","setEnterpriseDatasource","setServerSideDatasource","setDatasource","setViewportDatasource","setRowData","immutableService","createTransactionForRowData","transaction","orderIdMap","updateRowData","rowRenderer","refreshFullWidthRows","selectionController","reset","setFloatingTopRowData","rows","setPinnedTopRowData","setFloatingBottomRowData","setPinnedBottomRowData","getFloatingTopRowCount","getPinnedTopRowCount","getFloatingBottomRowCount","getPinnedBottomRowCount","getFloatingTopRow","getPinnedTopRow","getFloatingBottomRow","getPinnedBottomRow","pinnedRowModel","setColumnDefs","expireValueCache","expire","getVerticalPixelRange","getVScrollPosition","getHorizontalPixelRange","getHScrollPosition","setAlwaysShowVerticalScroll","show","refreshToolPanel","refreshSideBar","refreshCells","flashCells","redrawRows","redrawAfterModelUpdate","timeFullRedraw","iterationCount","totalProcessing","totalReflow","doOneIteration","start","Date","getTime","endProcessing","endReflow","durationProcessing","durationReflow","finish","refreshView","refreshRows","rowDataChanged","softRefreshView","refreshGroupRows","setFunctionsReadOnly","readOnly","refreshHeader","setHeaderAndFloatingHeights","filterManager","isColumnFilterPresent","onGroupExpandedOrCollapsed","deprecated_refreshFromIndex","refreshModel","step","STEP_MAP","refreshInMemoryRowModel","refreshClientSideRowModel","paramsStep","STEP_EVERYTHING","stepsMapped","STEP_FILTER","aggregate","STEP_AGGREGATE","STEP_SORT","STEP_PIVOT","modelParams","keepRenderedRows","animate","keepEditingRows","isAnimationFrameQueueEmpty","animationFrameService","isQueueEmpty","getRowNode","expandAll","expandOrCollapseAll","collapseAll","addVirtualRowListener","rowIndex","addRenderedRowListener","selectIndex","tryMulti","suppressEvents","deselectIndex","selectNode","clearSelection","deselectNode","selectAll","selectAllRowNodes","deselectAll","deselectAllRowNodes","selectAllFiltered","deselectAllFiltered","recomputeAggregates","isNodeSelected","getSelectedNodesById","getSelectedNodes","getSelectedRows","getBestCostNodeSelection","getRenderedNodes","ensureColIndexVisible","ensureColumnVisible","ensureIndexVisible","position","ensureNodeVisible","comparator","forEachLeafNode","forEachNodeAfterFilter","forEachNodeAfterFilterAndSort","getFilterApiForColDef","getFilterInstance","filterComp","getFilterApi","getStatusPanel","statusBarService","getColumnDef","onSortChanged","setSortModel","sortModel","getSortModel","getFocusedCell","focusedCellController","clearFocusedCell","setFocusedCell","floating","setSuppressRowDrag","setHeaderHeight","doLayout","setGridAutoHeight","setDomLayout","setEnableCellTextSelection","setCellTextSelection","setGroupHeaderHeight","setFloatingFiltersHeight","setPivotGroupHeaderHeight","setPivotHeaderHeight","isSideBarVisible","setSideBarVisible","openToolPanel","closeToolPanel","getOpenedToolPanel","setSideBar","def","setSuppressClipboardPaste","isToolPanelShowing","checkViewportAndScrolls","resetRowHeights","setGroupRemoveSingleChildren","setGroupRemoveLowestSingleChildren","onRowHeightChanged","getGridColumn","removeGlobalListener","resetQuickFilter","getRangeSelections","rangeController","getCellRanges","camelCaseToHumanReadable","camelCase","camelCaseToHumanText","addRangeSelection","rangeSelection","addRange","clearRangeSelection","copySelectedRowsToClipboard","includeHeader","columnKeys","clipboardService","copySelectedRangeToClipboard","copySelectedRangeDown","copyRangeDown","showColumnMenuAfterButtonClick","buttonElement","menuFactory","showMenuAfterButtonClick","showColumnMenuAfterMouseClick","showMenuAfterMouseEvent","hidePopupMenu","contextMenuFactory","hideActiveMenu","setPopupParent","ePopupParent","tabToPreviousCell","getCellRendererInstances","getCellEditorInstances","getEditingCells","cancel","startEditingCell","gridCellDef","rowPinned","gridCell","GridCell","notPinned","keyPress","charPress","addAggFunc","aggFuncService","addAggFuncs","clearAggFuncs","clear","rowDataTransaction","batchUpdateRowData","insertItemsAtIndex","items","skipRefresh","addIndex","removeItems","dataToRemove","addItems","refreshVirtualPageCache","refreshInfiniteCache","refreshInfinitePageCache","refreshCache","purgeVirtualPageCache","purgeInfinitePageCache","purgeInfiniteCache","purgeCache","purgeEnterpriseCache","route","purgeServerSideCache","getVirtualRowCount","getInfiniteRowCount","isMaxRowFound","setVirtualRowCount","maxRowFound","setInfiniteRowCount","getVirtualPageState","getCacheBlockState","getInfinitePageState","getBlockState","checkGridSize","getFirstRenderedRow","getFirstDisplayedRow","getFirstVirtualRenderedRow","getLastRenderedRow","getLastDisplayedRow","getLastVirtualRenderedRow","getDisplayedRowAtIndex","getRow","getDisplayedRowCount","getRowCount","paginationIsLastPageFound","paginationProxy","isLastPageFound","paginationGetPageSize","getPageSize","paginationSetPageSize","size","paginationGetCurrentPage","getCurrentPage","paginationGetTotalPages","getTotalPages","paginationGetRowCount","getTotalRowCount","paginationGoToNextPage","goToNextPage","paginationGoToPreviousPage","goToPreviousPage","paginationGoToFirstPage","goToFirstPage","paginationGoToLastPage","goToLastPage","paginationGoToPage","page","goToPage","ImmutableService","SelectionController","AlignedGridsService","PinnedRowModel","ValueCache","columnGroup_1","columnFactory_1","displayedGroupCreator_1","autoWidthCalculator_1","logger_1","groupInstanceIdCreator_1","autoGroupColService_1","primaryHeaderRowCount","secondaryHeaderRowCount","secondaryColumnsPresent","gridHeaderRowCount","displayedLeftColumns","displayedRightColumns","displayedCenterColumns","allDisplayedColumns","allDisplayedVirtualColumns","allDisplayedCenterVirtualColumns","rowGroupColumns","pivotColumns","ready","autoGroupsNeedBuilding","bodyWidth","leftWidth","rightWidth","bodyWidthDirty","isPivotSettingAllowed","colsPreviouslyExisted","oldPrimaryColumns","primaryColumns","balancedTreeResult","columnFactory","createColumnTree","primaryColumnTree","columnTree","treeDept","getColumnsFromTree","extractRowGroupColumns","extractPivotColumns","createValueColumns","updateGridColumns","updateDisplayedColumns","checkDisplayedVirtualColumns","eventEverythingChanged","newColumnsLoadedEvent","autoRowHeightColumns","getAllAutoRowHeightCols","setVirtualViewportLeftAndRight","viewportLeft","scrollPosition","viewportRight","getDisplayedColumnsStartingAt","currentColumn","hashBefore","updateVirtualSets","hashAfter","setVirtualViewportPosition","valueColumnToFind","foundColumn","secondaryColumns","thisPivotKeys","pivotValueColumn","pivotKeyMatches","compareArrays","pivotValueMatches","loggerFactory","setFirstRightAndLastLeftPinned","lastLeft","firstRight","gridColumns","columnsAutosized","changesThisTimeAround","actionOnGridColumns","preferredWidth","autoWidthCalculator","getPreferredWidthForColumn","normaliseColumnWidth","event_2","rootColumns","recursiveFindColumns","childColumns","child","getChildren","displayedLeftColumnTree","displayedRightColumnTree","displayedCentreColumnTree","getPrimaryColumnTree","getDisplayedColumnGroups","isColumnDisplayed","getDisplayedLeftColumnsForRow","colSpanActive","getDisplayedColumnsForRow","getDisplayedRightColumnsForRow","displayedColumns","filterCallback","emptySpaceBeforeColumn","out_i_1","lastConsideredCol","_loop_1","maxAllowedColSpan","min","columnsToCheckFilter","colsToRemove","j","colForFilter","gapBeforeColumn","getAllDisplayedCenterVirtualColumnsForRow","isColumnInViewport","columnLeft","columnRight","leftBounds","rightBounds","columnToMuchLeft","columnToMuchRight","getPinnedLeftContainerWidth","getWidthOfColsInList","getPinnedRightContainerWidth","updatePrimaryColumnList","masterList","actionIsAdd","columnCallback","atLeastOne","columnToAdd","setPrimaryColumnList","added","defaultAggFunc","getDefaultAggFunc","getPrimaryOrGridColumn","sets","ratios","defaultIsShift","otherCol","widthDiff","otherColWidth","resizeColumnSets","checkMinAndMaxWidthsForSet","columnResizeSet","minWidthAccumulated","maxWidthAccumulated","maxWidthActive","minWidthPasses","maxWidthPasses","resizeSets","passMinMaxCheck","every","changedCols","allCols","newWidths","finishedCols","finishedColsGrew","loopCount","_loop_2","subsetCols","subsetRatios","subsetRatioTotal","pixelsToDistribute","thisColFinished","ratioThisCol","ratioScale","colNewWidth","lastCol","round","state_1","atLeastOneColChanged","setLeftValues","updateBodyWidths","event_4","event_3","event_5","splice","columnAnimationService","columnsToMove","getGridColumns","failedRules","doesMovePassRules","moveInArray","proposedColumnOrder","doesMovePassMarryChildren","doesMovePassLockedPositions","foundNonLocked","rulePassed","allColumnsCopy","depthFirstOriginalTreeSearch","gridBalancedTree","marryChildren","getColGroupDef","newIndexes","getLeafColumns","newColIndex","maxIndex","minIndex","spread","maxSpread","getBodyContainerWidth","getContainerWidth","newBodyWidth","newLeftWidth","newRightWidth","atLeastOneChanged","event_6","getDisplayedColumns","columnsForQuickFilter","isEmpty","isRowGroupEmpty","actualPinned","createEvent","updatedColumns","resultOfAction","event_7","oldIndex","getDisplayedGroupAfter","getDisplayedLeafColumns","requiredLevel","getLevel","groupPointer","getPrimaryAndSecondaryAndAutoColumns","groupAutoColumns","createStateItemFromColumn","rowGroupIndex","pivotIndex","primaryColumnState","groupAutoColumnState","columnStateList","orderColumnStateList","gridColumnIds","itemA","itemB","posA","posB","suppressEverythingEvent","columnStates","letRowGroupIndex","letPivotIndex","stateItem","columnStateBefore","columnsWithNoState","success","rowGroupIndexes","pivotIndexes","autoGroupColumnStates","getAutoColumn","syncColumnWithStateItem","syncColumnWithNoState","sortColumnListUsingIndexes","autoCol","orderOfColIds_1","colA","colB","indexA","indexB","event_8","raiseColumnEvents","columnStateAfter","raiseEventWithAllColumns","idMapper","unchanged","getChangedColumns","changedPredicate","changedColumns","columnStateBeforeMap","colStateBefore","valueColumnIdMapper","cs","pivotColumnIdMapper","rowGroupColumnIdMapper","pinnedChangePredicate","raiseColumnPinnedEvent","visibilityChangePredicate","cols","raiseColumnVisibleEvent","resizeChangePredicate","raiseColumnResizeEvent","raiseColumnMovedEvent","event_9","event_10","event_11","movedColumns","_loop_3","before","after","predicate","movedColumn","find","this_1","event_12","indexes","getColumns","columnLookupCallback","foundColumns","getColumnWithValidation","columnList","columnsMatch","groupCol","columnMatches","colDefMatches","idMatches","includeAggFunc","headerName","getHeaderName","wrapHeaderNameWithAggFunc","getDisplayNameForOriginalColumnGroup","colGroupDef","headerValueGetter","expressionService","evaluate","aggFuncFound","pivotActiveOnThisColumn","measureActive","aggregationPresent","aggFuncString","aggFuncStringTranslated","ColumnGroup","allColumnGroups","checkInstanceId","depthFirstAllColumnTreeSearch","matched","getGroupId","getInstanceId","isReady","extractColumns","flag","previousCols","setFlagFunc","getIndexFunc","getValueFunc","colPresentInPrimaryFunc","colMissingFromPrimaryFunc","colNewFunc","removedCols","existingCols","newPrimaryCols","newCols","booleanValue","groupState","groupId","openByDefault","columnGroupState","impactedGroups","groupKey","setExpanded","updateGroupsAndDisplayedColumns","keyAsString","calculateColumnsForDisplay","columnsForDisplay","isAutoGroupCol","isValueCol","checkColSpanActiveInCols","calculateColumnsForGroupDisplay","groupDisplayColumns","checkFunc","getGroupDisplayColumns","buildDisplayedTrees","isSecondaryColumnsPresent","newColsPresent","processSecondaryColumnDefinitions","secondaryBalancedTree","groupCallback","searchForColDefs","colDefs2","isGroup","gridColsArePrimary","lastPrimaryOrder","orderGridColsLikeLastPrimary","addAutoGroupToGridColumns","putFixedColumnsFirst","setupQuickFilterColumns","clearDisplayedColumns","noColsFound","oldColsOrdered","newColsOrdered","newGridColumns","newCol","siblings","leafCols","leafCol","presentInNewGriColumns","noYetInSiblings","lastIndex","insertIntoArray","isPrimaryColumnGroupsPresent","locked","unlocked","createGroupAutoColumnsIfNeeded","autoColBalancedTree","createForAutoGroups","displayedLeftHeaderRows","displayedRightHeaderRows","displayedCentreHeaderRows","updateOpenClosedVisibilityInColumnGroups","updateDisplayedColumnsFromTrees","addToDisplayedColumns","setupAllDisplayedColumns","setLeftValuesOfColumns","setLeftValuesOfGroups","allColumns","doingRtl","left_1","left_2","removeAllFromArray","checkLeft","displayedColumnTree","depthFirstDisplayedColumnTreeSearch","updateDisplayedCenterVirtualColumns","filterOutColumnsWithinViewport","getVirtualHeaderGroupRow","updateDisplayedVirtualGroups","virtualColIds","testGroup","returnValue","addThisItem","getDisplayedChildren","colsToNotSpread","suppressSizeToFit","colsToSpread","colsToFireEventFor","finishedResizing","availablePixels","scale","pixelsForLastCol","moveToNotSpread","onLastCol","visibleColumns","leftVisibleColumns","rightVisibleColumns","centerVisibleColumns","groupInstanceIdCreator","GroupInstanceIdCreator","displayedGroupCreator","createDisplayedGroups","calculateDisplayedColumns","getGroupAutoColumns","needAutoColumns","newAutoGroupCols","autoGroupColService","createAutoGroupColumns","autoColsDifferent","autoColsEqual","colsA","colsB","bothMissing","atLeastOneListMissing","getGridBalancedTree","ColumnFactory","DisplayedGroupCreator","AutoWidthCalculator","AutoGroupColService","LoggerFactory","PopupEditorWrapper","cellEditor","getGuiCalledOnChild","onKeyDown","isUserSuppressingKeyboardEvent","DOM_KEY_POPUP_EDITOR_WRAPPER","isCancelBeforeStart","isCancelAfterEnd","focusOut","context_2","sortedVisibleColumns","balancedColumnTree","oldDisplayedGroups","previousRealPath","previousOriginalPath","oldColumnsMapped","mapOldGroupsById","currentOriginalPath","getOriginalPathForColumn","currentRealPath","firstColumn","newGroup","createColumnGroup","addChild","noColumnGroups","leafGroup","setupParentsIntoColumns","originalGroup","getInstanceIdForKey","uniqueId","createUniqueId","displayedGroups","recursive","columnsOrGroups","columnOrGroup","columnsOrGroup","found","recursePath","nextNode","defaultGroupComparator","valueA","valueB","nodeA","nodeB","accentedCompare","nodeAIsGroup","nodeBIsGroup","bothAreGroups","bothAreNormal","defaultComparator","headerWrapperComp_1","headerGroupWrapperComp_1","floatingFilterWrapper_1","headerComps","idsOfAllChildren","removeAndDestroyChildComponents","idsToDestroy","childHeaderComp","removeChild","groupHeight","headerRowCount","sizes","numberOfFloating","numberOfNonGroups","numberOfGroups","top","onVirtualColumnsChanged","setWidth","getWidthForRow","printLayout","centerRow","removeAndDestroyAllChildComponents","getItemsAtDept","centerContainer","result_1","eBefore","currentChildIds","itemsAtDepth","headerComp","eHeaderCompGui","idOfChild","eParentContainer","colAlreadyInDom","createHeaderComp","insertWithDomOrder","columnGroupChild","HeaderWrapperComp","HeaderGroupWrapperComp","FloatingFilterWrapper","RowNodeBlock","blockNumber","rowNodeCacheParams","STATE_DIRTY","startRow","blockSize","endRow","isAnyNodeOpen","forEachNodeCallback","getRowUsingLocalIndex","sequence","deep","next","childrenCache","forEachNodeDeep","forEachNodeShallow","getVersion","getLastAccessed","lastAccessed","dontTouchLastAccessed","lastAccessedSequence","localIndex","createRowNodes","getStartRow","getEndRow","getBlockNumber","setDirty","setDirtyAndPurge","setData","setRowNode","setBlankRowNode","newRowNode","createBlankRowNode","setNewData","dataItem","setDataAndId","setRowHeight","load","STATE_LOADING","loadFromDatasource","pageLoadFailed","STATE_FAILED","EVENT_LOAD_COMPLETE","lastRow","populateWithRowData","rowNodesToRefresh","stub","clearRowTop","pageLoaded","STATE_LOADED","cleanNumber","filterService_1","selectableService_1","FilterStage","filterService","selectableService","updateSelectableAfterFiltering","SelectableService","FilterService","DropType","moveColumnController_1","bodyDropPivotTarget_1","dropListeners","moveColumnController","eSecondaryContainers","getDropTargetLeftContainers","getDropTargetRightContainers","getDropTargetBodyContainers","isInterestedIn","DragSourceType","HeaderCell","ToolPanel","getSecondaryContainers","getContainer","MoveColumnController","bodyDropPivotTarget","BodyDropPivotTarget","ColumnMove","Pivot","dragAndDropService","addDropTarget","getIconName","currentDropListener","getDropType","draggingEvent","onDragEnter","dropType","onDragLeave","horizontalResizeService_1","cssClassApplier_1","setLeftFeature_1","beans_1","hoverFeature_1","dragSourceDropTarget","childColumnsDestroyFuncs","getComponentHolder","appendHeaderGroupComp","setupResize","addClasses","setupWidth","addAttributes","setupMovingCss","setupTooltip","addFeature","HoverFeature","setLeftFeature","SetLeftFeature","leafColumns","onColumnMovingChanged","getTooltipText","headerTooltip","tooltipText","setAttribute","tooltipManager","registerTooltip","afterHeaderCompCreated","newHeaderGroupComponent","headerGroupComp","setupMove","isPadding","eHeaderGroup","isSuppressMoving","allLeafColumns","dragSource_1","dragItemName","dragItemCallback","getDragItemForGroup","dragStarted","dragStopped","allColumnsOriginalOrder","visibleState","allColumnsCurrentOrder","childSuppressesMoving","suppressMovable","addListenersToChildrenColumns","EVENT_DISPLAYED_CHILDREN_CHANGED","onDisplayedChildrenChanged","onWidthChanged","destroyListenersOnChildrenColumns","widthChangedListener","eHeaderCellResize","horizontalResizeService","removeFromParent","resizeCols","resizeStartWidth","resizeRatios","takeFromGroup","takeFromLeafCols","resizeTakeFromCols","resizeTakeFromStartWidth","resizeTakeFromRatios","resizeAmountNormalised","normaliseDragChange","removeCssClass","dragChange","StandardMenuFactory","hidePopup","showPopup","eMenu","popupService","positionPopupUnderMouseEvent","ePopup","eventSource","positionPopupUnderComponent","keepWithinBounds","positionCallback","promise","gui","bodyScrollListener","direction","closedCallback","addAsModalPopup","isMenuEnabled","RegisteredComponentSource","textCellEditor_1","dateFilter_1","headerComp_1","headerGroupComp_1","floatingFilter_1","groupCellRenderer_1","animateShowChangeCellRenderer_1","animateSlideCellRenderer_1","loadingCellRenderer_1","selectCellEditor_1","popupTextCellEditor_1","popupSelectCellEditor_1","largeTextCellEditor_1","textFilter_1","numberFilter_1","loadingOverlayComponent_1","noRowsOverlayComponent_1","tooltipComponent_1","UserComponentRegistry","agGridDefaults","agDateInput","DefaultDateComponent","agColumnHeader","HeaderComp","agColumnGroupHeader","agSetColumnFloatingFilter","SetFloatingFilterComp","agTextColumnFloatingFilter","TextFloatingFilterComp","agNumberColumnFloatingFilter","NumberFloatingFilterComp","agDateColumnFloatingFilter","DateFloatingFilterComp","agAnimateShowChangeCellRenderer","AnimateShowChangeCellRenderer","agAnimateSlideCellRenderer","AnimateSlideCellRenderer","agGroupCellRenderer","GroupCellRenderer","agGroupRowRenderer","agLoadingCellRenderer","LoadingCellRenderer","agCellEditor","TextCellEditor","agTextCellEditor","agSelectCellEditor","agPopupTextCellEditor","PopupTextCellEditor","agPopupSelectCellEditor","PopupSelectCellEditor","agLargeTextCellEditor","LargeTextCellEditor","agTextColumnFilter","TextFilter","agNumberColumnFilter","NumberFilter","agDateColumnFilter","DateFilter","agLoadingOverlay","LoadingOverlayComponent","agNoRowsOverlay","NoRowsOverlayComponent","agTooltipComponent","TooltipComponent","agDeprecatedNames","newComponentName","propertyHolder","number","date","animateShowChange","animateSlide","select","largeText","popupSelect","popupText","richSelect","headerComponent","jsComponents","frameworkComponents","registerDefaultComponent","registerComponent","registerFwComponent","rawName","translateIfDeprecated","retrieve","componentFromFramework","REGISTERED","DEFAULT","raw","deprecatedInfo","agCheckbox_1","selectAllFeature_1","enableMenu","suppressMenu","appendHeaderComp","setupMenuClass","setupSortableClass","addColumnHoverListener","SelectAllFeature","cbSelectAll","onColumnHover","columnHoverService","filterPresent","showColumnMenu","progressSort","multiSort","setSortForColumn","newHeaderComponent","eHeaderCellLabel","suppressMove","createDragItem","eResize","weWantAutoSize","EVENT_DOUBLE_TAP","normaliseResizeAmount","resizeWithShiftKey","onColumnWidthChanged","onMenuVisible","AgCheckbox","setupFloatingFilter","setupLeftPositioning","setupColumnHover","eButtonShowMainFilter","showParentFilter","floatingFilterCompPromise","getFloatingFilterInstance","compInstance","setupWithFloatingFilter","setupEmpty","setupSyncWithFilter","syncWithFilter","filterComponentPromise","onParentModelChanged","floatingFilterComp","disposeFunc","isAlive","floatingFilterCompUi","eFloatingFilterBody","suppressFilterButton","eButtonWrapper","wireQuerySelectors","defaultFloatingFilterType","filterToFloatingFilterNames","currentParentModel","onFloatingFilterChanged","floatingFilterComponentParams","newFloatingFilterComponent","filterComponent","getFilterComponentPrototype","getModelAsStringExists","getModelAsString","rawModelFn_1","parentPromise","createUserComponentFromConcreteClass","ReadModelAsStringFloatingFilterComp","createDynamicParams","resolvedComponent","lookupComponentClassDef","wholeParentFilter","getNullableModel","operator","condition1","change","captureModelChangedResolveFunc","modelChanged","changed","parentModel","combinedFilter","mainModel","agSetColumnFilter","componentMetadataProvider_1","AgComponentUtils","adaptFunction","hardcodedJsFunction","paramsFromSelector","componentMetadataProvider","functionAdapter","adaptCellRendererFunction","Adapter","callbackResult","doesImplementIComponent","candidate","ComponentMetadataProvider","__export","m","mouseEventService_1","NavigationService","timeLastPageEventProcessed","handlePageScrollingKey","which","alt","altKey","ctrl","ctrlKey","currentCell","mouseEventService","getGridCellForEvent","getGridCellDef","processed","KEY_PAGE_HOME","KEY_PAGE_END","onHomeOrEndKey","KEY_LEFT","KEY_RIGHT","onCtrlLeftOrRight","onCtrlUpOrDown","KEY_PAGE_DOWN","onPageDown","KEY_PAGE_UP","onPageUp","preventDefault","isTimeSinceLastPageEventToRecent","now","diff","setTimeLastPageEventProcessed","pixelsInOnePage","bottom","isHorizontalScrollShowing","pagingPixelOffset","getPixelOffset","currentPageBottomPixel","currentPageBottomRow","getRowIndexAtPixel","scrollIndex","currentCellPixel","rowTop","nextCellPixel","focusIndex","pageLastRow","getPageLastRow","navigateTo","currentPageTopPixel","currentPageTopRow","currentRowNode","firstRow","getPageFirstRow","scrollType","scrollColumn","focusColumn","flushAllFrames","setRangeToCell","upKey","rowIndexToScrollTo","leftKey","columnToSelect","homeKey","MouseEventService","ResizeObserverService","observeResize","frameworkFactory","useBrowserResizeObserver","resizeObserver","ResizeObserver","observe","disconnect","usePolyfill","widthLastTime","offsetWidth","heightLastTime","offsetHeight","running","periodicallyCheckWidthAndHeight","newHeight","resizeObserverExists","infiniteCache_1","rowNodeCache_1","rowNodeBlockLoader_1","InfiniteRowModel","getRowBounds","ensureRowHeightsValid","startPixel","endPixel","startLimitIndex","endLimitIndex","addEventListeners","destroyCache","destroyDatasource","datasourceChanged","isLastRowFound","infiniteCache","onColumnEverything","resetRequired","cacheParams","isSortModelDifferent","jsonEquals","ds","maxConcurrentRequests","overflowSize","isRowsToRender","getNodesInRangeForSelection","firstInRange","lastInRange","getRowNodesInRange","userGeneratingIds","resetCache","createModelUpdatedEvent","newPage","newData","rowNodeBlockLoader","RowNodeBlockLoader","filterModel","initialRowCount","NumberSequence","InfiniteCache","RowNodeCache","EVENT_CACHE_UPDATED","onCacheUpdated","getCurrentPageHeight","pixel","rowIndexForPixel","floor","isRowPresent","AutoGroupColService_1","doingTreeData","doingMultiAutoColumn","rowGroupCol","createOneAutoGroupColumn","defaultAutoColDef","generateDefaultColDef","GROUP_AUTO_COLUMN_ID","GROUP_AUTO_COLUMN_BUNDLE_ID","userAutoColDef","mergeColDefs","noFieldOrValueGetter","filterValueGetter","headerCheckboxSelection","userHasProvidedGroupCellRenderer","cellRenderer","cellRendererFramework","rowGroupColDef","cellRendererParams","innerRenderer","innerRendererParams","preventMouseClick","destroyFuncs","touching","startListener","onTouchStart","moveListener","onTouchMove","endListener","onTouchEnd","passive","getActiveTouch","touchList","matches","identifier","touchStart","touchEvent","touches","moved","touchStartCopy","touchesMatch","EVENT_LONG_TAP","touch","eventIsFarAway","areEventsNear","checkForDoubleTap","lastTapTime","interval","DOUBLE_TAP_MILLIS","createRowTasks","destroyRowTasks","ticking","scrollGoingDown","lastScrollTop","setScrollTop","scrollTop","useAnimationFrame","verifyAnimationFrameOn","addP1Task","task","taskItem","schedule","addP2Task","executeFrame","millis","a","frameStart","duration","noMaxMillis","pop","requestFrame","stopTicking","requestAnimationFrame","webkitRequestAnimationFrame","updateSelectableAfterGrouping","nextChildrenFunc","recurseDown","childrenAfterFilter","rowSelectable","hasChildren","firstSelectable","setRowSelectable","GridRow","makeNull","isFloatingTop","PINNED_TOP","isFloatingBottom","PINNED_BOTTOM","isNotFloating","equals","otherSelection","getGridCell","otherFloating","content","URL","createObjectURL","display","body","click","revokeObjectURL","baseFilter_1","modelFromFloatingFilter","dateFrom","dateTo","getDateTo","selectedFilter","filterType","getApplicableFilterTypes","BaseFilter","EQUALS","GREATER_THAN","LESS_THAN","NOT_EQUAL","IN_RANGE","bodyTemplate","fromPanelId","FilterConditionType","MAIN","toPanelId","initialiseFilterBodyUi","createComponents","setDateFrom_date","setDateTo_date","setFilterType","dateFromCondition","CONDITION","dateToCondition","selectedFilterCondition","dateComponentParams","onDateChanged","filterParams","newDateComponent","dateToComponent","dateToConditionComponent","dateToElement","eDateToPanel","eDateToConditionPanel","dateComponent","dateFromComponent","dateFromConditionComponent","dateFromElement","eDateFromPanel","eDateFromConditionPanel","removeTimezone","getDate","refreshFilterBodyUi","panel","filterInput","showFilterInput","doesFilterHaveHiddenInput","EMPTY","filterDate","cellValue","cellAsDate","serializeDateToYyyyMmDd","filterValues","getDateFrom","getFilterType","setDateFrom","parsedDate","parseYyyyMmDdToDate","setDate","setDateTo","resetConditionFilterOnly","setType","getFullYear","getMonth","QuerySelector","ScalarBaseFilter","eDateInput","isBrowserChrome","browserDatePicker","isBrowserIE","gridRow_1","CellNavigationService","getNextCellToFocus","lastCellToFocus","getCellAbove","getCellBelow","getCellToLeft","getCellToRight","isCellGoodToFocusOn","lastCell","colToLeft","colToRight","getRowBelow","isLastRowInContainer","rowBelow","getGridRow","gridRow","lastTopIndex","lastBottomIndex","lastBodyIndex","getRowAbove","getLastFloatingTopRow","getLastBodyCell","rowAbove","lastBodyRow","lastFloatingRow","getNextTabbedCell","backwards","getNextTabbedCellBackwards","getNextTabbedCellForwards","newRowIndex","newFloating","newColumn","displayedChildren","localEventService","allMoving","lastChild","lastChildLeft","firstChildLeft","createAgEvent","isChildInThisGroupDeepSearch","wantedChild","foundChild","groupActualWidth","groupChild","addLeafColumns","addDisplayedLeafColumns","topLevelGroup","abstractColumn","headerGroupShow","HEADER_GROUP_SHOW_OPEN","HEADER_GROUP_SHOW_CLOSED","selector","querySelectorFunc","ref","addToObjectProps","Listener","listenerFunc","Method","methodFunc","alias","instanceName","__agComponentMetaData","agComponentUtils_1","componentMetaData","mandatoryMethodList","optionalMethodList","detailCellRenderer","headerGroupComponent","loadingCellRenderer","loadingOverlayComponent","noRowsOverlayComponent","floatingFilterComponent","floatingFilterWrapperComponent","agComponentUtils","fullWidthCellRenderer","groupRowInnerRenderer","groupRowRenderer","statusPanel","toolPanel","tooltipComponent","grid_1","initialiseAgGridWithAngular1","angular","angularModule","module","directive","restrict","AngularDirectiveController","$element","$attrs","quickFilterOnScope","keyOfGridInScope","agGrid","$eval","grid","Grid","$on","activePopupElements","getRootGui","positionPopupForMenu","parentRect","sourceRect","getBoundingClientRect","eDocument","documentElement","y","keepYWithinBounds","clientWidth","x","widthOfParent","right","maxX","xRightPosition","xLeftPosition","calculatePointerAlign","nudgeX","nudgeY","positionPopup","callPostProcessPopup","documentRect","clientY","minHeight","positionPopupOverComponent","keepXWithinBounds","docElement","isBody","defaultPadding","clientHeight","getAbsoluteHeight","heightOfParent","abs","maxY","getAbsoluteWidth","scrollLeft","eChild","closeOnEsc","addPopup","modal","popupAlreadyShown","contains","eWrapper","popupHidden","hidePopupOnKeyboardEvent","KEY_ESCAPE","hidePopupOnMouseEvent","hidePopupOnTouchEvent","isEventFromCurrentPopup","isEventSameChainAsOriginalEvent","indexOfThisChild","isElementInEventPath","el","classList","parentElement","originalClick","mouseEventOrTouch","screenX_1","screenX","screenY_1","screenY","xMatch","yMatch","DEFAULT_TRANSLATIONS","loadingOoo","empty","notEqual","lessThan","greaterThan","inRange","lessThanOrEqual","greaterThanOrEqual","filterOoo","notContains","startsWith","endsWith","searchOoo","applyFilter","clearFilter","andCondition","orCondition","customFilterOptions","defaultOption","filterOptions","filterOption","displayKey","test","firstFilterOption","customInit","clearActive","clearButton","applyActive","applyButton","newRowsActionKeep","newRowsAction","setTemplate","generateTemplate","eApplyButton","eClearButton","onClearButton","anyButtonVisible","eButtonsPanel","isFilterConditionActive","condition2","conditionValue","asCombinedFilter","redrawCondition","doOnFilterChanged","applyNow","requiresApplyAndIsApplying","notRequiresApply","shouldFilter","filterCondition","eFilterBodyWrapper","acceptsBooleanLogic","eConditionWrapper","createConditionTemplate","refreshOperatorUi","andButton","orButton","checked","casted","generateFilterHeader","translate","mainConditionBody","createConditionBody","bodyWithBooleanLogic","wrapCondition","mainCondition","toTranslate","defaultTranslation","getDebounceMs","debounceMs","customFilterOption","hideFilterInput","LESS_THAN_OR_EQUAL","GREATER_THAN_OR_EQUAL","CONTAINS","NOT_CONTAINS","STARTS_WITH","ENDS_WITH","ComparableBaseFilter","mainFilterResult","individualFilterPasses","eTypeConditionSelector","auxFilterResult","suppressAndOrCondition","getDefaultType","defaultFilterTypes","restrictedFilterTypes","actualFilterTypes","optionsHtml","filterName","localeFilterName","eTypeSelector","onFilterTypeChanged","prevSelectedFilter","prevSelectedFilterHadNoInput","rawFilterValues","filterValueArray","HTMLSelectElement","nullComparator","filterValue","gridValue","nullValue","translateNull","actualComparator","reducedType","DEFAULT_NULL_COMPARATOR","doIndividualFilterPasses","compareResult","compareToResult","inRangeInclusive","RowContainerComponent","childCount","rowTemplatesToAdd","afterGuiAttachedCallbacks","lastMadeVisibleTime","hideWhenNoChildren","setVerticalScrollPosition","verticalScrollPosition","checkDomOrder","checkVisibility","domOrder","getRowElement","compId","setHeight","flushRowTemplates","htmlToAdd","appendHtml","lastPlacedElement","appendRowTemplate","rowTemplate","insertTemplateWithDomOrder","eRow","removeRowElement","isMadeVisibleRecently","millisSinceVisible","rowNodeBlock_1","activeBlockLoadsCount","blocks","checkBlockToLoadDebounce","performCheckBlocksToLoad","addBlock","block","removeBlock","loadComplete","checkBlockToLoad","printCacheStatus","blockToLoad","nodeIdPrefix","getNodeIdPrefix","pageStatus","isLogging","stringify","PaginationComp","getTemplate","isPaging","paginationPanelEnabled","onPaginationChanged","btFirst","onBtFirst","btLast","onBtLast","btNext","onBtNext","btPrevious","onBtPrevious","enableOrDisableButtons","updateRowLabels","setCurrentPageLabel","setTotalLabels","pagesExist","currentPage","toDisplay","lbCurrent","formatNumber","formatNumberCommas","strPage","strTo","strOf","strFirst","strPrevious","strNext","strLast","totalPages","disablePreviousAndFirst","disabled","zeroPagesToDisplay","isZeroPagesToDisplay","onLastPage","disableNext","disableLast","pageSize","lbFirstRowOnPage","lbLastRowOnPage","lastPageFound","lbTotal","lbRecordCount","moreText","HTMLButtonElement","DEFAULT_HIDE_TOOLTIP_TIMEOUT","MOUSEOUT_HIDE_TOOLTIP_TIMEOUT","MOUSEOVER_SHOW_TOOLTIP_TIMEOUT","HIDE_SHOW_ONLY","showTimeoutId","hideTimeoutId","registeredComponents","targetCmp","getCompId","processMouseOver","processMouseMove","hideTooltip","processMouseOut","tooltipComp","destroyFunc","unregisterTooltip","activeComponent","lastHoveredComponent","clearTimers","lastMouseEvent","showTooltip","relatedTarget","registeredComponent","containsElement","cell","createTooltipComponent","cmp","newTooltipComponent","closeFnc","clearRegisteredComponent","showOnly","logging","Logger","isLoggingFunc","message","formatter","refData","RowDragComp","visibleMode","checkCompatibility","ManagedVisibilityStrategy","NonManagedVisibilityStrategy","managed","dragItem","RowDrag","getVisibleMode","setVisibleMode","onSuppressRowDrag","workOutVisibility","EVENT_CELL_CHANGED","isRowDragFunc","isFunction","onRowGroupChanged","updateSortActive","updateFilterActive","updateRowGroupActive","rowGroups","sortOrFilterOrGroupActive","alwaysHide","initialised","cellExpressions","forFilter","ignoreAggData","groupDataExists","groupData","aggDataExists","aggData","executeFilterValueGetter","executeValueGetter","getValueUsingField","cellValueGetter","setValue","newValueHandler","valueSetter","valueWasDifferent","oldValue","setValueUsingField","resetQuickFilterAggregateText","onCellValueChanged","valuesAreSame","fieldPieces","currentObject","fieldPiece","shift","getValueCallback","valueFromCache","otherColumn","getKeyForNode","keyCreator","String","cellAndHeaderEscaper","nameForCol","valueForCell","isRowGrouping","createValueForGroupNode","processCell","reverse","gridSerializingSession","dontSkipRows","skipGroups","skipHeader","columnGroups","skipFooters","skipPinnedTop","skipPinnedBottom","includeCustomHeader","includeCustomFooter","onlySelected","onlySelectedAllPages","rowSkipper","shouldRowBeSkipped","skipSingleChildrenGroup","skipLowestSingleChildrenGroup","rowModelNormal","onlySelectedNonStandardModel","existsAndNotEmpty","recursivelyAddHeaderGroups","gridRowIterator_1","forEachPinnedTopRow","processRow","forEachPivotNode","selectedNodes","shouldSkipLowestGroup","shouldSkipCurrentGroup","allChildrenCount","footer","nodeIsRootNode","level","rowAccumulator","forEachPinnedBottomRow","directChildrenHeaderGroups","doAddHeaderHeader","gridRowIterator","columnIndex","columnName","RowType","destroyFunctions","EVENT_DESTROYED","dispatchEventAsync","addSafePassiveEventListener","Window","InputTextFloatingFilterComp","lastKnownModel","toDebounce","syncUpWithParentFilter","eColumnFloatingFilter","columnDef","parseAsText","title","equalModels","incomingTextValue","asFloatingFilterText","asParentModel","modelUpdated","isKeyPressed","KEY_ENTER","referenceCompare","filterTo","HTMLInputElement","dateComponentPromise","isInRange","setTemplateFromElement","filterValueDate","filterValueText","enrichDateInput","toParse","asNumber","numberTo","filterValueNumber","modelFilterValue","invalidNumber","arrayToDisplay","InfiniteBlock","pageNumber","uiLevel","setIndexAndTopOnRowNode","displayIndex","setRowIndex","successCallback","failCallback","getRows","getRowsParams","getFunctionParameters","crcTable","ZipContainer","folders","files","addFolder","path","created","addFolders","paths","addFile","clearStream","getContent","mimeType","textOutput","buildFileStream","uInt8Output","buildUint8Array","fData","totalFiles","len","foData","lL","cL","_i","totalFiles_1","currentFile","getHeader","fileHeader","folderHeader","foEnd","buildFolderEnd","offset","utf8_encode","decToHex","utfPath","isUTF8","time","convertTime","dt","convertDate","extraFields","uExtraFieldPath","getFromCrc32Table","tLen","cLen","lLen","uint8","Uint8Array","charCodeAt","crc","getHours","getMinutes","getSeconds","PaginationAutoPageSizeService","onBodyHeightChanged","checkPageSize","notActive","bodyHeight","getBodyHeight","newPageSize","topRowIndex","bottomRowIndex","pixelOffset","onModelUpdated","setIndexesAndBounds","modelUpdatedEvent","paginationChangedEvent","topRowBounds","bottomRowBounds","nodeIsInPage","totalLastRow","goToPageWithIndex","lastPage","setPageSize","totalRowCount","maxRowAllowed","getEventCallbacks","EVENT_CALLBACKS","EVENT_CALLBACKS_NO_PREFIX","EVENTS","skipEventDeprecationCheck","pGridOptions","toBoolean","toNumber","funcName","onMethodName","substr","rowComp_1","cellComp_1","cellNavigationService_1","rowCompsByIndex","floatingTopRowComps","floatingBottomRowComps","refreshInProgress","rowContainers","getRowContainers","onPageLoaded","onPinnedRowDataChanged","redrawAfterScroll","onDomLayoutChanged","destroyRows","firstRenderedRow","lastRenderedRow","rowIndexesToRemove","removeRowComps","refreshEvent","getAllCellsForColumn","eCells","rowComp","eCell","getCellForCol","refreshFloatingRowComps","refreshFloatingRows","floatingTopPinnedLeft","floatingTopPinnedRight","floatingTop","floatingTopFullWidth","floatingBottomPinnedLeft","floatingBottomPinnedRight","floatingBottom","floatingBottomFullWith","rowComps","pinnedLeftContainerComp","pinnedRightContainerComp","bodyContainerComp","fullWidthContainerComp","row","RowComp","flushContainers","recycleRows","onlyBody","getRenderedIndexesForRowNodes","renderedRow","indexesToRemove","getCellToRestoreFocusToAfterRefresh","focusedCell","suppressKeepFocus","getFocusCellToUseAfterRefresh","activeElement","CellComp","DOM_DATA_KEY_CELL_COMP","elementIsNotACellDev","getLockOnRefresh","sizeContainerToPageHeight","scrollToTopIfNewData","rowsToRecycle","binRowComps","redraw","restoreFocusedCell","releaseLockOnRefresh","scrollToTop","suppressScrollToTop","containers","fullWidth","pinnedLeft","pinnedRight","container","containerHeight","maxDivHeightScaler","setModelHeight","realHeight","getUiContainerHeight","forEachRowComp","forEachCellComp","forEachCellCompFiltered","cellComp","flashCell","refreshCellParams","forceRefresh","force","refreshCell","getCellRenderer","getCellEditor","isEditing","rowIdsMap","colIdsMap","normal","excludeColFromRefresh","rowsToRemove","indexToRemove","removeRowCompsNotToDraw","indexesToDraw","indexesToDrawMap","existingIndexes","indexesNotToDraw","calculateIndexesToDraw","createArrayOfNumbers","indexStr","keepRowBecauseEditingOrFocused","afterScroll","updateOffset","workOutFirstAndLastRowsToRender","nextVmTurnFunctions","createOrUpdateRowComp","pushAll","getAndClearNextVMTurnFunctions","executeNextVMTurn","taskQueue","destroyRowComps","checkAngularCompile","rowContainerComp","afterFlush","redrawFullWidthEmbeddedRows","isFullWidth","alreadyRendered","creatingNewRowComp","createRowComp","rowCompsMap","delayedFuncs","nodeId","getAndClearDelayedDestroyFunctions","executeInAWhile","newFirst","newLast","paginationOffset","getOffset","bodyVRange","bodyTopPixel","bodyBottomPixel","bufferPixels","firstPixel","lastPixel","ensureAllRowsInRangeHaveHeightsCalculated","firstRowIndex","lastRowIndex","pageFirstRow","rowLayoutNormal","suppressRowCountRestriction","firstDiffers","lastDiffers","dispatchEventOnce","topPixel","bottomPixel","rowHeightsChanged","REMOVE_ROW","KEEP_ROW","rowHasFocus","isRowNodeFocused","rowIsEditing","mightWantToKeepRow","rowNodePresent","useAnimationFrameForCreate","renderedRows","allowUserOverride","nextCell","getComponentForCell","colSpanningList","getColSpanningList","cellNavigationService","skipGroupRows","previousCellDef","nextCellDef","ensureCellVisible","horizontallyScrollHeaderCenterAndFloatingCenter","startRowOrCellEdit","rowComponent","cellComponent","getRenderedCellForColumn","onTabKeyDown","previousRenderedCell","keyboardEvent","moveToCellAfter","renderedCell","editing","moveToNextEditingRow","moveToNextEditingCell","moveToNextCellNotEditing","nextRenderedCell","findNextCellToFocusOn","foundCell","startEditingIfEnabled","focusCell","moveEditToNextCellOrRow","pGridCell","nGridCell","rowsMatch","setFocusOutOnEditor","setFocusInOnEditor","pRow","getRenderedRow","nRow","startRowEditing","startEditing","lookupRowNodeForCell","cellIsEditable","cellIsNotFloating","nextCellComp","compIdSequence","template","childComponents","annotatedEventListeners","createChildComponentsFromTags","parentNode","childNodeList","copyNodeList","childNodes","childComp","copyAttributesFromNode","swapComponentForNode","dest","iterateNamedNodeMap","eComponent","replaceChild","insertBefore","createComment","swapInComponentForQuerySelectors","thisProto","thisNoType","currentProtoName","querySelectors","__agComponent","addAnnotatedEventListeners","contextIsAvailable","createChildComponentsPreConstruct","uiExists","thisNoType_1","resultOfQuery","backingComponent","removeAnnotatedEventListeners","listenerMethods","getAgComponentMetaData","eventListener","setGui","queryForHtmlElement","cssSelector","queryForHtmlInputElement","newChild","isNodeOrElement","childComponent","feature","visibilityMode","isDisplay","addOrRemove","getAttribute","originalBalancedTree","tree","ClientSideNodeManager","nextId","allNodesMap","ROOT_NODE_ID","allLeafChildren","childrenAfterSort","isRowMasterFunc","doingLegacyTreeData","getCopyOfNodesMap","childrenMapped","recursiveFunction","TOP_LEVEL","setLeafChildren","rowDataTran","rowNodeOrder","isLegacyTreeData","rowNodeTransaction","useIndex","addRowNode","anyNodesSelected_1","lookupRowNode","updatedRowNode","updateGroupsFromChildrenSelections","sortRowNodesByOrder","newNode","createNode","rowNodeIdFunc","updateData","setSelected","nodeChildDetails","canFlower","master","numRowGroupColumns","masterRowLevel","expandByDefault","childAfterGroup","leafChild","context_3","context_4","changedPath_1","onRowSelected","setLastSelectedNode","lastSelectedNode","getLastSelectedNode","selectedRows","removeGroupsFromSelection","getRootNode","calculateSelectedFromChildren","getNodeForIdIfSelected","clearOtherNodes","rowNodeToKeepSelected","groupsToRefresh","otherRowNode","suppressFinishActions","syncInRowNode","oldNode","syncInOldRowNode","syncInNewRowNode","oldNodeHasDifferentId","oldNodeSelected","setSelectedInitialValue","topLevelNodes","getTopLevelNodes","traverse","nodes","setRowModel","justFiltered","selectThisNode","rowModelClientSide","VerticalStack","isLayoutPanel","childPanels","addPanel","needToMoveLeft","needToMoveRight","ICON_PINNED","ICON_MOVE","dragCameFromToolPanel","visibleState_1","hideColumnOnExit","fromNudge","ensureIntervalCleared","allowedCols","normaliseX","flipHorizontallyForRtl","adjustForScroll","getCenterViewportScrollLeft","checkCenterForScrolling","xAdjustedForScroll","firstVisiblePixel","lastVisiblePixel","getCenterWidth","ensureIntervalStarted","fromEnter","lastDraggingEvent","hDirection","xNormalised","hDirectionNormalised","normaliseDirection","dragSourceType","attemptMoveColumns","HDirection","Left","Right","calculateOldIndex","movingCols","gridCols","sortNumberArray","firstIndex","gapsExist","allMovingColumns","xAdjusted","draggingLeft","draggingRight","validMoves","calculateValidMoves","newIndex","constrainDirection","gridColIndex","allDisplayedCols","allGridCols","colIsMovingFunc","colIsNotMovingFunc","movingDisplayedCols","otherDisplayedCols","otherGridCols","availableWidth","widthOfMovingDisplayedCols_1","leftColumn","nextCol","isColumnHidden","movingIntervalId","intervalCount","failedMoveAttempts","setInterval","moveInterval","setGhostIcon","ICON_LEFT","ICON_RIGHT","clearInterval","pixelsToMove","pixelsMoved","scrollHorizontally","columnsThatCanPin","pinType","nudge","filterNodes","includeChildNodes","passBecauseChildren","passBecauseDataPasses","setAllChildrenCount","doingTreeDataFiltering","treeDataDepthFirstFilter_1","alreadyFoundInParent","foundInParent","treeDataFilterCallback","defaultFilterCallback","setAllChildrenCountTreeData","setAllChildrenCountGridGrouping","eInput","startValue","keyPressBackspaceOrDelete","KEY_BACKSPACE","KEY_DELETE","getStartValue","KEY_F2","highlightAllOnFocus","pageUp","pageDown","length_1","setSelectionRange","parseValue","useFormatter","scrollY","uiBodyHeight","scrollBarWidth","maxDivHeight","getMaxDivHeight","isScaling","scaling","newScrollY","newBodyHeight","getUiBodyHeight","calculateOffset","uiContainerHeight","pixelsToShave","modelHeight","maxScrollY","scrollPercent","setOffset","clearOffset","newOffset","newOffsetFloor","getRealPixelPosition","modelPixel","pos","getScrollPositionForPixel","modelMaxScroll","scrollPixel","globalObj","global","Node","columnKeyCreator_1","userComponentRegistry_1","agGridNg1_1","agGridWebComponent_1","initialiseAgGridWithWebComponents","VDirection","gridPanel_1","GridPanel","headerContainer_1","headerRootComp_1","HeaderRootComp","standardMenu_1","tabbedLayout_1","TabbedLayout","verticalStack_1","simpleHttpRequest_1","popupEditorWrapper_1","checkboxSelectionComponent_1","filterStage_1","flattenStage_1","FlattenStage","sortStage_1","clientSideRowModel_1","ClientSideRowModel","clientSideNodeManager_1","infiniteRowModel_1","popupWindow_1","PopupWindow","popupMessageBox_1","PopupMessageBox","xmlFactory_1","gridSerializer_2","zipContainer_1","baseFrameworkFactory_1","BaseFrameworkFactory","functions_1","gridCore_1","GridCore","Utils","logger_2","frameworkComponentWrapper_1","BaseComponentWrapper","LAYOUT_INTERVAL","EXPORT_TYPE_DRAG_COPY","EXPORT_TYPE_CLIPBOARD","EXPORT_TYPE_EXCEL","KEY_TAB","KEY_NEW_LINE","KEY_SHIFT","KEY_SPACE","KEY_A","KEY_C","KEY_V","KEY_D","ALWAYS","ONLY_WHEN_GROUPING","resizeObserverService_1","TEMPLATE_ENTERPRISE","TEMPLATE_NORMAL","service","quickFilterUnregisterFn","$watch","addRtlSupport","eRootWrapperBody","gridPanelEl","unsubscribeFromResize","resizeObserverService","onGridSizeChanged","cssClass","sideBarComp","close","openedItem","doingVirtualPaging","comparatorIsAFunction","indexToSelect","textCustomComparator","DEFAULT_COMPARATOR","textFormatter","caseSensitive","DEFAULT_FORMATTER","DEFAULT_LOWERCASE_FORMATTER","fieldId","addFilterChangedListener","setFilter","filterConditionText","eFilterTextField","eFilterConditionTextField","onFilterTextFieldChanged","filterText","formattedCellValue","checkIndividualFilter","filterTextFormatted","current","trim","newLowerCase","previousLowerCase","getFilter","lastIndexOf","DEFAULT_NO_ROWS_TEMPLATE","localisedTemplate","getHeaderCellForColumn","eDummyContainer","eBodyContainer","getCenterContainer","putRowCellsIntoDummyContainer","cloneItemIntoDummy","dummyContainerWidth","headerWrapperComp","eCellClone","cloneNode","eCloneParent","defaultColumnTypes_1","defs","existingColumns","columnKeyCreator","existingColsCopy","unbalancedTree","recursivelyCreateColumns","findMaxDept","balanceColumnTree","deptFirstCallback","setupExpandable","autoGroupCols","fakeTreeItem","createAutoGroupTreeItem","findDepth","nextChild","autoGroup","setChildren","currentDept","columnDept","newChildren","firstPaddedGroup","currentPaddedGroup","newColId","colGroupDefMerged","createMergedColGroupDef","paddedGroup","hasGroups","some","treeChildren","maxDeptThisLevel","newDept","newGroupOrColumn","isColumnGroup","createColumn","checkForDeprecatedItems","colDefMerged","findExistingColumn","oldColDef","oldColHadId","assignColumnTypes","typeKeys","invalidArray","allColumnTypes","t","typeColDef","colDefNoType","headerGroup","suppressRowGroup","suppressAggregation","setTitle","messageBodyComp","MessageBody","setMessage","setBody","closePopup","eCenter","innerText","eOk","onBtOk","ComponentSource","createAndInitUserComponent","newFullWidthGroupRowInnerCellRenderer","newFullWidthCellRenderer","cellRendererType","cellRendererName","newCellRenderer","newPinnedRowCellRenderer","newCellEditor","newInnerCellRenderer","defaultFloatingFilter","newToolPanelComponent","toolPanelDef","newStatusPanelComponent","definitionObject","paramsFromGrid","defaultComponentName","componentAndParams","createComponentInstance","createFinalParams","addReactHacks","paramsAfterCallback","deferredInit","initComponent","asPromise","notRelevant","agGridReact","clazz","agGridParams","internalComponent","componentSelectorFunc","hardcodedNameComponent","HardcodedJsComponent","HardcodedFwComponent","componentPropertyValue","usingDefaultComponent","HARDCODED","componentNameToUse","selectorResult","registeredCompClassDef","lookupFromRegisteredComponents","componentNameOpt","userComponentRegistry","REGISTERED_BY_NAME","holder","paramsForSelector","componentToUse","FrameworkComponentRaw","thisComponentConfig","wrap","finalParams","padding","expandable","setExpandable","onColumnVisibilityChanged","atLeastOneShowingWhenOpen","atLeastOneShowingWhenClosed","atLeastOneChangeable","findChildren","firstChild","blockCount","virtualRowCount","forEachBlockInOrder","destroyBlock","hack_setVirtualRowCount","checkVirtualRowCount","purgeBlocksIfNeeded","blockToExclude","blocksForPurging","maxBlocksProvided","blocksToKeep","emptyBlocksToKeep","MAX_EMPTY_BLOCKS_TO_KEEP","purgeBecauseBlockEmpty","purgeBecauseCacheFull","removeBlockFromCache","postCreateBlock","newBlock","setBlock","blockToRemove","lastRowIndexPlusOverflow","dynamicRowHeight","ids","getBlockIdsSorted","forEachBlockId","forEachBlockInReverseOrder","numberComparator","blockIds","idStr","parseInt","getBlock","blockId","lastBlockId","inActiveRange","numberSequence","foundGapInSelection","hitFirstOrLast","invalidRange","eLoadingIcon","eLoadingText","preConstruct","loadIcons","updateIcons","setLabel","label","eLabel","eChecked","eUnchecked","eIndeterminate","onClick","addAgGridEventPath","toggle","getNextValue","setPassive","setReadOnly","isReadOnly","nextValue","EVENT_CHANGED","eClose","onBtClose","eBody","eContentWrapper","eTitle","DESTROY_EVENT","FUNCTION_STRIP_COMMENTS","FUNCTION_ARGUMENT_NAMES","AG_GRID_STOP_PROPAGATION","Timer","timestamp","print","msg","info","HTML_ESCAPES","reUnescapedHtml","doIeFocusHack","isBrowserEdge","doOnceFlags","isLeftClick","buttons","button","e1","e2","pixelCount","diffX","diffY","val1","val2","val1Json","val2Json","shallowCompare","arr1","getNameOfClass","TheClass","funcNameRegex","funcAsString","results","exec","object","fields","styles","getComputedStyle","margin","parseFloat","marginTop","marginBottom","ceil","marginLeft","marginRight","getScrollLeft","rtl","setScrollLeft","isBrowserSafari","isBrowserFirefox","attr","copy","deepCloneObject","array","mappedItem","getAllKeysInObjects","objects","allValues","sources","yyyyMmDd","separator","pad","num","totalStringSize","asString","first","last","fnStr","match","collection","objToArray","collectionAsArray","firstMatchingItem","toStrings","isNode","nodeType","isElement","nodeList","isEventFromPrintableCharacter","pressedChar","fromCharCode","charCode","printableCharacter","numpadDelWithNumlockOnForEdgeOrIe","isNumpadDelWithNumlockOnForEdgeOrIe","PRINTABLE_CHARACTERS","gridOptionsFunc","colDefFunc","colDefFuncResult","getCellCompForEvent","sourceElement","getTarget","addChangeListener","valueNoType","missingOrEmptyObject","allowEmptyString","firstExistingValue","anyExists","removeElement","offsetParent","tempDiv","htmlTemplate","insertAdjacentHTML","callIfPresent","cssClasses","containsClass","onlyClass","startsWithClass","endsWithClass","getElementAttribute","numberArray","removeRepeatsFromArray","thisOneMatches","nextOneMatches","toRemove","insertArrayIntoArray","src","objectsToMove","valueAMissing","valueBMissing","doQuickCompare","localeCompare","array1","array2","eChildBefore","nextSibling","insertAdjacentElement","formatSize","formatNumberTwoDecimalPlacesAndCommas","prependDC","documentFragment","createIcon","iconContents","eResult","userProvidedIcon","rendererResult","iconNameClassMap","addStylesToElement","keyCamelCase","hyphenToCamelCase","scrollHeight","testUpTo","userAgent","div","outer","visibility","msOverflowStyle","widthNoScroll","overflow","inner","widthWithScroll","hasOverflowScrolling","prefixes","getElementsByTagName","computedStyle","overflowScrolling","prefixes_1","keyToCheck","pressedKey","setHidden","hidden","setFixedHeight","maxHeight","isIE","documentMode","isEdge","StyleMedia","isSafari","anyWindow","safari","pushNotification","isChrome","win","chrome","webstore","runtime","vendor","isFirefox","InstallTrigger","isUserAgentIPad","isIPad","eventNoType","srcElement","isElementChildOfClass","cls","maxNest","counter","getEventPath","val","createEventPath","__agGridEventPath","deepPath","composedPath","forEachSnapshotFirst","list","arrayCopy","getBodyWidth","innerHeight","innerWidth","setCheckboxState","eCheckbox","indeterminate","traverseNodesWithKey","keyParts","recursiveSearchNodes","currentNodes","camelCaseToHyphen","str","g","cssStyleObjectToMarkup","stylesToUse","resParts","styleKey","styleValue","styleKeyDashed","isFinite","escape","toEscape","chr","normalizeWheel","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","wait","immediate","callNow","funcs","executeAfter","expression","thisKey","passiveEvents","capture","rex","words","word","eMessage","eBox","rowNodeA","rowNodeB","positionA","positionB","aHasIndex","bHasIndex","bothNodesAreUserNodes","bothNodesAreFillerNodes","__objectId","atLeastOneOutOfOrder","inputValues","validValues","allSuggestions","fuzzyMatches","invalidInputs","inputValue","validValue","invalidInput","thisSuggestions","suggestedValueLeft","suggestedValueRight","leftDifference","string_similarity","rightDifference","get_bigrams","s","NUMPAD_DEL_NUMLOCK_ON_KEY","NUMPAD_DEL_NUMLOCK_ON_CHARCODE","bindCellRendererToHtmlElement","cellRendererPromise","eTarget","compose","fns","arg","composed","f","bytes","hex","utftext","n","columnGroupClosed","columnSelectClosed","columnSelectOpen","columnMovePin","columnMoveAdd","columnMoveHide","columnMoveMove","columnMoveLeft","columnMoveRight","columnMoveGroup","columnMoveValue","columnMovePivot","dropNotAllowed","groupContracted","groupExpanded","checkboxChecked","checkboxUnchecked","checkboxIndeterminate","checkboxCheckedReadOnly","checkboxUncheckedReadOnly","checkboxIndeterminateReadOnly","groupLoading","menu","menuPin","menuValue","menuAddRowGroup","menuRemoveRowGroup","clipboardCopy","clipboardCut","clipboardPaste","pivotPanel","rowGroupPanel","valuePanel","columnDrag","sortAscending","sortDescending","sortUnSort","str1","str2","pairs1","pairs2","union","hit_count","len1","PromiseStatus","initValue","valToReturn","peek","skip","IN_PROGRESS","resolution","listOfWaiters","onDone","onReject","toCombine","combinedValues","remainingToResolve","sourceResolved","firstOneOnly","adapter","unmapped","ifNotResolvedValue","ifResolved","RESOLVED","waiter","setScrollsVisible","atLeastOneDifferent","horizontalScrollShowing","verticalScrollShowing","ChangeDetectionService","doChangeDetection","isRowPinned","onlyChangedColumns","doAggregate","OBJECT_ID_SEQUENCE","oldData","updateDataOnDetailNode","checkRowSelectable","createDataChangedEvent","dispatchLocalEvent","detailNode","createLocalRowEvent","getRowIndexString","createDaemonNode","daemon","setId","shouldInvokeIsRowSelectable","newVal","isPixelInRange","oldRowTop","setRowTop","setFirstChild","EVENT_FIRST_CHILD_CHANGED","setLastChild","EVENT_LAST_CHILD_CHANGED","setChildIndex","childIndex","EVENT_CHILD_INDEX_CHANGED","EVENT_TOP_CHANGED","setDragging","dragging","EVENT_DRAGGING_CHANGED","EVENT_ALL_CHILDREN_COUNT_CHANGED","rowHeightEstimated","EVENT_HEIGHT_CHANGED","EVENT_ROW_INDEX_CHANGED","setUiLevel","EVENT_UI_LEVEL_CHANGED","createGlobalRowEvent","mainEventService","setDataValue","dispatchCellChangedEvent","setGroupValue","setAggData","newAggData","isEmptyFillerNode","cellChangedEvent","sibling","depthFirstSearch","newSelectedValue","atLeastOneSelected","atLeastOneDeSelected","atLeastOneMixed","childState","newRowClicked","allowMultiSelect","doRowRangeSelection","skipThisNode","thisNodeWasSelected","selectChildNodes","groupsSelectChildren","nodesToSelect","nodeWasSelected","isParentOfNode","potentialParent","onMouseEnter","EVENT_MOUSE_ENTER","onMouseLeave","EVENT_MOUSE_LEAVE","getFirstChildOfFirstChild","rowGroupColumn","nodeToSwapIn","isCandidate","foundFirstChildPath","parentRowNode","ENDPOINTS","GET_PRODUCTS","GET_PAYMETHODS","CREATE_SETTINGGROUP","UPDATE_SETTINGGROUP","REMOVE_SETTINGGROUP","ACTIVE_SETTINGGROUP","GET_STATS","getMyProducts","payload","Http","getPaymethods","createSettingGroup","post","updateSettingGroup","removeSettingGroup","activeSettingGroup","getStats","RowDragFeature","onEnterOrDragging","normaliseForScroll","managedDrag","doManagedDrag","rowWasMoved","ensureRowAtPixel","gridPanelHasScrolls","pixelRange","needToMoveUp","needToMoveDown","scrollVertically","vDirectionString","yNormalised","overIndex","overNode","mouseIsPastLastRow","vDirection","Down","Up","stopDragging","OriginalConstructor","createMethod","createId","other","colsMatch","floatingMatch","indexMatch","ARROW_UP","ARROW_DOWN","refreshCount","eValue","eDelta","showDelta","delta","absDelta","valueToUse","deltaUp","setTimerToRemoveDelta","refreshCountCopy","hideDeltaValue","lastValue","columnsToAggregate","columnsToGroup","columnsToPivot","clearColumnsList","dragColumns","totalColumns","changeDetectionService_1","navigationService_1","paginationComp_1","overlayWrapperComponent_1","rowModelClass","getRowModelClass","enterpriseBeans","frameworkBeans","enterpriseComponents","contextLogger","setColumnsAndData","dispatchGridReadyEvent","setEnterpriseBeans","rowModelClasses","RowModelClasses","setEnterpriseComponents","setFrameworkBeans","setEnterpriseDefaultComponents","nothingToSet","readyEvent","infinite","clientSide","allSyncListeners","allAsyncListeners","globalSyncListeners","globalAsyncListeners","asyncFunctionsQueue","scheduled","firedEvents","EventService_1","getListenerList","listenerMap","listenerList","addModalPriorityEventListener","PRIORITY","dispatchToListeners","globalListeners","p1ListenerList","dispatchAsync","flushAsyncQueue","queueCopy","postSortFunc","pullDownGroupDataForHideOpenParents","sortedRowNodes","doDeltaSort","doFullSort","sorted","updateChildIndexes","updateGroupDataForHiddenOpenParents","mapNodeToSortedNode","compareRowNodes","currentPos","cleanNodes","passesDirtyNodesCheck","passesChangedPathCheck","cleanNodesMapped","sortedRowNode","changedNodes","mergeSortedArrays","sortedNodeA","sortedNodeB","sortOption","isInverted","inverter","comparatorResult","listToSort","clearOperation","childRowNode","groupDisplayCols","groupDisplayCol","displayingGroupKey","thisRowNodeMatches","parentToStealFrom","__assign","rowDragComp_1","autoHeightCell","editingCell","suppressRefreshCell","cellEditorVersion","cellRendererVersion","createGridCellVo","rangeSelectionEnabled","cellFocused","isCellFocused","rangeCount","getCellRangeCount","getValueAndFormat","setUsingWrapper","chooseCellRenderer","setupColSpan","getCreateTemplate","unselectable","templateParts","getCellWidth","modifyLeftForPrintLayout","valueToRender","getInitialValueToRender","valueSanitised","getToolTip","tooltipSanitised","colIdSanitised","wrapperStartTemplate","wrapperEndTemplate","stylesFromColDef","preProcessStylesFromColDef","getInitialCssClasses","stylesForRowSpanning","getStylesForRowSpanning","usingWrapper","singleRowHeight","totalRowHeight","afterAttached","eParentRow","addDomData","populateTemplate","attachCellRenderer","angular1Compile","onCellFocused","onFlashCells","onRowIndexChanged","onCellChanged","onLeftChanged","onFirstRightPinnedChanged","onLastLeftPinnedChanged","onRangeSelectionChanged","eventImpactsThisCell","getCellLeft","mostLeftCol","colsSpanning","cellId","shouldFlash","cells","animateCell","onDisplayColumnsChanged","doingFocusCss","preProcessClassesFromColDef","preProcessCellClassRules","getRangeClasses","usingCellRenderer","cellRendererGui","templateUrl","templateService","getValueToUse","suppressFlash","suppressCellFlash","valuesDifferent","valuesAreEqual","dataNeedsUpdating","cellRendererRefreshed","attemptCellRendererRefresh","replaceContentsAfterRefresh","postProcessStylesFromColDef","postProcessClassesFromColDef","updateAngular1ScopeAndCompile","refreshToolTip","postProcessCellClassRules","cssName","fullName","animationFullName","eParentOfValue","putDataIntoCellAfterRefresh","childElementCount","compiledElement_1","processStylesFromColDef","cellStyle","cssToUse","cellStyleParams","cellStyleFunc","processClassesFromColDef","onApplicableClass","stylingService","processStaticCellClasses","createCellRendererParams","newTooltip","removeAttribute","equalsMethod","processCellClassRules","onNotApplicableClass","processClassRules","cellClassRules","includeSelectionComponent","includeRowDraggingComponent","cbSelectionIsFunc","rowDraggableIsFunc","CELL_RENDERER_TYPE_PINNED","CELL_RENDERER_TYPE_NORMAL","createCellRendererInstance","componentPromise","afterCellRendererCreated","eGridCell","addRowCompListener","valueFormattedExists","lockedClosedGroup","isOpenGroup","groupFootersEnabled","groupAlwaysShowAggData","onMouseEvent","onCellClicked","onMouseDown","onCellDoubleClicked","onMouseOut","onMouseOver","dispatchCellContextMenuEvent","cellContextMenuEvent","onCellContextMenu","domEvent","cellMouseOutEvent","cellMouseOverEvent","cellDoubleClickedEvent","editOnDoubleClick","afterCellEditorCreated","createCellEditorParams","createCellEditor","cellEditorAsync","cellEditorPromise","popupEditorWrapper","versionMismatch","cellEditorInPopup","setInlineEditingClass","addPopupCellEditor","addInCellEditor","ePopupGui","hideEditorPopup","onPopupEditorClosed","stopRowOrCellEdit","editingInline","popupEditorShowing","stopEditingAndFocus","suppressNavigateAfterEdit","navigateAfterEdit","valueParser","forceBrowserFocus","onEnterKeyDown","onF2KeyDown","onEscapeKeyDown","onBackspaceOrDeleteKeyPressed","onNavigationKeyPressed","onShiftRangeSelect","extendRangeInDirection","ranges","endCell","end","fullRowEdit","onKeyPress","eventTarget","eventOnChildComponent","onSpaceKeyPressed","leftMouseButtonClick","thisCell","extendRangeToCell","ctrlKeyPressed","cellMouseDownEvent","isDoubleClickOnIPad","nowMillis","lastIPadMouseClickEvent","cellClickedEvent","editOnSingleClick","getParentRow","setParentRow","detach","leftPosition","leftWidth_1","newRangeCount","eCellWrapper","addRowDragging","addSelectionCheckbox","rowDraggingComp","cbSelectionComponent","visibleFunc","stopRowEditing","newValueExists","userWantsToCancel","MAT_GRID_SIZE","FRESH_GRID_SIZE","BALHAM_GRID_SIZE","HARD_CODED_SIZES","virtualItemHeight","themeMatch","reg","usingOldTheme","newTheme_1","RecursionType","refreshEverythingFunc","refreshEverythingAfterColsChangedFunc","afterColumnsChanged","onValueChanged","onRowGroupOpened","refreshMapFunc","nodeManager","atLeastOneChange","rowAtStartPixel","rowAtEndPixel","setRowTops","nextRowTop","rowsToDisplay","resetRowTops","skipChildren","indexAtPixelNow","rowNodeAtPixelNow","createChangePath","noTransactions","doRowGrouping","doFilter","doPivot","doSort","doRowsToDisplay","rowsMissing","firstRowHit","lastRowHit","lookingForLastRow","skipThisGroupNode","childOfLastRow","pixelToMatch","bottomPointer","topPointer","lastNode","midPointer","isRowInPixel","pixelInRow","recursivelyWalkNodesAndCallback","Normal","AfterFilter","AfterFilterAndSort","PivotNodes","recursionType","nodeChildren","aggregationStage","expand","recursiveExpandOrCollapse","shouldExpandOrCollapse","sortStage","groupStage","restoreGroupState","filterStage","pivotStage","getGroupState","rowDataChangedEvent","rowDataTransactionBatch","waitMillis","executeBatchUpdateRowData","callbackFuncsBound","rowNodeTrans","tranItem","rowNodeTran","commonUpdateRowData","flattenStage","templateCache","waitingCallbacks","templateFromCache","callbackList","client","onload","handleHttpResult","httpResult","response","callbacks","that_1","consuming","fireColumnEvent","fireScrollEvent","fireEvent","otherGrids","otherGridOptions","alignedGridService","onEvent","onColumnEvent","onScrollEvent","setHorizontalScrollPosition","getMasterColumns","getColumnIds","colEvent","processColumnEvent","groupOpenedEvent","processGroupOpenedEvent","otherColumnGroup","masterColumnGroup","masterColumn","columnIds","masterColumns","movedEvent","visibleEvent","pinnedEvent","resizedEvent_1","dragSourceAndParamsList","dropTargets","DragAndDropService_1","ePinnedIcon","ePlusIcon","eHiddenIcon","eMoveIcon","eLeftIcon","eRightIcon","eGroupIcon","eAggregateIcon","ePivotIcon","eDropNotAllowedIcon","getStringType","allowTouch","sourceAndParams","eventLastTime","lastDropTarget","createGhost","createDropTargetEvent","removeGhost","workOutHDirection","workOutVDirection","positionGhost","isMouseOnDropTarget","leaveLastTargetIfExists","enterDragTargetIfExists","dragEnterEvent","dragLeaveEvent","getAllContainersFromDropTarget","secondaryContainers","allContainers","mouseOverTarget","rect","horizontalFit","verticalFit","mouseOverTargetAndInterested","dropTargetEvent","ghostRect","eGhost","ghostHeight","browserWidth","browserHeight","pageY","pageX","usrDocument","windowScrollY","pageYOffset","windowScrollX","pageXOffset","eGhostParent","GHOST_TEMPLATE","eGhostIcon","eText","shake","ICON_ADD","ICON_GROUP","ICON_AGGREGATE","ICON_PIVOT","ICON_NOT_ALLOWED","existingNodesMap","suppressSortOrder","orderMap","existingNode","dataHasChanged","processAllCellClasses","classRules","classNames","rule","resultOfRule","classOrClasses","cellClassFunc","SortController_1","nextDirection","getNextSortDirection","valueOf","doingMultiSort","clearSortBarThisColumn","dispatchSortChangedEvents","columnToSkip","columnToClear","DEFAULT_SORTING_ORDER","currentIndex","notInArray","lastItemInArray","columnsWithSorting","getColumnsWithSortingOrdered","sortModelProvided","allColumnsIncludingAuto","sortForCol","sortModelEntry","compareColIds","ascending","onMouseUpListener","onMouseUp","onMouseMoveListener","onMouseMove","onTouchEndListener","onTouchUp","onTouchMoveListener","dragEndFunctions","dragSources","removeListener","dragSourceAndListener","mouseDownListener","touchEnabled","touchStartListener","setNoSelectToBody","noSelect","includeTouch","mouseListener","currentDragParams","touchLastTime","onCommonMove","skipMouseEvent","_alreadyProcessedByDragService","mouseEventLastTime","mouseStartEvent","isEventNearStartEvent","currentEvent","startEvent","requiredPixelDiff","getFirstActiveTouch","changedTouches","onUpCommon","eventOrTouch","colDefFloatingCellRenderer","colDefCellRenderer","colDefCellEditor","colDefFilter","gridOptionsFullWidthCellRenderer","gridOptionsGroupRowRenderer","gridOptionsGroupRowInnerRenderer","filterNumberTo","filterNumberToPanelId","fieldToId","addFilterChangedEventListeners","eFilterToTextField","eFilterTextConditionField","eFilterToConditionText","filterNumberCondition","setFilterTo","filterNumberConditionTo","filterElement","filterToElement","onTextFieldsChanged","stringToFloat","newFilterTo","filterNumber","eNumberToPanel","eNumberToConditionPanel","DEFAULT_LOADING_OVERLAY_TEMPLATE","parentScope","animateIn","embedFullWidth","eAllRowContainers","rowContainerReadyCount","refreshNeeded","columnRefreshPending","cellComps","createSecondPassFuncs","removeFirstPassFuncs","removeSecondPassFuncs","rowIsEven","paginationPage","setAnimateFlags","rowFocused","isRowFocused","createChildScopeOrNull","setupRowContainers","addListeners","slideRowIn","onTopChanged","fadeRowIn","createTemplate","contents","extraCssClass","rowClasses","getInitialRowClasses","rowIdSanitised","userRowStyles","preProcessStylesFromGridOptions","businessKey","getRowBusinessKey","businessKeySanitised","rowTopStyle","getInitialRowTopStyle","executeProcessRowPostCreateFunc","eBodyRow","ePinnedLeftRow","ePinnedRightRow","pixels","roundRowTopToBounds","afterPaginationPixels","applyPaginationOffset","afterScalingPixels","businessKeyForNodeFunc","areAllContainersReady","lazyCreateCells","cellTemplatesAndComps","createCells","callAfterRowAttachedOnCells","createRowContainer","useAnimationsFrameForCreate","afterRowAttached","newChildScope","isFullWidthCellFunc","isDetailCell","isGroupSpanningRow","createFullWidthRows","LOADING_CELL_RENDERER","LOADING_CELL_RENDERER_COMP_NAME","DETAIL_CELL_RENDERER","DETAIL_CELL_RENDERER_COMP_NAME","FULL_WIDTH_CELL_RENDERER","GROUP_ROW_RENDERER","GROUP_ROW_RENDERER_COMP_NAME","setupNormalRowContainers","centerCols","leftCols","rightCols","fullWidthRow","createFullWidthRowContainer","eFullWidthRowBody","fullWidthRowComponentBody","eFullWidthRowLeft","fullWidthRowComponentLeft","eFullWidthRowRight","fullWidthRowComponentRight","eFullWidthRow","fullWidthRowComponent","oldRowTopExists","editingRow","onExpandedChanged","onRowNodeDataChanged","onRowNodeCellChanged","onRowNodeDraggingChanged","onCellFocusChanged","removeRenderedCells","postProcessCss","postProcessStylesFromGridOptions","postProcessClassesFromGridOptions","postProcessRowClassRules","postProcessRowDragging","destroyFullWidthComponents","getContainerForCell","pinnedType","skipAnimationFrame","refreshCellsInAnimationFrame","insertCellsIntoContainer","colIdsToRemove","eligibleToBeRemoved","isCellEligibleToBeRemoved","REMOVE_CELL","KEEP_CELL","isCellInWrongRow","focused","mightWantToKeepCell","cellStillDisplayed","ensureCellInCorrectContainer","eOldContainer","inWrongRow","rowWeWant","oldRow","cellTemplates","newCellComps","existingCell","createNewCell","eRowContainer","gow","DOM_DATA_KEY_RENDERED_ROW","newCellComp","cellTemplate","onRowDblClick","onRowClick","createRowEvent","createRowEventWithSource","agEvent","stop","multiSelectKeyPressed","shiftKeyPressed","multiSelectOnClick","rowDeselectionWithCtrl","eRowCallback","cellRendererCallback","createFullWidthParams","isDetailRow","classes","addExpandedClass","processClassesFromGridOptions","preProcessRowClassRules","firstRowOnPage","isFirstRowOnPage","lastRowOnPage","isLastRowOnPage","processRowClassRules","setEditingRow","sourceRenderedCell","classStr","process","rowCls","rowClassFunc","rowClassFuncResult","rowStyles","processStylesFromGridOptions","rowStyleFuncResult","rowStyleFunc","templateAndComps","addHoverFunctionality","range","minPixel","maxPixel","heightPx_1","destroyContainingCells","delayedDestroyFunctions","topPx","multiplier","topPx_1","transform","spanList","updateRowIndexes","rowIndexStr","rowIsEvenChanged","sides","getBodyRowElement","ct","getPinnedLeftRowElement","getPinnedRightRowElement","getFullWidthRowElement","side","pinnedTopRows","pinnedBottomRows","getRowAtPixel","rowTopPixel","createNodesFromData","allData","isTop","nextRowTop_1","getPinnedTopTotalHeight","getTotalHeight","getPinnedBottomTotalHeight","registered","registerElement","AgileGridProto","__agGridSetProperty","__agGridGetProperty","agGridProtoNoType","__attributes","changeObject","onChange","_initialised","_gridOptions","setGridOptions","_agGrid","createdCallback","setPropertyFromAttribute","toCamelCase","nodeValue","attachedCallback","detachedCallback","attributeChangedCallback","eventLowerCase","browserEvent","Event","browserEventNoType","agGridDetails","callbackMethod","myString","eHeader","addItem","setAfterAttachedParams","afterAttachedParams","getMinDimensions","eDummyBody","itemWrapper","eClone","tabbedItem","bodyPromise","showFirstItem","showItemWrapper","eHeaderButton","showItem","onItemClicked","activeItem","afterAttachedCallback","onActiveItemClicked","cacheVersion","neverExpires","__cacheVersion","__cacheData","valueInCache","rowContainerComponent_1","rowDragFeature_1","GRID_PANEL_NORMAL_TEMPLATE","resetLastHorizontalScrollElementDebounce","resetLastHorizontalScrollElement","eBodyViewport","eCenterViewport","onRowDataChanged","showOrHideOverlay","method","suppressScrollOnFloatingRow","setupRowAnimationCssClass","buildRowContainerComponents","addDragListeners","addScrollListener","setPinnedContainerSize","disableBrowserDragging","addMouseListeners","addKeyboardEvents","addBodyViewportListener","addStopEditingWhenGridLosesFocus","mockContextMenuForIPad","addRowDragListener","addAngularApplyCheck","onDisplayedColumnsWidthChanged","navigationService","heightScaler","paginationAutoPageSizeService","viewport","onCenterViewportResized","newPrintLayout","setWidthsOfContainers","setColumnMovingCss","eTop","eCenterContainer","eBottom","rowDragFeature","focusOutListener","elementWithFocus","clickInsideGrid","applyTriggered","HTMLImageElement","eLeftContainer","eRightContainer","eventNames","processMouseEvent","eAllCellContainers","processKeyboardEvent","onContextMenu","preventDefaultOnContextMenu","getBodyClientRect","getRowForEvent","gridProcessingAllowed","wasScrollKey","doClipboardOperations","cellKeyDownEvent","cellKeyPressEvent","isEventFromThisGrid","onCtrlAndA","onCtrlAndC","onCtrlAndV","onCtrlAndD","getRenderedCellForEvent","handleContextMenuMouseEvent","longTapListener","showMenu","isEmptyPinnedTop","isEmptyPinnedBottom","floatingStart","floatingEnd","rowEnd","setRange","rowStart","columnStart","columnEnd","copyToClipboard","pasteFromClipboard","rowGotShiftedDuringOperation","startingRowTop","startingRowHeight","rowBottomPixel","heightOffset","vScrollTop","vScrollBottom","viewportHeight","pxTop","pxBottom","pxMiddle","rowBelowViewport","rowAboveViewport","newScrollPosition","updateScrollVisibleService","checkBodyHeight","onHorizontalViewportChanged","updateScrollVisibleServiceImpl","setHorizontalScrollVisible","setVerticalScrollPaddingVisible","scrollSize","scrollContainerSize","addIEPadding","eHorizontalScrollBody","eBodyHorizontalScrollViewport","eBodyHorizontalScrollContainer","scroller","overflowY","setFakeHScrollSpacerWidths","viewportLeftPixel","viewportRightPixel","colLeftPixel","colRightPixel","viewportWidth","viewportScrolledPastCol","viewportScrolledBeforeCol","colToSmallForViewport","alignColToLeft","alignColToRight","setCenterViewportScrollLeft","overlayWrapper","nextTimeout","eTopViewport","eBottomViewport","eLeftBottom","eLeftTop","eRightBottom","eRightTop","eFullWidthContainer","rowContainerComponents","eCenterColsClipper","eTopContainer","eTopFullWidthContainer","eBottomContainer","eBottomFullWidthContainer","resetTopScroll","resetBottomScroll","getFloatingTopBottom","setCenterWidth","pinnedContainerWidths","setHeaderContainerWidth","widthPx","setPinnedLeftWidth","oldPinning","widthOfCols","newPinning","setLeftVisible","setPinnedRightWidth","setRightVisible","rightSpacing","scrollOnRight","eHorizontalRightSpacer","leftSpacing","scrollOnLeft","eHorizontalLeftSpacer","totalHeaderHeight","floatingTopHeight","floatingBottomHeight","floatingTopHeightString","floatingBottomHeightString","hScrollPosition","doHorizontalScroll","vScrollPosition","oldScrollPosition","onCenterViewportScroll","onFakeHorizontalScroll","onVerticalScroll","redrawRowsAfterScroll","isControllingScroll","eDiv","lastHorizontalScrollElement","onBodyHorizontalScroll","eSource","scrollWentPastBounds","setHorizontalScroll","partner","addScrollEventListener","removeScrollEventListener","lastMovingChanged","setupTap","setupIcons","setupMenu","setupSort","setupFilterIcon","setupText","displayNameSanitised","eSortAsc","eSortDesc","eSortNone","eFilter","eParent","menuTouchListener","showMenuFn","tapListener","dontShowMenu","opacity","transition","removeSortIcons","eSortOrder","sortUsingCtrl","nowTime","movedRecently","columnMoving","setMultiSortOrder","alwaysHideNoSort","allColumnsWithSorting","indexThisCol","moreThanOneColSorting","showIndex","gridInstanceId","MouseEventService_1","gridInstanceSequence","stampDomElementWithGridInstance","GRID_DOM_KEY","eventFromThisGrid","cbSelectAllVisible","processingEventFromCheckbox","filteredOnly","headerCheckboxSelectionFilteredOnly","showOrHideSelectAll","onModelChanged","onCbSelectAll","isCheckboxSelection","checkRightRowModelType","updateStateOfCheckbox","getNextCheckboxState","selectionCount","notSelected","getSelectionCount","allSelected","selectedCount","notSelectedCount","rowModelMatches","expressionToFunctionCache","expressionOrFunc","evaluateExpression","javaScriptFunction","createExpressionFunction","functionBody","createFunctionBody","theFunction","existingIds","lastResult","assignBlankValueToGroupFooterCell","embeddedRowMismatch","isEmbeddedRowMismatch","cellIsEmpty","cellIsBlank","setupDragOpenParents","addExpandAndContract","addCheckboxIfNeeded","addValueElement","setupIndent","pinnedLeftCell","pinnedRightCell","bodyCell","setIndent","paddingCount","userProvidedPaddingPixelsTheDeprecatedWay","setPaddingDeprecatedWay","indentClass","paddingPx","paddingRight","paddingLeft","suppressPadding","displayedGroup","createFooterCell","createGroupCell","addChildCount","createLeafCell","footerValue","footerValueGetter","paramsClone","rendererPromise","columnToUse","groupName","useFullWidth","useInnerRenderer","innerCellRenderer","groupCellRendererParams","groupedColumnDef","groupInnerRendererClass","groupColumnRendererClass","rendererToUse","suppressCount","updateChildCount","eChildCount","isUserWantsSelected","paramsCheckbox","checkbox","checkboxNeeded","cbSelectionComponent_1","eGroupCell","eExpandedIcon","eContractedIcon","eExpanded","eContracted","onExpandClicked","showExpandAndContractIcons","onAllChildrenCountChanged","suppressDoubleClickExpand","onCellDblClicked","defaultPrevented","cellEditable","onExpandOrContract","draggedFromHideOpenParents","targetIsExpandIcon","reducedLeafNode","pivotModeAndLeafGroup","notExpandable","addLeafIndentClass","DEFAULT_COLUMN_COMP","DEFAULT_FILTER_COMP","defaultToolPanel","comps_1","lookupResult","DEFAULT_BY_KEY","parseComponents","hiddenByDefault","toAdd","labelDefault","labelKey","iconKey","filters","setColsSpanning","getColumnOrGroup","setLeftFirstTime","suppressMoveAnimation","oldLeftExists","animateColumnMove","animateInLeft","actualLeft","colOrGroup","textarea","maxLength","eCurrent","addSlideAnimation","ePrevious","infiniteBlock_1","moveItemsDown","moveFromIndex","moveCount","indexOfLastRowToMove","currentRowIndex","indexOfNodeWeWant","nodeForThisIndex","insertItems","indexToInsert","pageStartRow","pageEndRow","newRowNodes","currentRowInThisPage","newNodes","newNodesThisPage","dontCreatePage","createBlock","autoRowHeightCols","visibleAutoRowHeightCols","maxCellHeight","browserFocusedCell","getGridCellForDomElement","eBrowserCell","ePointer","isAnyCellFocused","floatingOrNull","skipLeafNodes","showRootNode","topList","recursivelyAddToRowsToDisplay","includeGroupTotalFooter","ensureFooterNodeExists","addRowNodeToRowsToDisplay","rowsToFlatten","hideOpenParents","isParent","isGroupSuppressedNode","isSkippedLeafNode","isRemovedSingleChildrenGroup","isRemovedLowestSingleChildrenGroup","neverAllowToExpand","isHiddenOpenParent","thisRowShouldBeRendered","excludedParent","uiLevelForChildren","createDetailNode","groupNode","footerNode","masterNode","flower","childFlower","executeNextFuncs","executeLaterFuncs","animationThreadCount","ensureAnimationCssClassPresent","flush","executeLaterVMTurn","animationThreadCountCopy","nowFuncs","waitFuncs","cellRendererMap","CellRendererFactory_1","ANIMATE_SLIDE","ANIMATE_SHOW_CHANGE","GROUP","addCellRenderer","childContainers","eHeaderContainer","eHeaderViewport","pinnedLeftContainer","ePinnedLeftHeader","pinnedRightContainer","ePinnedRightHeader","onPivotModeChanged","addPreventHeaderScroll","childContainer","px","addMouseHoverListeners"],"mappings":"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","file":"js/chunk-24694ea5.bd5ac731.js","sourcesContent":["/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventService_1 = require(\"../eventService\");\nvar context_1 = require(\"../context/context\");\nvar events_1 = require(\"../events\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar ColumnHoverService = /** @class */ (function (_super) {\n __extends(ColumnHoverService, _super);\n function ColumnHoverService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnHoverService.prototype.setMouseOver = function (columns) {\n this.selectedColumns = columns;\n var event = {\n type: events_1.Events.EVENT_COLUMN_HOVER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.clearMouseOver = function () {\n this.selectedColumns = null;\n var event = {\n type: events_1.Events.EVENT_COLUMN_HOVER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.isHovered = function (column) {\n return this.selectedColumns && this.selectedColumns.indexOf(column) >= 0;\n };\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], ColumnHoverService.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], ColumnHoverService.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], ColumnHoverService.prototype, \"gridApi\", void 0);\n ColumnHoverService = __decorate([\n context_1.Bean('columnHoverService')\n ], ColumnHoverService);\n return ColumnHoverService;\n}(beanStub_1.BeanStub));\nexports.ColumnHoverService = ColumnHoverService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar popupComponent_1 = require(\"../../widgets/popupComponent\");\nvar constants_1 = require(\"../../constants\");\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar valueFormatterService_1 = require(\"../valueFormatterService\");\nvar utils_1 = require(\"../../utils\");\nvar SelectCellEditor = /** @class */ (function (_super) {\n __extends(SelectCellEditor, _super);\n function SelectCellEditor() {\n var _this = _super.call(this, '
\") || this;\n }\n DefaultDateComponent.prototype.init = function (params) {\n this.eDateInput = this.getGui().querySelector('input');\n if (utils_1._.isBrowserChrome() || params.filterParams.browserDatePicker) {\n if (utils_1._.isBrowserIE()) {\n console.warn('ag-grid: browserDatePicker is specified to true, but it is not supported in IE 11, reverting to plain text date picker');\n }\n else {\n this.eDateInput.type = 'date';\n }\n }\n this.listener = params.onDateChanged;\n this.addGuiEventListener('input', this.listener);\n };\n DefaultDateComponent.prototype.getDate = function () {\n return utils_1._.parseYyyyMmDdToDate(this.eDateInput.value, \"-\");\n };\n DefaultDateComponent.prototype.setDate = function (date) {\n this.eDateInput.value = utils_1._.serializeDateToYyyyMmDd(date, \"-\");\n };\n return DefaultDateComponent;\n}(component_1.Component));\nexports.DefaultDateComponent = DefaultDateComponent;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar constants_1 = require(\"./constants\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar gridRow_1 = require(\"./entities/gridRow\");\nvar gridCell_1 = require(\"./entities/gridCell\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar pinnedRowModel_1 = require(\"./rowModels/pinnedRowModel\");\nvar utils_1 = require(\"./utils\");\nvar CellNavigationService = /** @class */ (function () {\n function CellNavigationService() {\n }\n // returns null if no cell to focus on, ie at the end of the grid\n CellNavigationService.prototype.getNextCellToFocus = function (key, lastCellToFocus) {\n // starting with the provided cell, we keep moving until we find a cell we can\n // focus on.\n var pointer = lastCellToFocus;\n var finished = false;\n // finished will be true when either:\n // a) cell found that we can focus on\n // b) run out of cells (ie the method returns null)\n while (!finished) {\n switch (key) {\n case constants_1.Constants.KEY_UP:\n pointer = this.getCellAbove(pointer);\n break;\n case constants_1.Constants.KEY_DOWN:\n pointer = this.getCellBelow(pointer);\n break;\n case constants_1.Constants.KEY_RIGHT:\n if (this.gridOptionsWrapper.isEnableRtl()) {\n pointer = this.getCellToLeft(pointer);\n }\n else {\n pointer = this.getCellToRight(pointer);\n }\n break;\n case constants_1.Constants.KEY_LEFT:\n if (this.gridOptionsWrapper.isEnableRtl()) {\n pointer = this.getCellToRight(pointer);\n }\n else {\n pointer = this.getCellToLeft(pointer);\n }\n break;\n default:\n pointer = null;\n console.warn('ag-Grid: unknown key for navigation ' + key);\n break;\n }\n if (pointer) {\n finished = this.isCellGoodToFocusOn(pointer);\n }\n else {\n finished = true;\n }\n }\n return pointer;\n };\n CellNavigationService.prototype.isCellGoodToFocusOn = function (gridCell) {\n var column = gridCell.column;\n var rowNode;\n switch (gridCell.floating) {\n case constants_1.Constants.PINNED_TOP:\n rowNode = this.pinnedRowModel.getPinnedTopRow(gridCell.rowIndex);\n break;\n case constants_1.Constants.PINNED_BOTTOM:\n rowNode = this.pinnedRowModel.getPinnedBottomRow(gridCell.rowIndex);\n break;\n default:\n rowNode = this.rowModel.getRow(gridCell.rowIndex);\n break;\n }\n var suppressNavigable = column.isSuppressNavigable(rowNode);\n return !suppressNavigable;\n };\n CellNavigationService.prototype.getCellToLeft = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToLeft = this.columnController.getDisplayedColBefore(lastCell.column);\n if (!colToLeft) {\n return null;\n }\n else {\n var gridCellDef = {\n rowIndex: lastCell.rowIndex,\n column: colToLeft,\n floating: lastCell.floating\n };\n return new gridCell_1.GridCell(gridCellDef);\n }\n };\n CellNavigationService.prototype.getCellToRight = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToRight = this.columnController.getDisplayedColAfter(lastCell.column);\n // if already on right, do nothing\n if (!colToRight) {\n return null;\n }\n else {\n var gridCellDef = {\n rowIndex: lastCell.rowIndex,\n column: colToRight,\n floating: lastCell.floating\n };\n return new gridCell_1.GridCell(gridCellDef);\n }\n };\n CellNavigationService.prototype.getRowBelow = function (lastRow) {\n // if already on top row, do nothing\n if (this.isLastRowInContainer(lastRow)) {\n if (lastRow.isFloatingBottom()) {\n return null;\n }\n else if (lastRow.isNotFloating()) {\n if (this.pinnedRowModel.isRowsToRender(constants_1.Constants.PINNED_BOTTOM)) {\n return new gridRow_1.GridRow(0, constants_1.Constants.PINNED_BOTTOM);\n }\n else {\n return null;\n }\n }\n else {\n if (this.rowModel.isRowsToRender()) {\n return new gridRow_1.GridRow(0, null);\n }\n else if (this.pinnedRowModel.isRowsToRender(constants_1.Constants.PINNED_BOTTOM)) {\n return new gridRow_1.GridRow(0, constants_1.Constants.PINNED_BOTTOM);\n }\n else {\n return null;\n }\n }\n }\n else {\n return new gridRow_1.GridRow(lastRow.rowIndex + 1, lastRow.floating);\n }\n };\n CellNavigationService.prototype.getCellBelow = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowBelow = this.getRowBelow(lastCell.getGridRow());\n if (rowBelow) {\n var gridCellDef = {\n rowIndex: rowBelow.rowIndex,\n column: lastCell.column,\n floating: rowBelow.floating\n };\n return new gridCell_1.GridCell(gridCellDef);\n }\n else {\n return null;\n }\n };\n CellNavigationService.prototype.isLastRowInContainer = function (gridRow) {\n if (gridRow.isFloatingTop()) {\n var lastTopIndex = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return lastTopIndex <= gridRow.rowIndex;\n }\n else if (gridRow.isFloatingBottom()) {\n var lastBottomIndex = this.pinnedRowModel.getPinnedBottomRowData().length - 1;\n return lastBottomIndex <= gridRow.rowIndex;\n }\n else {\n var lastBodyIndex = this.rowModel.getPageLastRow();\n return lastBodyIndex <= gridRow.rowIndex;\n }\n };\n CellNavigationService.prototype.getRowAbove = function (lastRow) {\n // if already on top row, do nothing\n if (lastRow.rowIndex === 0) {\n if (lastRow.isFloatingTop()) {\n return null;\n }\n else if (lastRow.isNotFloating()) {\n if (this.pinnedRowModel.isRowsToRender(constants_1.Constants.PINNED_TOP)) {\n return this.getLastFloatingTopRow();\n }\n else {\n return null;\n }\n }\n else {\n // last floating bottom\n if (this.rowModel.isRowsToRender()) {\n return this.getLastBodyCell();\n }\n else if (this.pinnedRowModel.isRowsToRender(constants_1.Constants.PINNED_TOP)) {\n return this.getLastFloatingTopRow();\n }\n else {\n return null;\n }\n }\n }\n else {\n return new gridRow_1.GridRow(lastRow.rowIndex - 1, lastRow.floating);\n }\n };\n CellNavigationService.prototype.getCellAbove = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowAbove = this.getRowAbove(lastCell.getGridRow());\n if (rowAbove) {\n var gridCellDef = {\n rowIndex: rowAbove.rowIndex,\n column: lastCell.column,\n floating: rowAbove.floating\n };\n return new gridCell_1.GridCell(gridCellDef);\n }\n else {\n return null;\n }\n };\n CellNavigationService.prototype.getLastBodyCell = function () {\n var lastBodyRow = this.rowModel.getPageLastRow();\n return new gridRow_1.GridRow(lastBodyRow, null);\n };\n CellNavigationService.prototype.getLastFloatingTopRow = function () {\n var lastFloatingRow = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return new gridRow_1.GridRow(lastFloatingRow, constants_1.Constants.PINNED_TOP);\n };\n CellNavigationService.prototype.getNextTabbedCell = function (gridCell, backwards) {\n if (backwards) {\n return this.getNextTabbedCellBackwards(gridCell);\n }\n else {\n return this.getNextTabbedCellForwards(gridCell);\n }\n };\n CellNavigationService.prototype.getNextTabbedCellForwards = function (gridCell) {\n var displayedColumns = this.columnController.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.floating;\n // move along to the next cell\n var newColumn = this.columnController.getDisplayedColAfter(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = displayedColumns[0];\n var rowBelow = this.getRowBelow(gridCell.getGridRow());\n if (utils_1._.missing(rowBelow)) {\n return null;\n }\n newRowIndex = rowBelow ? rowBelow.rowIndex : null;\n newFloating = rowBelow ? rowBelow.floating : null;\n }\n var gridCellDef = { rowIndex: newRowIndex, column: newColumn, floating: newFloating };\n return new gridCell_1.GridCell(gridCellDef);\n };\n CellNavigationService.prototype.getNextTabbedCellBackwards = function (gridCell) {\n var displayedColumns = this.columnController.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.floating;\n // move along to the next cell\n var newColumn = this.columnController.getDisplayedColBefore(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = displayedColumns[displayedColumns.length - 1];\n var rowAbove = this.getRowAbove(gridCell.getGridRow());\n if (utils_1._.missing(rowAbove)) {\n return null;\n }\n newRowIndex = rowAbove ? rowAbove.rowIndex : null;\n newFloating = rowAbove ? rowAbove.floating : null;\n }\n var gridCellDef = { rowIndex: newRowIndex, column: newColumn, floating: newFloating };\n return new gridCell_1.GridCell(gridCellDef);\n };\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], CellNavigationService.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], CellNavigationService.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('pinnedRowModel'),\n __metadata(\"design:type\", pinnedRowModel_1.PinnedRowModel)\n ], CellNavigationService.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], CellNavigationService.prototype, \"gridOptionsWrapper\", void 0);\n CellNavigationService = __decorate([\n context_1.Bean('cellNavigationService')\n ], CellNavigationService);\n return CellNavigationService;\n}());\nexports.CellNavigationService = CellNavigationService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar column_1 = require(\"./column\");\nvar eventService_1 = require(\"../eventService\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar ColumnGroup = /** @class */ (function () {\n function ColumnGroup(originalColumnGroup, groupId, instanceId, pinned) {\n // depends on the open/closed state of the group, only displaying columns are stored here\n this.displayedChildren = [];\n this.localEventService = new eventService_1.EventService();\n this.groupId = groupId;\n this.instanceId = instanceId;\n this.originalColumnGroup = originalColumnGroup;\n this.pinned = pinned;\n }\n // this is static, a it is used outside of this class\n ColumnGroup.createUniqueId = function (groupId, instanceId) {\n return groupId + '_' + instanceId;\n };\n // as the user is adding and removing columns, the groups are recalculated.\n // this reset clears out all children, ready for children to be added again\n ColumnGroup.prototype.reset = function () {\n this.parent = null;\n this.children = null;\n this.displayedChildren = null;\n };\n ColumnGroup.prototype.getParent = function () {\n return this.parent;\n };\n ColumnGroup.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n ColumnGroup.prototype.getUniqueId = function () {\n return ColumnGroup.createUniqueId(this.groupId, this.instanceId);\n };\n ColumnGroup.prototype.isEmptyGroup = function () {\n return this.displayedChildren.length === 0;\n };\n ColumnGroup.prototype.isMoving = function () {\n var allLeafColumns = this.getOriginalColumnGroup().getLeafColumns();\n if (!allLeafColumns || allLeafColumns.length === 0) {\n return false;\n }\n var allMoving = true;\n allLeafColumns.forEach(function (col) {\n if (!col.isMoving()) {\n allMoving = false;\n }\n });\n return allMoving;\n };\n ColumnGroup.prototype.checkLeft = function () {\n // first get all children to setLeft, as it impacts our decision below\n this.displayedChildren.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n child.checkLeft();\n }\n });\n // set our left based on first displayed column\n if (this.displayedChildren.length > 0) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n var lastChild = this.displayedChildren[this.displayedChildren.length - 1];\n var lastChildLeft = lastChild.getLeft();\n this.setLeft(lastChildLeft);\n }\n else {\n var firstChildLeft = this.displayedChildren[0].getLeft();\n this.setLeft(firstChildLeft);\n }\n }\n else {\n // this should never happen, as if we have no displayed columns, then\n // this groups should not even exist.\n this.setLeft(null);\n }\n };\n ColumnGroup.prototype.getLeft = function () {\n return this.left;\n };\n ColumnGroup.prototype.getOldLeft = function () {\n return this.oldLeft;\n };\n ColumnGroup.prototype.setLeft = function (left) {\n this.oldLeft = left;\n if (this.left !== left) {\n this.left = left;\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_LEFT_CHANGED));\n }\n };\n ColumnGroup.prototype.getPinned = function () {\n return this.pinned;\n };\n ColumnGroup.prototype.createAgEvent = function (type) {\n return {\n type: type,\n };\n };\n ColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n ColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n ColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n ColumnGroup.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n ColumnGroup.prototype.isChildInThisGroupDeepSearch = function (wantedChild) {\n var result = false;\n this.children.forEach(function (foundChild) {\n if (wantedChild === foundChild) {\n result = true;\n }\n if (foundChild instanceof ColumnGroup) {\n if (foundChild.isChildInThisGroupDeepSearch(wantedChild)) {\n result = true;\n }\n }\n });\n return result;\n };\n ColumnGroup.prototype.getActualWidth = function () {\n var groupActualWidth = 0;\n if (this.displayedChildren) {\n this.displayedChildren.forEach(function (child) {\n groupActualWidth += child.getActualWidth();\n });\n }\n return groupActualWidth;\n };\n ColumnGroup.prototype.isResizable = function () {\n if (!this.displayedChildren) {\n return false;\n }\n // if at least one child is resizable, then the group is resizable\n var result = false;\n this.displayedChildren.forEach(function (child) {\n if (child.isResizable()) {\n result = true;\n }\n });\n return result;\n };\n ColumnGroup.prototype.getMinWidth = function () {\n var result = 0;\n this.displayedChildren.forEach(function (groupChild) {\n result += groupChild.getMinWidth();\n });\n return result;\n };\n ColumnGroup.prototype.addChild = function (child) {\n if (!this.children) {\n this.children = [];\n }\n this.children.push(child);\n };\n ColumnGroup.prototype.getDisplayedChildren = function () {\n return this.displayedChildren;\n };\n ColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n ColumnGroup.prototype.getDisplayedLeafColumns = function () {\n var result = [];\n this.addDisplayedLeafColumns(result);\n return result;\n };\n // why two methods here doing the same thing?\n ColumnGroup.prototype.getDefinition = function () {\n return this.originalColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.getColGroupDef = function () {\n return this.originalColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.isPadding = function () {\n return this.originalColumnGroup.isPadding();\n };\n ColumnGroup.prototype.isExpandable = function () {\n return this.originalColumnGroup.isExpandable();\n };\n ColumnGroup.prototype.isExpanded = function () {\n return this.originalColumnGroup.isExpanded();\n };\n ColumnGroup.prototype.setExpanded = function (expanded) {\n this.originalColumnGroup.setExpanded(expanded);\n };\n ColumnGroup.prototype.addDisplayedLeafColumns = function (leafColumns) {\n this.displayedChildren.forEach(function (child) {\n if (child instanceof column_1.Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addDisplayedLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n this.children.forEach(function (child) {\n if (child instanceof column_1.Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n ColumnGroup.prototype.getColumnGroupShow = function () {\n return this.originalColumnGroup.getColumnGroupShow();\n };\n ColumnGroup.prototype.getOriginalColumnGroup = function () {\n return this.originalColumnGroup;\n };\n ColumnGroup.prototype.calculateDisplayedColumns = function () {\n var _this = this;\n // clear out last time we calculated\n this.displayedChildren = [];\n var topLevelGroup = this;\n // find the column group that is controlling expandable. this is relevant when we have padding (empty)\n // groups, where the expandable is actually the first parent that is not a padding group.\n if (this.isPadding()) {\n while (topLevelGroup.getParent() && topLevelGroup.isPadding()) {\n topLevelGroup = topLevelGroup.getParent();\n }\n }\n var isExpandable = topLevelGroup.originalColumnGroup.isExpandable();\n // it not expandable, everything is visible\n if (!isExpandable) {\n this.displayedChildren = this.children;\n }\n else {\n // Add cols based on columnGroupShow\n // Note - the below also adds padding groups, these are always added because they never have\n // colDef.columnGroupShow set.\n this.children.forEach(function (abstractColumn) {\n var headerGroupShow = abstractColumn.getColumnGroupShow();\n switch (headerGroupShow) {\n case ColumnGroup.HEADER_GROUP_SHOW_OPEN:\n // when set to open, only show col if group is open\n if (topLevelGroup.originalColumnGroup.isExpanded()) {\n _this.displayedChildren.push(abstractColumn);\n }\n break;\n case ColumnGroup.HEADER_GROUP_SHOW_CLOSED:\n // when set to open, only show col if group is open\n if (!topLevelGroup.originalColumnGroup.isExpanded()) {\n _this.displayedChildren.push(abstractColumn);\n }\n break;\n default:\n // default is always show the column\n _this.displayedChildren.push(abstractColumn);\n break;\n }\n });\n }\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));\n };\n ColumnGroup.HEADER_GROUP_SHOW_OPEN = 'open';\n ColumnGroup.HEADER_GROUP_SHOW_CLOSED = 'closed';\n ColumnGroup.EVENT_LEFT_CHANGED = 'leftChanged';\n ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED = 'displayedChildrenChanged';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ColumnGroup.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], ColumnGroup.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], ColumnGroup.prototype, \"gridApi\", void 0);\n return ColumnGroup;\n}());\nexports.ColumnGroup = ColumnGroup;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction QuerySelector(selector) {\n return querySelectorFunc.bind(this, selector);\n}\nexports.QuerySelector = QuerySelector;\nfunction RefSelector(ref) {\n return querySelectorFunc.bind(this, \"[ref=\" + ref + \"]\");\n}\nexports.RefSelector = RefSelector;\nfunction querySelectorFunc(selector, classPrototype, methodOrAttributeName, index) {\n if (selector === null) {\n console.error(\"ag-Grid: QuerySelector selector should not be null\");\n return;\n }\n if (typeof index === \"number\") {\n console.error(\"ag-Grid: QuerySelector should be on an attribute\");\n return;\n }\n addToObjectProps(classPrototype, 'querySelectors', {\n attributeName: methodOrAttributeName,\n querySelector: selector\n });\n}\n// think we should take this out, put property bindings on the\nfunction Listener(eventName) {\n return listenerFunc.bind(this, eventName);\n}\nexports.Listener = Listener;\nfunction listenerFunc(eventName, target, methodName) {\n if (eventName === null) {\n console.error(\"ag-Grid: EventListener eventName should not be null\");\n return;\n }\n addToObjectProps(target, 'listenerMethods', {\n methodName: methodName,\n eventName: eventName\n });\n}\n// think we should take this out, put property bindings on the\nfunction Method(eventName) {\n return methodFunc.bind(this, eventName);\n}\nexports.Method = Method;\nfunction methodFunc(alias, target, methodName) {\n if (alias === null) {\n console.error(\"ag-Grid: EventListener eventName should not be null\");\n return;\n }\n addToObjectProps(target, 'methods', {\n methodName: methodName,\n alias: alias\n });\n}\nfunction addToObjectProps(target, key, value) {\n // it's an attribute on the class\n var props = getOrCreateProps(target, target.constructor.name);\n if (!props[key]) {\n props[key] = [];\n }\n props[key].push(value);\n}\nfunction getOrCreateProps(target, instanceName) {\n if (!target.__agComponentMetaData) {\n target.__agComponentMetaData = {};\n }\n if (!target.__agComponentMetaData[instanceName]) {\n target.__agComponentMetaData[instanceName] = {};\n }\n return target.__agComponentMetaData[instanceName];\n}\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar agComponentUtils_1 = require(\"./agComponentUtils\");\nvar ComponentMetadataProvider = /** @class */ (function () {\n function ComponentMetadataProvider() {\n }\n ComponentMetadataProvider.prototype.postConstruct = function () {\n this.componentMetaData = {\n dateComponent: {\n mandatoryMethodList: ['getDate', 'setDate'],\n optionalMethodList: ['afterGuiAttached']\n },\n detailCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n headerComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n headerGroupComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n loadingCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n loadingOverlayComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n noRowsOverlayComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n floatingFilterComponent: {\n mandatoryMethodList: ['onParentModelChanged'],\n optionalMethodList: ['afterGuiAttached']\n },\n floatingFilterWrapperComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n cellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n cellEditor: {\n mandatoryMethodList: ['getValue'],\n optionalMethodList: ['isPopup', 'isCancelBeforeStart', 'isCancelAfterEnd', 'focusIn', 'focusOut', 'afterGuiAttached']\n },\n innerRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n fullWidthCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n pinnedRowCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n groupRowInnerRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n groupRowRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n filter: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged']\n },\n filterComponent: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged']\n },\n statusPanel: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n },\n toolPanel: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached']\n },\n tooltipComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n }\n };\n };\n ComponentMetadataProvider.prototype.retrieve = function (name) {\n return this.componentMetaData[name];\n };\n __decorate([\n context_1.Autowired(\"agComponentUtils\"),\n __metadata(\"design:type\", agComponentUtils_1.AgComponentUtils)\n ], ComponentMetadataProvider.prototype, \"agComponentUtils\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ComponentMetadataProvider.prototype, \"postConstruct\", null);\n ComponentMetadataProvider = __decorate([\n context_1.Bean(\"componentMetadataProvider\")\n ], ComponentMetadataProvider);\n return ComponentMetadataProvider;\n}());\nexports.ComponentMetadataProvider = ComponentMetadataProvider;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar grid_1 = require(\"../grid\");\nfunction initialiseAgGridWithAngular1(angular) {\n var angularModule = angular.module(\"agGrid\", []);\n angularModule.directive(\"agGrid\", function () {\n return {\n restrict: \"A\",\n controller: ['$element', '$scope', '$compile', '$attrs', AngularDirectiveController],\n scope: true\n };\n });\n}\nexports.initialiseAgGridWithAngular1 = initialiseAgGridWithAngular1;\nfunction AngularDirectiveController($element, $scope, $compile, $attrs) {\n var gridOptions;\n var quickFilterOnScope;\n var keyOfGridInScope = $attrs.agGrid;\n quickFilterOnScope = keyOfGridInScope + '.quickFilterText';\n gridOptions = $scope.$eval(keyOfGridInScope);\n if (!gridOptions) {\n console.warn(\"WARNING - grid options for ag-Grid not found. Please ensure the attribute ag-grid points to a valid object on the scope\");\n return;\n }\n var eGridDiv = $element[0];\n var gridParams = {\n $scope: $scope,\n $compile: $compile,\n quickFilterOnScope: quickFilterOnScope\n };\n var grid = new grid_1.Grid(eGridDiv, gridOptions, gridParams);\n $scope.$on(\"$destroy\", function () {\n grid.destroy();\n grid = null;\n });\n}\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar popupComponent_1 = require(\"../widgets/popupComponent\");\nvar TooltipComponent = /** @class */ (function (_super) {\n __extends(TooltipComponent, _super);\n function TooltipComponent() {\n return _super.call(this, \"
\") || this;\n }\n // will need to type params\n TooltipComponent.prototype.init = function (params) {\n var value = params.value;\n this.getGui().innerHTML = value;\n };\n return TooltipComponent;\n}(popupComponent_1.PopupComponent));\nexports.TooltipComponent = TooltipComponent;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"../constants\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar environment_1 = require(\"../environment\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar utils_1 = require(\"../utils\");\nvar PopupService = /** @class */ (function () {\n function PopupService() {\n this.activePopupElements = [];\n }\n PopupService.prototype.registerGridCore = function (gridCore) {\n this.gridCore = gridCore;\n };\n PopupService.prototype.getDocument = function () {\n return this.gridOptionsWrapper.getDocument();\n };\n PopupService.prototype.getPopupParent = function () {\n var ePopupParent = this.gridOptionsWrapper.getPopupParent();\n if (ePopupParent) {\n // user provided popup parent, may not have the right theme applied\n return ePopupParent;\n }\n return this.gridCore.getRootGui();\n };\n PopupService.prototype.positionPopupForMenu = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var eDocument = this.getDocument();\n var popupParent = this.getPopupParent();\n var parentRect;\n if (popupParent === eDocument.body) {\n parentRect = eDocument.documentElement.getBoundingClientRect();\n }\n else {\n parentRect = popupParent.getBoundingClientRect();\n }\n var y = sourceRect.top - parentRect.top;\n y = this.keepYWithinBounds(params, y);\n var minWidth = (params.ePopup.clientWidth > 0) ? params.ePopup.clientWidth : 200;\n params.ePopup.style.minWidth = minWidth + \"px\";\n var widthOfParent = parentRect.right - parentRect.left;\n var maxX = widthOfParent - minWidth;\n // the x position of the popup depends on RTL or LTR. for normal cases, LTR, we put the child popup\n // to the right, unless it doesn't fit and we then put it to the left. for RTL it's the other way around,\n // we try place it first to the left, and then if not to the right.\n var x;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, try left first\n x = xLeftPosition();\n if (x < 0) {\n x = xRightPosition();\n }\n if (x > maxX) {\n x = 0;\n }\n }\n else {\n // for LTR, try right first\n x = xRightPosition();\n if (x > maxX) {\n x = xLeftPosition();\n }\n if (x < 0) {\n x = 0;\n }\n }\n params.ePopup.style.left = x + \"px\";\n params.ePopup.style.top = y + \"px\";\n function xRightPosition() {\n return sourceRect.right - parentRect.left - 2;\n }\n function xLeftPosition() {\n return sourceRect.left - parentRect.left - minWidth;\n }\n };\n PopupService.prototype.positionPopupUnderMouseEvent = function (params) {\n var _a = this.calculatePointerAlign(params.mouseEvent), x = _a.x, y = _a.y;\n var ePopup = params.ePopup, nudgeX = params.nudgeX, nudgeY = params.nudgeY;\n this.positionPopup({\n ePopup: ePopup,\n x: x,\n y: y,\n nudgeX: nudgeX,\n nudgeY: nudgeY,\n keepWithinBounds: true\n });\n this.callPostProcessPopup(params.ePopup, null, params.mouseEvent, params.type, params.column, params.rowNode);\n };\n PopupService.prototype.calculatePointerAlign = function (e) {\n var eDocument = this.getDocument();\n var popupParent = this.getPopupParent();\n var parentRect = popupParent.getBoundingClientRect();\n var documentRect = eDocument.documentElement.getBoundingClientRect();\n return {\n x: e.clientX - (popupParent === eDocument.body ? documentRect.left : parentRect.left),\n y: e.clientY - (popupParent === eDocument.body ? documentRect.top : parentRect.top)\n };\n };\n PopupService.prototype.positionPopupUnderComponent = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var eDocument = this.getDocument();\n var popupParent = this.getPopupParent();\n var parentRect;\n if (popupParent === eDocument.body) {\n parentRect = eDocument.documentElement.getBoundingClientRect();\n }\n else {\n parentRect = popupParent.getBoundingClientRect();\n }\n this.positionPopup({\n ePopup: params.ePopup,\n minWidth: params.minWidth,\n minHeight: params.minHeight,\n nudgeX: params.nudgeX,\n nudgeY: params.nudgeY,\n x: sourceRect.left - parentRect.left,\n y: sourceRect.top - parentRect.top + sourceRect.height,\n keepWithinBounds: params.keepWithinBounds\n });\n this.callPostProcessPopup(params.ePopup, params.eventSource, null, params.type, params.column, params.rowNode);\n };\n PopupService.prototype.callPostProcessPopup = function (ePopup, eventSource, mouseEvent, type, column, rowNode) {\n var callback = this.gridOptionsWrapper.getPostProcessPopupFunc();\n if (callback) {\n var params = {\n column: column,\n rowNode: rowNode,\n ePopup: ePopup,\n type: type,\n eventSource: eventSource,\n mouseEvent: mouseEvent\n };\n callback(params);\n }\n };\n PopupService.prototype.positionPopupOverComponent = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var eDocument = this.getDocument();\n var popupParent = this.getPopupParent();\n var parentRect;\n if (popupParent === eDocument.body) {\n parentRect = eDocument.documentElement.getBoundingClientRect();\n }\n else {\n parentRect = popupParent.getBoundingClientRect();\n }\n this.positionPopup({\n ePopup: params.ePopup,\n minWidth: params.minWidth,\n nudgeX: params.nudgeX,\n nudgeY: params.nudgeY,\n x: sourceRect.left - parentRect.left,\n y: sourceRect.top - parentRect.top,\n keepWithinBounds: params.keepWithinBounds\n });\n this.callPostProcessPopup(params.ePopup, params.eventSource, null, params.type, params.column, params.rowNode);\n };\n PopupService.prototype.positionPopup = function (params) {\n var x = params.x;\n var y = params.y;\n if (params.nudgeX) {\n x += params.nudgeX;\n }\n if (params.nudgeY) {\n y += params.nudgeY;\n }\n // if popup is overflowing to the bottom, move it up\n if (params.keepWithinBounds) {\n x = this.keepXWithinBounds(params, x);\n y = this.keepYWithinBounds(params, y);\n }\n params.ePopup.style.left = x + \"px\";\n params.ePopup.style.top = y + \"px\";\n };\n PopupService.prototype.keepYWithinBounds = function (params, y) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var docElement = eDocument.documentElement;\n var popupParent = this.getPopupParent();\n var parentRect = popupParent.getBoundingClientRect();\n var documentRect = eDocument.documentElement.getBoundingClientRect();\n var isBody = popupParent === eDocument.body;\n var defaultPadding = 3;\n var minHeight = Math.min(200, parentRect.height);\n var diff = 0;\n if (params.minHeight && params.minHeight < minHeight) {\n minHeight = params.minHeight;\n }\n else if (params.ePopup.offsetHeight > 0) {\n minHeight = params.ePopup.clientHeight;\n diff = utils_1._.getAbsoluteHeight(params.ePopup) - minHeight;\n }\n var heightOfParent = isBody ? (utils_1._.getAbsoluteHeight(docElement) + docElement.scrollTop) : parentRect.height;\n if (isBody) {\n heightOfParent -= Math.abs(documentRect.top - parentRect.top);\n }\n var maxY = heightOfParent - minHeight - diff - defaultPadding;\n return Math.min(Math.max(y, 0), Math.abs(maxY));\n };\n PopupService.prototype.keepXWithinBounds = function (params, x) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var docElement = eDocument.documentElement;\n var popupParent = this.getPopupParent();\n var parentRect = popupParent.getBoundingClientRect();\n var documentRect = eDocument.documentElement.getBoundingClientRect();\n var isBody = popupParent === eDocument.body;\n var defaultPadding = 3;\n var minWidth = Math.min(200, parentRect.width);\n var diff = 0;\n if (params.minWidth && params.minWidth < minWidth) {\n minWidth = params.minWidth;\n }\n else if (params.ePopup.clientWidth > 0) {\n minWidth = params.ePopup.clientWidth;\n params.ePopup.style.minWidth = minWidth + \"px\";\n diff = utils_1._.getAbsoluteWidth(params.ePopup) - minWidth;\n }\n var widthOfParent = isBody ? (utils_1._.getAbsoluteWidth(docElement) + docElement.scrollLeft) : parentRect.width;\n if (isBody) {\n widthOfParent -= Math.abs(documentRect.left - parentRect.left);\n }\n var maxX = widthOfParent - minWidth - diff - defaultPadding;\n return Math.min(Math.max(x, 0), Math.abs(maxX));\n };\n //adds an element to a div, but also listens to background checking for clicks,\n //so that when the background is clicked, the child is removed again, giving\n //a model look to popups.\n PopupService.prototype.addAsModalPopup = function (eChild, closeOnEsc, closedCallback, click) {\n return this.addPopup(true, eChild, closeOnEsc, closedCallback, click);\n };\n PopupService.prototype.addPopup = function (modal, eChild, closeOnEsc, closedCallback, click) {\n var _this = this;\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (!eDocument) {\n console.warn('ag-grid: could not find the document, document is empty');\n return function () {\n };\n }\n eChild.style.top = '0px';\n eChild.style.left = '0px';\n var ePopupParent = this.getPopupParent();\n var popupAlreadyShown = utils_1._.isVisible(eChild);\n if (popupAlreadyShown && ePopupParent.contains(eChild)) {\n return function () { };\n }\n // add env CSS class to child, in case user provided a popup parent, which means\n // theme class may be missing\n var eWrapper = document.createElement('div');\n var theme = this.environment.getTheme();\n if (theme) {\n utils_1._.addCssClass(eWrapper, theme);\n }\n eWrapper.appendChild(eChild);\n ePopupParent.appendChild(eWrapper);\n this.activePopupElements.push(eChild);\n var popupHidden = false;\n var hidePopupOnKeyboardEvent = function (event) {\n var key = event.which || event.keyCode;\n if (key === constants_1.Constants.KEY_ESCAPE) {\n hidePopup(null);\n }\n };\n var hidePopupOnMouseEvent = function (event) {\n hidePopup(event);\n };\n var hidePopupOnTouchEvent = function (event) {\n hidePopup(null, event);\n };\n var hidePopup = function (mouseEvent, touchEvent) {\n // we don't hide popup if the event was on the child, or any\n // children of this child\n if (_this.isEventFromCurrentPopup(mouseEvent, touchEvent, eChild)) {\n return;\n }\n // if the event to close is actually the open event, then ignore it\n if (_this.isEventSameChainAsOriginalEvent(click, mouseEvent, touchEvent)) {\n return;\n }\n // this method should only be called once. the client can have different\n // paths, each one wanting to close, so this method may be called multiple times.\n if (popupHidden) {\n return;\n }\n popupHidden = true;\n ePopupParent.removeChild(eWrapper);\n utils_1._.removeFromArray(_this.activePopupElements, eChild);\n eDocument.removeEventListener('keydown', hidePopupOnKeyboardEvent);\n eDocument.removeEventListener('click', hidePopupOnMouseEvent);\n eDocument.removeEventListener('touchstart', hidePopupOnTouchEvent);\n eDocument.removeEventListener('contextmenu', hidePopupOnMouseEvent);\n _this.eventService.removeEventListener(events_1.Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n if (closedCallback) {\n closedCallback();\n }\n };\n // if we add these listeners now, then the current mouse\n // click will be included, which we don't want\n window.setTimeout(function () {\n if (closeOnEsc) {\n eDocument.addEventListener('keydown', hidePopupOnKeyboardEvent);\n }\n if (modal) {\n eDocument.addEventListener('click', hidePopupOnMouseEvent);\n _this.eventService.addEventListener(events_1.Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n eDocument.addEventListener('touchstart', hidePopupOnTouchEvent);\n eDocument.addEventListener('contextmenu', hidePopupOnMouseEvent);\n }\n }, 0);\n return hidePopup;\n };\n PopupService.prototype.isEventFromCurrentPopup = function (mouseEvent, touchEvent, eChild) {\n var event = mouseEvent ? mouseEvent : touchEvent;\n if (event) {\n var indexOfThisChild = this.activePopupElements.indexOf(eChild);\n for (var i = indexOfThisChild; i < this.activePopupElements.length; i++) {\n var element = this.activePopupElements[i];\n if (utils_1._.isElementInEventPath(element, event)) {\n return true;\n }\n }\n // if the user did not write their own Custom Element to be rendered as popup\n // and this component has additional popup element, they should have the\n // `ag-custom-component-popup` class to be detected as part of the Custom Component\n var el = event.target;\n while (el && el != document.body) {\n if (el.classList.contains('ag-custom-component-popup') || el.parentElement === null) {\n return true;\n }\n el = el.parentElement;\n }\n }\n return false;\n };\n // in some browsers, the context menu event can be fired before the click event, which means\n // the context menu event could open the popup, but then the click event closes it straight away.\n PopupService.prototype.isEventSameChainAsOriginalEvent = function (originalClick, mouseEvent, touchEvent) {\n // we check the coordinates of the event, to see if it's the same event. there is a 1 / 1000 chance that\n // the event is a different event, however that is an edge case that is not very relevant (the user clicking\n // twice on the same location isn't a normal path).\n // event could be mouse event or touch event.\n var mouseEventOrTouch = null;\n if (mouseEvent) {\n // mouse event can be used direction, it has coordinates\n mouseEventOrTouch = mouseEvent;\n }\n else if (touchEvent) {\n // touch event doesn't have coordinates, need it's touch object\n mouseEventOrTouch = touchEvent.touches[0];\n }\n if (mouseEventOrTouch && originalClick) {\n // for x, allow 4px margin, to cover iPads, where touch (which opens menu) is followed\n // by browser click (when you life finger up, touch is interrupted as click in browser)\n var screenX_1 = mouseEvent ? mouseEvent.screenX : 0;\n var screenY_1 = mouseEvent ? mouseEvent.screenY : 0;\n var xMatch = Math.abs(originalClick.screenX - screenX_1) < 5;\n var yMatch = Math.abs(originalClick.screenY - screenY_1) < 5;\n if (xMatch && yMatch) {\n return true;\n }\n }\n return false;\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], PopupService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('environment'),\n __metadata(\"design:type\", environment_1.Environment)\n ], PopupService.prototype, \"environment\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], PopupService.prototype, \"eventService\", void 0);\n PopupService = __decorate([\n context_1.Bean('popupService')\n ], PopupService);\n return PopupService;\n}());\nexports.PopupService = PopupService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../widgets/component\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar utils_1 = require(\"../utils\");\nvar FilterConditionType;\n(function (FilterConditionType) {\n FilterConditionType[FilterConditionType[\"MAIN\"] = 0] = \"MAIN\";\n FilterConditionType[FilterConditionType[\"CONDITION\"] = 1] = \"CONDITION\";\n})(FilterConditionType = exports.FilterConditionType || (exports.FilterConditionType = {}));\nvar DEFAULT_TRANSLATIONS = {\n loadingOoo: 'Loading...',\n empty: 'Choose One',\n equals: 'Equals',\n notEqual: 'Not equal',\n lessThan: 'Less than',\n greaterThan: 'Greater than',\n inRange: 'In range',\n lessThanOrEqual: 'Less than or equals',\n greaterThanOrEqual: 'Greater than or equals',\n filterOoo: 'Filter...',\n contains: 'Contains',\n notContains: 'Not contains',\n startsWith: 'Starts with',\n endsWith: 'Ends with',\n searchOoo: 'Search...',\n selectAll: 'Select All',\n applyFilter: 'Apply Filter',\n clearFilter: 'Clear Filter',\n andCondition: 'AND',\n orCondition: 'OR'\n};\n/**\n * T(ype) The type of this filter. ie in DateFilter T=Date\n * P(arams) The params that this filter can take\n * M(model getModel/setModel) The object that this filter serializes to\n * F Floating filter params\n *\n * Contains common logic to ALL filters.. Translation, apply and clear button\n * get/setModel context wiring....\n */\nvar BaseFilter = /** @class */ (function (_super) {\n __extends(BaseFilter, _super);\n function BaseFilter() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.customFilterOptions = {};\n return _this;\n }\n BaseFilter.prototype.init = function (params) {\n var _this = this;\n this.filterParams = params;\n this.defaultFilter = this.filterParams.defaultOption;\n // strip out incorrectly defined FilterOptionDefs\n if (params.filterOptions) {\n params.filterOptions.forEach(function (filterOption) {\n if (typeof filterOption === 'string') {\n return;\n }\n if (!filterOption.displayKey) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'displayKey'\");\n return;\n }\n if (!filterOption.displayName) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'displayName'\");\n return;\n }\n if (!filterOption.test) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'test'\");\n return;\n }\n _this.customFilterOptions[filterOption.displayKey] = filterOption;\n });\n }\n if (this.filterParams.filterOptions && !this.defaultFilter) {\n var firstFilterOption = this.filterParams.filterOptions[0];\n if (typeof firstFilterOption === 'string') {\n this.defaultFilter = firstFilterOption;\n }\n else if (firstFilterOption.displayKey) {\n this.defaultFilter = firstFilterOption.displayKey;\n }\n else {\n console.warn(\"ag-Grid: invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'\");\n }\n }\n this.customInit();\n this.selectedFilter = this.defaultFilter;\n this.selectedFilterCondition = this.defaultFilter;\n this.clearActive = params.clearButton === true;\n //Allowing for old param property apply, even though is not advertised through the interface\n this.applyActive = ((params.applyButton === true) || (params.apply === true));\n this.newRowsActionKeep = params.newRowsAction === 'keep';\n this.setTemplate(this.generateTemplate());\n utils_1._.setVisible(this.eApplyButton, this.applyActive);\n if (this.applyActive) {\n this.addDestroyableEventListener(this.eApplyButton, \"click\", this.filterParams.filterChangedCallback);\n }\n utils_1._.setVisible(this.eClearButton, this.clearActive);\n if (this.clearActive) {\n this.addDestroyableEventListener(this.eClearButton, \"click\", this.onClearButton.bind(this));\n }\n var anyButtonVisible = this.applyActive || this.clearActive;\n utils_1._.setVisible(this.eButtonsPanel, anyButtonVisible);\n this.initialiseFilterBodyUi(FilterConditionType.MAIN);\n this.refreshFilterBodyUi(FilterConditionType.MAIN);\n };\n BaseFilter.prototype.onClearButton = function () {\n this.setModel(null);\n this.onFilterChanged();\n };\n BaseFilter.prototype.floatingFilter = function (from) {\n if (from !== '') {\n var model = this.modelFromFloatingFilter(from);\n this.setModel(model);\n }\n else {\n this.resetState();\n }\n this.onFilterChanged();\n };\n BaseFilter.prototype.onNewRowsLoaded = function () {\n if (!this.newRowsActionKeep) {\n this.resetState();\n }\n };\n BaseFilter.prototype.getModel = function () {\n if (this.isFilterActive()) {\n if (!this.isFilterConditionActive(FilterConditionType.CONDITION)) {\n return this.serialize(FilterConditionType.MAIN);\n }\n else {\n return {\n condition1: this.serialize(FilterConditionType.MAIN),\n condition2: this.serialize(FilterConditionType.CONDITION),\n operator: this.conditionValue\n };\n }\n }\n else {\n return null;\n }\n };\n BaseFilter.prototype.getNullableModel = function () {\n if (!this.isFilterConditionActive(FilterConditionType.CONDITION)) {\n return this.serialize(FilterConditionType.MAIN);\n }\n else {\n return {\n condition1: this.serialize(FilterConditionType.MAIN),\n condition2: this.serialize(FilterConditionType.CONDITION),\n operator: this.conditionValue\n };\n }\n };\n BaseFilter.prototype.setModel = function (model) {\n if (model) {\n if (!model.operator) {\n this.resetState();\n this.parse(model, FilterConditionType.MAIN);\n }\n else {\n var asCombinedFilter = model;\n this.parse((asCombinedFilter).condition1, FilterConditionType.MAIN);\n this.parse((asCombinedFilter).condition2, FilterConditionType.CONDITION);\n this.conditionValue = asCombinedFilter.operator;\n }\n }\n else {\n this.resetState();\n }\n this.redrawCondition();\n this.refreshFilterBodyUi(FilterConditionType.MAIN);\n this.refreshFilterBodyUi(FilterConditionType.CONDITION);\n };\n BaseFilter.prototype.doOnFilterChanged = function (applyNow) {\n if (applyNow === void 0) { applyNow = false; }\n this.filterParams.filterModifiedCallback();\n var requiresApplyAndIsApplying = this.applyActive && applyNow;\n var notRequiresApply = !this.applyActive;\n var shouldFilter = notRequiresApply || requiresApplyAndIsApplying;\n if (shouldFilter) {\n this.filterParams.filterChangedCallback();\n }\n this.refreshFilterBodyUi(FilterConditionType.MAIN);\n this.refreshFilterBodyUi(FilterConditionType.CONDITION);\n return shouldFilter;\n };\n BaseFilter.prototype.onFilterChanged = function (applyNow) {\n if (applyNow === void 0) { applyNow = false; }\n this.doOnFilterChanged(applyNow);\n this.redrawCondition();\n this.refreshFilterBodyUi(FilterConditionType.MAIN);\n this.refreshFilterBodyUi(FilterConditionType.CONDITION);\n };\n BaseFilter.prototype.redrawCondition = function () {\n var _this = this;\n var filterCondition = this.eFilterBodyWrapper.querySelector('.ag-filter-condition');\n if (!filterCondition && this.isFilterActive() && this.acceptsBooleanLogic()) {\n this.eConditionWrapper = utils_1._.loadTemplate(this.createConditionTemplate(FilterConditionType.CONDITION));\n this.eFilterBodyWrapper.appendChild(this.eConditionWrapper);\n this.wireQuerySelectors();\n var _a = this.refreshOperatorUi(), andButton = _a.andButton, orButton = _a.orButton;\n this.addDestroyableEventListener(andButton, 'change', function () {\n _this.conditionValue = 'AND';\n _this.onFilterChanged();\n });\n this.addDestroyableEventListener(orButton, 'change', function () {\n _this.conditionValue = 'OR';\n _this.onFilterChanged();\n });\n this.initialiseFilterBodyUi(FilterConditionType.CONDITION);\n }\n else if (filterCondition && !this.isFilterActive()) {\n // reset condition filter state\n this.conditionValue = 'AND';\n this.resetState(true);\n this.eFilterBodyWrapper.removeChild(this.eConditionWrapper);\n this.eConditionWrapper = null;\n }\n else {\n this.refreshFilterBodyUi(FilterConditionType.CONDITION);\n if (this.eConditionWrapper) {\n this.refreshOperatorUi();\n }\n }\n };\n BaseFilter.prototype.refreshOperatorUi = function () {\n var andButton = this.eConditionWrapper.querySelector('.and');\n var orButton = this.eConditionWrapper.querySelector('.or');\n this.conditionValue = this.conditionValue == null ? 'AND' : this.conditionValue;\n andButton.checked = this.conditionValue === 'AND';\n orButton.checked = this.conditionValue === 'OR';\n return { andButton: andButton, orButton: orButton };\n };\n BaseFilter.prototype.onFloatingFilterChanged = function (change) {\n //It has to be of the type FloatingFilterWithApplyChange if it gets here\n var casted = change;\n if (casted == null) {\n this.setModel(null);\n }\n else if (!this.isFilterConditionActive(FilterConditionType.CONDITION)) {\n this.setModel(casted ? casted.model : null);\n }\n else {\n var combinedFilter = {\n condition1: casted.model,\n condition2: this.serialize(FilterConditionType.CONDITION),\n operator: this.conditionValue\n };\n this.setModel(combinedFilter);\n }\n return this.doOnFilterChanged(casted ? casted.apply : false);\n };\n BaseFilter.prototype.generateFilterHeader = function (type) {\n return '';\n };\n BaseFilter.prototype.generateTemplate = function () {\n var translate = this.translate.bind(this);\n var mainConditionBody = this.createConditionBody(FilterConditionType.MAIN);\n var bodyWithBooleanLogic = !this.acceptsBooleanLogic() ?\n mainConditionBody :\n this.wrapCondition(mainConditionBody);\n return \"
\\n
\" + bodyWithBooleanLogic + \"
\\n
\\n \\n \\n
\\n
\";\n };\n BaseFilter.prototype.acceptsBooleanLogic = function () {\n return false;\n };\n BaseFilter.prototype.wrapCondition = function (mainCondition) {\n if (!this.isFilterActive()) {\n return mainCondition;\n }\n return \"\" + mainCondition + this.createConditionTemplate(FilterConditionType.CONDITION);\n };\n BaseFilter.prototype.createConditionTemplate = function (type) {\n return \"
\\n \\n \\n
\" + this.createConditionBody(type) + \"
\\n
\";\n };\n BaseFilter.prototype.createConditionBody = function (type) {\n var body = this.bodyTemplate(type);\n return this.generateFilterHeader(type) + body;\n };\n BaseFilter.prototype.translate = function (toTranslate) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var defaultTranslation = DEFAULT_TRANSLATIONS[toTranslate];\n if (!defaultTranslation && this.customFilterOptions[toTranslate]) {\n defaultTranslation = this.customFilterOptions[toTranslate].displayName;\n }\n return translate(toTranslate, defaultTranslation);\n };\n BaseFilter.prototype.getDebounceMs = function (filterParams) {\n if (this.applyActive) {\n if (filterParams.debounceMs != null) {\n console.warn('ag-Grid: debounceMs is ignored when applyButton = true');\n }\n return 0;\n }\n return filterParams.debounceMs != null ? filterParams.debounceMs : 500;\n };\n BaseFilter.prototype.doesFilterHaveHiddenInput = function (filterType) {\n var customFilterOption = this.customFilterOptions[filterType];\n return customFilterOption && customFilterOption.hideFilterInput;\n };\n BaseFilter.EMPTY = 'empty';\n BaseFilter.EQUALS = 'equals';\n BaseFilter.NOT_EQUAL = 'notEqual';\n BaseFilter.LESS_THAN = 'lessThan';\n BaseFilter.LESS_THAN_OR_EQUAL = 'lessThanOrEqual';\n BaseFilter.GREATER_THAN = 'greaterThan';\n BaseFilter.GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';\n BaseFilter.IN_RANGE = 'inRange';\n BaseFilter.CONTAINS = 'contains'; //1;\n BaseFilter.NOT_CONTAINS = 'notContains'; //1;\n BaseFilter.STARTS_WITH = 'startsWith'; //4;\n BaseFilter.ENDS_WITH = 'endsWith'; //5;\n __decorate([\n componentAnnotations_1.QuerySelector('#applyPanel'),\n __metadata(\"design:type\", HTMLElement)\n ], BaseFilter.prototype, \"eButtonsPanel\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('.ag-filter-body-wrapper'),\n __metadata(\"design:type\", HTMLElement)\n ], BaseFilter.prototype, \"eFilterBodyWrapper\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#applyButton'),\n __metadata(\"design:type\", HTMLElement)\n ], BaseFilter.prototype, \"eApplyButton\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#clearButton'),\n __metadata(\"design:type\", HTMLElement)\n ], BaseFilter.prototype, \"eClearButton\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], BaseFilter.prototype, \"gridOptionsWrapper\", void 0);\n return BaseFilter;\n}(component_1.Component));\nexports.BaseFilter = BaseFilter;\n/**\n * Every filter with a dropdown where the user can specify a comparing type against the filter values\n */\nvar ComparableBaseFilter = /** @class */ (function (_super) {\n __extends(ComparableBaseFilter, _super);\n function ComparableBaseFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComparableBaseFilter.prototype.doesFilterPass = function (params) {\n var mainFilterResult = this.individualFilterPasses(params, FilterConditionType.MAIN);\n if (this.eTypeConditionSelector == null) {\n return mainFilterResult;\n }\n var auxFilterResult = this.individualFilterPasses(params, FilterConditionType.CONDITION);\n return this.conditionValue === 'AND' ? mainFilterResult && auxFilterResult : mainFilterResult || auxFilterResult;\n };\n ComparableBaseFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.suppressAndOrCondition = params.suppressAndOrCondition;\n };\n ComparableBaseFilter.prototype.customInit = function () {\n if (!this.defaultFilter) {\n this.defaultFilter = this.getDefaultType();\n }\n };\n ComparableBaseFilter.prototype.acceptsBooleanLogic = function () {\n return this.suppressAndOrCondition !== true;\n };\n ComparableBaseFilter.prototype.generateFilterHeader = function (type) {\n var _this = this;\n var defaultFilterTypes = this.getApplicableFilterTypes();\n var restrictedFilterTypes = this.filterParams.filterOptions;\n var actualFilterTypes = restrictedFilterTypes ? restrictedFilterTypes : defaultFilterTypes;\n var optionsHtml = actualFilterTypes.map(function (filter) {\n var filterName = (typeof filter === 'string') ? filter : filter.displayKey;\n var localeFilterName = _this.translate(filterName);\n return \"\";\n });\n var readOnly = optionsHtml.length == 1 ? 'disabled' : '';\n var id = type == FilterConditionType.MAIN ? 'filterType' : 'filterConditionType';\n return optionsHtml.length <= 0 ?\n '' :\n \"
\\n \\n
\";\n };\n ComparableBaseFilter.prototype.initialiseFilterBodyUi = function (type) {\n var _this = this;\n if (type === FilterConditionType.MAIN) {\n this.setFilterType(this.selectedFilter, type);\n this.addDestroyableEventListener(this.eTypeSelector, \"change\", function () { return _this.onFilterTypeChanged(type); });\n }\n else {\n this.setFilterType(this.selectedFilterCondition, type);\n this.addDestroyableEventListener(this.eTypeConditionSelector, \"change\", function () { return _this.onFilterTypeChanged(type); });\n }\n };\n ComparableBaseFilter.prototype.onFilterTypeChanged = function (type) {\n var prevSelectedFilter = this.selectedFilter;\n if (type === FilterConditionType.MAIN) {\n this.selectedFilter = this.eTypeSelector.value;\n }\n else {\n this.selectedFilterCondition = this.eTypeConditionSelector.value;\n }\n this.refreshFilterBodyUi(type);\n var prevSelectedFilterHadNoInput = this.doesFilterHaveHiddenInput(prevSelectedFilter);\n // only fire 'onFilterChanged' event if filter is active, as in it contains a filter value, or if the previously\n // selected filter didn't require a value, i.e. if custom filter has 'hideFilterInputField = true'\n if (this.isFilterActive() || prevSelectedFilterHadNoInput) {\n // reset when switching back to the empty filter to remove conditional filter\n if (this.selectedFilter === BaseFilter.EMPTY) {\n this.resetState();\n }\n this.onFilterChanged();\n }\n };\n ComparableBaseFilter.prototype.isFilterActive = function () {\n // the main selected filter is always active when there is no input field\n if (this.doesFilterHaveHiddenInput(this.selectedFilter)) {\n return true;\n }\n var rawFilterValues = this.filterValues(FilterConditionType.MAIN);\n if (rawFilterValues && this.selectedFilter === BaseFilter.IN_RANGE) {\n var filterValueArray = rawFilterValues;\n return filterValueArray[0] != null && filterValueArray[1] != null;\n }\n else {\n return rawFilterValues != null;\n }\n };\n ComparableBaseFilter.prototype.setFilterType = function (filterType, type) {\n if (type === FilterConditionType.MAIN) {\n this.selectedFilter = filterType;\n if (!this.eTypeSelector) {\n return;\n }\n this.eTypeSelector.value = filterType;\n }\n else {\n this.selectedFilterCondition = filterType;\n if (!this.eTypeConditionSelector) {\n return;\n }\n this.eTypeConditionSelector.value = filterType;\n }\n };\n ComparableBaseFilter.prototype.isFilterConditionActive = function (type) {\n return this.filterValues(type) != null;\n };\n __decorate([\n componentAnnotations_1.QuerySelector('#filterType'),\n __metadata(\"design:type\", HTMLSelectElement)\n ], ComparableBaseFilter.prototype, \"eTypeSelector\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#filterConditionType'),\n __metadata(\"design:type\", HTMLSelectElement)\n ], ComparableBaseFilter.prototype, \"eTypeConditionSelector\", void 0);\n return ComparableBaseFilter;\n}(BaseFilter));\nexports.ComparableBaseFilter = ComparableBaseFilter;\n/**\n * Comparable filter with scalar underlying values (ie numbers and dates. Strings are not scalar so have to extend\n * ComparableBaseFilter)\n */\nvar ScalarBaseFilter = /** @class */ (function (_super) {\n __extends(ScalarBaseFilter, _super);\n function ScalarBaseFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ScalarBaseFilter.prototype.nullComparator = function (type) {\n var _this = this;\n return function (filterValue, gridValue) {\n if (gridValue == null) {\n var nullValue = _this.translateNull(type);\n if (_this.selectedFilter === BaseFilter.EMPTY) {\n return 0;\n }\n if (_this.selectedFilter === BaseFilter.EQUALS) {\n return nullValue ? 0 : 1;\n }\n if (_this.selectedFilter === BaseFilter.GREATER_THAN) {\n return nullValue ? 1 : -1;\n }\n if (_this.selectedFilter === BaseFilter.GREATER_THAN_OR_EQUAL) {\n return nullValue ? 1 : -1;\n }\n if (_this.selectedFilter === BaseFilter.LESS_THAN_OR_EQUAL) {\n return nullValue ? -1 : 1;\n }\n if (_this.selectedFilter === BaseFilter.LESS_THAN) {\n return nullValue ? -1 : 1;\n }\n if (_this.selectedFilter === BaseFilter.NOT_EQUAL) {\n return nullValue ? 1 : 0;\n }\n }\n var actualComparator = _this.comparator();\n return actualComparator(filterValue, gridValue);\n };\n };\n ScalarBaseFilter.prototype.getDefaultType = function () {\n return BaseFilter.EQUALS;\n };\n ScalarBaseFilter.prototype.translateNull = function (type) {\n var reducedType = type.indexOf('greater') > -1 ? 'greaterThan' :\n type.indexOf('lessThan') > -1 ? 'lessThan' :\n 'equals';\n if (this.filterParams.nullComparator && this.filterParams.nullComparator[reducedType]) {\n return this.filterParams.nullComparator[reducedType];\n }\n return ScalarBaseFilter.DEFAULT_NULL_COMPARATOR[reducedType];\n };\n ScalarBaseFilter.prototype.individualFilterPasses = function (params, type) {\n return this.doIndividualFilterPasses(params, type, type === FilterConditionType.MAIN ? this.selectedFilter : this.selectedFilterCondition);\n };\n ScalarBaseFilter.prototype.doIndividualFilterPasses = function (params, type, filter) {\n var cellValue = this.filterParams.valueGetter(params.node);\n var rawFilterValues = this.filterValues(type);\n var filterValue = Array.isArray(rawFilterValues) ? rawFilterValues[0] : rawFilterValues;\n var customFilterOption = this.customFilterOptions[filter];\n if (customFilterOption) {\n // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden\n if (filterValue != null || customFilterOption.hideFilterInput) {\n return customFilterOption.test(filterValue, cellValue);\n }\n }\n if (filterValue == null) {\n return type === FilterConditionType.MAIN ? true : this.conditionValue === 'AND';\n }\n var comparator = this.nullComparator(filter);\n var compareResult = comparator(filterValue, cellValue);\n if (filter === BaseFilter.EMPTY) {\n return false;\n }\n if (filter === BaseFilter.EQUALS) {\n return compareResult === 0;\n }\n if (filter === BaseFilter.GREATER_THAN) {\n return compareResult > 0;\n }\n if (filter === BaseFilter.GREATER_THAN_OR_EQUAL) {\n return compareResult >= 0;\n }\n if (filter === BaseFilter.LESS_THAN_OR_EQUAL) {\n return compareResult <= 0;\n }\n if (filter === BaseFilter.LESS_THAN) {\n return compareResult < 0;\n }\n if (filter === BaseFilter.NOT_EQUAL) {\n return compareResult != 0;\n }\n //From now on the type is a range and rawFilterValues must be an array!\n var compareToResult = comparator(rawFilterValues[1], cellValue);\n if (filter === BaseFilter.IN_RANGE) {\n if (!this.filterParams.inRangeInclusive) {\n return compareResult > 0 && compareToResult < 0;\n }\n else {\n return compareResult >= 0 && compareToResult <= 0;\n }\n }\n throw new Error('Unexpected type of filter: ' + filter);\n };\n ScalarBaseFilter.DEFAULT_NULL_COMPARATOR = {\n equals: false,\n lessThan: false,\n greaterThan: false\n };\n return ScalarBaseFilter;\n}(ComparableBaseFilter));\nexports.ScalarBaseFilter = ScalarBaseFilter;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar utils_1 = require(\"../utils\");\n/**\n * There are many instances of this component covering each of the areas a row can be entered\n * eg body, pinned left, fullWidth. The component differs from others in that it's given the\n * elements, there is no template. All of the elements are part of the GridPanel.\n */\nvar RowContainerComponent = /** @class */ (function () {\n function RowContainerComponent(params) {\n this.childCount = 0;\n this.rowTemplatesToAdd = [];\n this.afterGuiAttachedCallbacks = [];\n // this is to cater for a 'strange behaviour' where when a panel is made visible, it is firing a scroll\n // event which we want to ignore. see gridPanel.onAnyBodyScroll()\n this.lastMadeVisibleTime = 0;\n this.eContainer = params.eContainer;\n this.eViewport = params.eViewport;\n if (params.eWrapper) {\n this.eWrapper = params.eWrapper;\n }\n this.hideWhenNoChildren = params.hideWhenNoChildren;\n }\n RowContainerComponent.prototype.setVerticalScrollPosition = function (verticalScrollPosition) {\n this.scrollTop = verticalScrollPosition;\n };\n RowContainerComponent.prototype.postConstruct = function () {\n this.checkDomOrder();\n this.checkVisibility();\n this.gridOptionsWrapper.addEventListener(gridOptionsWrapper_1.GridOptionsWrapper.PROP_DOM_LAYOUT, this.checkDomOrder.bind(this));\n };\n RowContainerComponent.prototype.checkDomOrder = function () {\n this.domOrder = this.gridOptionsWrapper.isEnsureDomOrder();\n };\n RowContainerComponent.prototype.getRowElement = function (compId) {\n return this.eContainer.querySelector(\"[comp-id=\\\"\" + compId + \"\\\"]\");\n };\n RowContainerComponent.prototype.setHeight = function (height) {\n if (height == null) {\n this.eContainer.style.height = '';\n return;\n }\n this.eContainer.style.height = height + \"px\";\n if (this.eWrapper) {\n this.eWrapper.style.height = height + \"px\";\n }\n };\n RowContainerComponent.prototype.flushRowTemplates = function () {\n // if doing dom order, then rowTemplates will be empty,\n // or if no rows added since last time also empty.\n if (this.rowTemplatesToAdd.length !== 0) {\n var htmlToAdd = this.rowTemplatesToAdd.join('');\n utils_1._.appendHtml(this.eContainer, htmlToAdd);\n this.rowTemplatesToAdd.length = 0;\n }\n // this only empty if no rows since last time, as when\n // doing dom order, we still have callbacks to process\n this.afterGuiAttachedCallbacks.forEach(function (func) { return func(); });\n this.afterGuiAttachedCallbacks.length = 0;\n this.lastPlacedElement = null;\n };\n RowContainerComponent.prototype.appendRowTemplate = function (rowTemplate, callback) {\n if (this.domOrder) {\n this.lastPlacedElement = utils_1._.insertTemplateWithDomOrder(this.eContainer, rowTemplate, this.lastPlacedElement);\n }\n else {\n this.rowTemplatesToAdd.push(rowTemplate);\n }\n this.afterGuiAttachedCallbacks.push(callback);\n // it is important we put items in in order, so that when we open a row group,\n // the new rows are inserted after the opened group, but before the rows below.\n // that way, the rows below are over the new rows (as dom renders last in dom over\n // items previous in dom), otherwise the child rows would cover the row below and\n // that meant the user doesn't see the rows below slide away.\n this.childCount++;\n this.checkVisibility();\n };\n RowContainerComponent.prototype.ensureDomOrder = function (eRow) {\n if (this.domOrder) {\n utils_1._.ensureDomOrder(this.eContainer, eRow, this.lastPlacedElement);\n this.lastPlacedElement = eRow;\n }\n };\n RowContainerComponent.prototype.removeRowElement = function (eRow) {\n this.eContainer.removeChild(eRow);\n this.childCount--;\n this.checkVisibility();\n };\n RowContainerComponent.prototype.checkVisibility = function () {\n if (!this.hideWhenNoChildren) {\n return;\n }\n var eGui = this.eViewport ? this.eViewport : this.eContainer;\n var visible = this.childCount > 0;\n if (this.visible !== visible) {\n this.visible = visible;\n this.lastMadeVisibleTime = new Date().getTime();\n utils_1._.setVisible(eGui, visible);\n // if we are showing the viewport, then the scroll is always zero,\n // so we need to align with the other sections (ie if this is full\n // width container, and first time showing a full width row, we need to\n // scroll it so full width rows are show in right place alongside the\n // body rows). without this, there was an issue with 'loading rows' for\n // server side row model, as loading rows are full width, and they were\n // not getting displayed in the right location when rows were expanded.\n if (visible && this.eViewport) {\n this.eViewport.scrollTop = this.scrollTop;\n }\n }\n };\n RowContainerComponent.prototype.isMadeVisibleRecently = function () {\n var now = new Date().getTime();\n var millisSinceVisible = now - this.lastMadeVisibleTime;\n return millisSinceVisible < 500;\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], RowContainerComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], RowContainerComponent.prototype, \"postConstruct\", null);\n return RowContainerComponent;\n}());\nexports.RowContainerComponent = RowContainerComponent;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rowNodeBlock_1 = require(\"./rowNodeBlock\");\nvar logger_1 = require(\"../../logger\");\nvar context_1 = require(\"../../context/context\");\nvar utils_1 = require(\"../../utils\");\nvar RowNodeBlockLoader = /** @class */ (function () {\n function RowNodeBlockLoader(maxConcurrentRequests, blockLoadDebounceMillis) {\n this.activeBlockLoadsCount = 0;\n this.blocks = [];\n this.active = true;\n this.maxConcurrentRequests = maxConcurrentRequests;\n if (blockLoadDebounceMillis && blockLoadDebounceMillis > 0) {\n this.checkBlockToLoadDebounce = utils_1._.debounce(this.performCheckBlocksToLoad.bind(this), blockLoadDebounceMillis);\n }\n }\n RowNodeBlockLoader.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('RowNodeBlockLoader');\n };\n RowNodeBlockLoader.prototype.addBlock = function (block) {\n this.blocks.push(block);\n };\n RowNodeBlockLoader.prototype.removeBlock = function (block) {\n utils_1._.removeFromArray(this.blocks, block);\n };\n RowNodeBlockLoader.prototype.destroy = function () {\n this.active = false;\n };\n RowNodeBlockLoader.prototype.loadComplete = function () {\n this.activeBlockLoadsCount--;\n };\n RowNodeBlockLoader.prototype.checkBlockToLoad = function () {\n if (this.checkBlockToLoadDebounce) {\n this.checkBlockToLoadDebounce();\n }\n else {\n this.performCheckBlocksToLoad();\n }\n };\n RowNodeBlockLoader.prototype.performCheckBlocksToLoad = function () {\n if (!this.active) {\n return;\n }\n this.printCacheStatus();\n if (this.activeBlockLoadsCount >= this.maxConcurrentRequests) {\n this.logger.log(\"checkBlockToLoad: max loads exceeded\");\n return;\n }\n var blockToLoad = null;\n this.blocks.forEach(function (block) {\n if (block.getState() === rowNodeBlock_1.RowNodeBlock.STATE_DIRTY) {\n blockToLoad = block;\n }\n });\n if (blockToLoad) {\n blockToLoad.load();\n this.activeBlockLoadsCount++;\n this.logger.log(\"checkBlockToLoad: loading page \" + blockToLoad.getBlockNumber());\n this.printCacheStatus();\n }\n else {\n this.logger.log(\"checkBlockToLoad: no pages to load\");\n }\n };\n RowNodeBlockLoader.prototype.getBlockState = function () {\n var result = {};\n this.blocks.forEach(function (block) {\n var nodeIdPrefix = block.getNodeIdPrefix();\n var stateItem = {\n blockNumber: block.getBlockNumber(),\n startRow: block.getStartRow(),\n endRow: block.getEndRow(),\n pageStatus: block.getState()\n };\n if (utils_1._.exists(nodeIdPrefix)) {\n result[nodeIdPrefix + block.getBlockNumber()] = stateItem;\n }\n else {\n result[block.getBlockNumber()] = stateItem;\n }\n });\n return result;\n };\n RowNodeBlockLoader.prototype.printCacheStatus = function () {\n if (this.logger.isLogging()) {\n this.logger.log(\"printCacheStatus: activePageLoadsCount = \" + this.activeBlockLoadsCount + \",\"\n + (\" blocks = \" + JSON.stringify(this.getBlockState())));\n }\n };\n __decorate([\n __param(0, context_1.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], RowNodeBlockLoader.prototype, \"setBeans\", null);\n return RowNodeBlockLoader;\n}());\nexports.RowNodeBlockLoader = RowNodeBlockLoader;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar eventService_1 = require(\"../../eventService\");\nvar events_1 = require(\"../../events\");\nvar rowRenderer_1 = require(\"../../rendering/rowRenderer\");\nvar paginationProxy_1 = require(\"../paginationProxy\");\nvar utils_1 = require(\"../../utils\");\nvar PaginationComp = /** @class */ (function (_super) {\n __extends(PaginationComp, _super);\n function PaginationComp() {\n return _super.call(this) || this;\n }\n PaginationComp.prototype.postConstruct = function () {\n this.setTemplate(this.getTemplate());\n var isPaging = this.gridOptionsWrapper.isPagination();\n var paginationPanelEnabled = isPaging && !this.gridOptionsWrapper.isSuppressPaginationPanel();\n if (!paginationPanelEnabled) {\n this.setVisible(false);\n return;\n }\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n this.addDestroyableEventListener(this.btFirst, 'click', this.onBtFirst.bind(this));\n this.addDestroyableEventListener(this.btLast, 'click', this.onBtLast.bind(this));\n this.addDestroyableEventListener(this.btNext, 'click', this.onBtNext.bind(this));\n this.addDestroyableEventListener(this.btPrevious, 'click', this.onBtPrevious.bind(this));\n this.onPaginationChanged();\n };\n PaginationComp.prototype.onPaginationChanged = function () {\n this.enableOrDisableButtons();\n this.updateRowLabels();\n this.setCurrentPageLabel();\n this.setTotalLabels();\n };\n PaginationComp.prototype.setCurrentPageLabel = function () {\n var pagesExist = this.paginationProxy.getTotalPages() > 0;\n var currentPage = this.paginationProxy.getCurrentPage();\n var toDisplay = pagesExist ? currentPage + 1 : 0;\n this.lbCurrent.innerHTML = this.formatNumber(toDisplay);\n };\n PaginationComp.prototype.formatNumber = function (value) {\n var userFunc = this.gridOptionsWrapper.getPaginationNumberFormatterFunc();\n if (userFunc) {\n return userFunc({ value: value });\n }\n else {\n return utils_1._.formatNumberCommas(value);\n }\n };\n PaginationComp.prototype.getTemplate = function () {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var strPage = localeTextFunc('page', 'Page');\n var strTo = localeTextFunc('to', 'to');\n var strOf = localeTextFunc('of', 'of');\n var strFirst = localeTextFunc('first', 'First');\n var strPrevious = localeTextFunc('previous', 'Previous');\n var strNext = localeTextFunc('next', 'Next');\n var strLast = localeTextFunc('last', 'Last');\n return \"
\\n \\n \" + strTo + \" \" + strOf + \" \\n \\n \\n \\n \\n \" + strPage + \" \" + strOf + \" \\n \\n \\n \\n
\";\n };\n PaginationComp.prototype.onBtNext = function () {\n this.paginationProxy.goToNextPage();\n };\n PaginationComp.prototype.onBtPrevious = function () {\n this.paginationProxy.goToPreviousPage();\n };\n PaginationComp.prototype.onBtFirst = function () {\n this.paginationProxy.goToFirstPage();\n };\n PaginationComp.prototype.onBtLast = function () {\n this.paginationProxy.goToLastPage();\n };\n PaginationComp.prototype.enableOrDisableButtons = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n var disablePreviousAndFirst = currentPage === 0;\n this.btPrevious.disabled = disablePreviousAndFirst;\n this.btFirst.disabled = disablePreviousAndFirst;\n var zeroPagesToDisplay = this.isZeroPagesToDisplay();\n var onLastPage = maxRowFound && currentPage === (totalPages - 1);\n var disableNext = onLastPage || zeroPagesToDisplay;\n this.btNext.disabled = disableNext;\n var disableLast = !maxRowFound || zeroPagesToDisplay || currentPage === (totalPages - 1);\n this.btLast.disabled = disableLast;\n };\n PaginationComp.prototype.updateRowLabels = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var pageSize = this.paginationProxy.getPageSize();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var rowCount = this.paginationProxy.isLastPageFound() ?\n this.paginationProxy.getTotalRowCount() : null;\n var startRow;\n var endRow;\n if (this.isZeroPagesToDisplay()) {\n startRow = 0;\n endRow = 0;\n }\n else {\n startRow = (pageSize * currentPage) + 1;\n endRow = startRow + pageSize - 1;\n if (maxRowFound && endRow > rowCount) {\n endRow = rowCount;\n }\n }\n this.lbFirstRowOnPage.innerHTML = this.formatNumber(startRow);\n this.lbLastRowOnPage.innerHTML = this.formatNumber(endRow);\n };\n PaginationComp.prototype.isZeroPagesToDisplay = function () {\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n return maxRowFound && totalPages === 0;\n };\n PaginationComp.prototype.setTotalLabels = function () {\n var lastPageFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n var rowCount = this.paginationProxy.isLastPageFound() ?\n this.paginationProxy.getTotalRowCount() : null;\n if (lastPageFound) {\n this.lbTotal.innerHTML = this.formatNumber(totalPages);\n this.lbRecordCount.innerHTML = this.formatNumber(rowCount);\n }\n else {\n var moreText = this.gridOptionsWrapper.getLocaleTextFunc()('more', 'more');\n this.lbTotal.innerHTML = moreText;\n this.lbRecordCount.innerHTML = moreText;\n }\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], PaginationComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], PaginationComp.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('paginationProxy'),\n __metadata(\"design:type\", paginationProxy_1.PaginationProxy)\n ], PaginationComp.prototype, \"paginationProxy\", void 0);\n __decorate([\n context_1.Autowired('rowRenderer'),\n __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n ], PaginationComp.prototype, \"rowRenderer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('btFirst'),\n __metadata(\"design:type\", HTMLButtonElement)\n ], PaginationComp.prototype, \"btFirst\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('btPrevious'),\n __metadata(\"design:type\", HTMLButtonElement)\n ], PaginationComp.prototype, \"btPrevious\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('btNext'),\n __metadata(\"design:type\", HTMLButtonElement)\n ], PaginationComp.prototype, \"btNext\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('btLast'),\n __metadata(\"design:type\", HTMLButtonElement)\n ], PaginationComp.prototype, \"btLast\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('lbRecordCount'),\n __metadata(\"design:type\", Object)\n ], PaginationComp.prototype, \"lbRecordCount\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('lbFirstRowOnPage'),\n __metadata(\"design:type\", Object)\n ], PaginationComp.prototype, \"lbFirstRowOnPage\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('lbLastRowOnPage'),\n __metadata(\"design:type\", Object)\n ], PaginationComp.prototype, \"lbLastRowOnPage\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eSummaryPanel'),\n __metadata(\"design:type\", Object)\n ], PaginationComp.prototype, \"eSummaryPanel\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('lbCurrent'),\n __metadata(\"design:type\", Object)\n ], PaginationComp.prototype, \"lbCurrent\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('lbTotal'),\n __metadata(\"design:type\", Object)\n ], PaginationComp.prototype, \"lbTotal\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], PaginationComp.prototype, \"postConstruct\", null);\n return PaginationComp;\n}(component_1.Component));\nexports.PaginationComp = PaginationComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar popupService_1 = require(\"./popupService\");\nvar userComponentFactory_1 = require(\"../components/framework/userComponentFactory\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar utils_1 = require(\"../utils\");\nvar TooltipManager = /** @class */ (function () {\n function TooltipManager() {\n this.DEFAULT_HIDE_TOOLTIP_TIMEOUT = 10000;\n this.MOUSEOUT_HIDE_TOOLTIP_TIMEOUT = 1000;\n this.MOUSEOVER_SHOW_TOOLTIP_TIMEOUT = 2000;\n this.HIDE_SHOW_ONLY = true;\n this.showTimeoutId = 0;\n this.hideTimeoutId = 0;\n // map of compId to [tooltip component, close function]\n this.registeredComponents = {};\n }\n TooltipManager.prototype.registerTooltip = function (targetCmp) {\n var _this = this;\n var el = targetCmp.getGui();\n var id = targetCmp.getCompId();\n targetCmp.addDestroyableEventListener(el, 'mouseover', function (e) { return _this.processMouseOver(e, targetCmp); });\n targetCmp.addDestroyableEventListener(el, 'mousemove', function (e) { return _this.processMouseMove(e); });\n targetCmp.addDestroyableEventListener(el, 'mousedown', this.hideTooltip.bind(this));\n targetCmp.addDestroyableEventListener(el, 'mouseout', this.processMouseOut.bind(this));\n this.registeredComponents[id] = { tooltipComp: undefined, destroyFunc: undefined };\n targetCmp.addDestroyFunc(function () { return _this.unregisterTooltip(targetCmp); });\n };\n TooltipManager.prototype.unregisterTooltip = function (targetCmp) {\n var id = targetCmp.getCompId();\n // hide the tooltip if it's being displayed while unregistering the component\n if (this.activeComponent === targetCmp) {\n this.hideTooltip();\n }\n delete this.registeredComponents[id];\n };\n TooltipManager.prototype.processMouseOver = function (e, targetCmp) {\n var delay = this.MOUSEOVER_SHOW_TOOLTIP_TIMEOUT;\n if (this.activeComponent) {\n // lastHoveredComponent will be the activeComponent when we are hovering\n // a component with many child elements like the grid header\n if (this.lastHoveredComponent === this.activeComponent) {\n return;\n }\n delay = 200;\n }\n else if (this.showTimeoutId && this.lastHoveredComponent === targetCmp) {\n return;\n }\n this.clearTimers(this.HIDE_SHOW_ONLY);\n // lastHoveredComponent will be the targetCmp when a click hid the tooltip\n // and the lastHoveredComponent has many child elements\n if (this.lastHoveredComponent === targetCmp) {\n return;\n }\n this.lastHoveredComponent = targetCmp;\n this.lastMouseEvent = e;\n this.showTimeoutId = window.setTimeout(this.showTooltip.bind(this), delay, e);\n };\n TooltipManager.prototype.processMouseOut = function (e) {\n var activeComponent = this.activeComponent;\n var relatedTarget = e.relatedTarget;\n if (!activeComponent) {\n if (this.lastHoveredComponent) {\n var containsElement = this.lastHoveredComponent.getGui().contains(relatedTarget);\n if (this.showTimeoutId && containsElement) {\n // if we are hovering within a component with multiple child elements before\n // the tooltip has been displayed, we should cancel this event\n return;\n }\n else if (!containsElement) {\n // when a click hides the tooltip we need to reset the lastHoveredComponent\n // otherwise the tooltip won't appear until another registered component is hovered.\n this.lastHoveredComponent = undefined;\n }\n }\n this.clearTimers();\n return;\n }\n // the mouseout was called from within the activeComponent so we do nothing\n if (activeComponent.getGui().contains(relatedTarget)) {\n return;\n }\n var registeredComponent = this.registeredComponents[activeComponent.getCompId()];\n utils_1._.addCssClass(registeredComponent.tooltipComp.getGui(), 'ag-tooltip-hiding');\n this.lastHoveredComponent = undefined;\n this.clearTimers();\n this.hideTimeoutId = window.setTimeout(this.hideTooltip.bind(this), this.MOUSEOUT_HIDE_TOOLTIP_TIMEOUT);\n };\n TooltipManager.prototype.processMouseMove = function (e) {\n // there is a delay from the time we mouseOver a component and the time the\n // tooltip is displayed, so we need to track mousemove to be able to correctly\n // position the tooltip when showTooltip is called.\n this.lastMouseEvent = e;\n };\n TooltipManager.prototype.showTooltip = function (e) {\n var targetCmp = this.lastHoveredComponent;\n var cell = targetCmp;\n var registeredComponent = this.registeredComponents[targetCmp.getCompId()];\n this.hideTooltip();\n var params = {\n api: this.gridApi,\n columnApi: this.columnApi,\n colDef: targetCmp.getComponentHolder(),\n column: cell.getColumn && cell.getColumn(),\n context: this.gridOptionsWrapper.getContext(),\n rowIndex: cell.getGridCell && cell.getGridCell().rowIndex,\n value: targetCmp.getTooltipText()\n };\n this.createTooltipComponent(params, registeredComponent, e);\n };\n TooltipManager.prototype.createTooltipComponent = function (params, cmp, e) {\n var _this = this;\n this.userComponentFactory.newTooltipComponent(params).then(function (tooltipComp) {\n // if the component was unregistered while creating\n // the tooltip (async) we should return undefined here.\n if (!cmp) {\n return;\n }\n cmp.tooltipComp = tooltipComp;\n var eGui = tooltipComp.getGui();\n var closeFnc = _this.popupService.addPopup(false, eGui, false);\n cmp.destroyFunc = function () {\n closeFnc();\n if (tooltipComp.destroy) {\n tooltipComp.destroy();\n }\n };\n _this.popupService.positionPopupUnderMouseEvent({\n type: 'tooltip',\n mouseEvent: _this.lastMouseEvent,\n ePopup: eGui,\n nudgeY: 18\n });\n _this.activeComponent = _this.lastHoveredComponent;\n _this.hideTimeoutId = window.setTimeout(_this.hideTooltip.bind(_this), _this.DEFAULT_HIDE_TOOLTIP_TIMEOUT);\n });\n };\n TooltipManager.prototype.hideTooltip = function () {\n var activeComponent = this.activeComponent;\n this.clearTimers();\n if (!activeComponent) {\n return;\n }\n var id = activeComponent.getCompId();\n var registeredComponent = this.registeredComponents[id];\n this.activeComponent = undefined;\n if (!registeredComponent) {\n return;\n }\n if (registeredComponent.destroyFunc) {\n registeredComponent.destroyFunc();\n }\n this.clearRegisteredComponent(registeredComponent);\n };\n TooltipManager.prototype.clearRegisteredComponent = function (registeredComponent) {\n delete registeredComponent.destroyFunc;\n delete registeredComponent.tooltipComp;\n };\n TooltipManager.prototype.clearTimers = function (showOnly) {\n if (showOnly === void 0) { showOnly = false; }\n if (this.hideTimeoutId && !showOnly) {\n window.clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = 0;\n }\n if (this.showTimeoutId) {\n window.clearTimeout(this.showTimeoutId);\n this.showTimeoutId = 0;\n }\n };\n __decorate([\n context_1.Autowired('popupService'),\n __metadata(\"design:type\", popupService_1.PopupService)\n ], TooltipManager.prototype, \"popupService\", void 0);\n __decorate([\n context_1.Autowired('userComponentFactory'),\n __metadata(\"design:type\", userComponentFactory_1.UserComponentFactory)\n ], TooltipManager.prototype, \"userComponentFactory\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], TooltipManager.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], TooltipManager.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], TooltipManager.prototype, \"gridOptionsWrapper\", void 0);\n TooltipManager = __decorate([\n context_1.Bean('tooltipManager')\n ], TooltipManager);\n return TooltipManager;\n}());\nexports.TooltipManager = TooltipManager;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar LoggerFactory = /** @class */ (function () {\n function LoggerFactory() {\n }\n LoggerFactory.prototype.setBeans = function (gridOptionsWrapper) {\n this.logging = gridOptionsWrapper.isDebug();\n };\n LoggerFactory.prototype.create = function (name) {\n return new Logger(name, this.isLogging.bind(this));\n };\n LoggerFactory.prototype.isLogging = function () {\n return this.logging;\n };\n __decorate([\n __param(0, context_2.Qualifier('gridOptionsWrapper')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [gridOptionsWrapper_1.GridOptionsWrapper]),\n __metadata(\"design:returntype\", void 0)\n ], LoggerFactory.prototype, \"setBeans\", null);\n LoggerFactory = __decorate([\n context_1.Bean('loggerFactory')\n ], LoggerFactory);\n return LoggerFactory;\n}());\nexports.LoggerFactory = LoggerFactory;\nvar Logger = /** @class */ (function () {\n function Logger(name, isLoggingFunc) {\n this.name = name;\n this.isLoggingFunc = isLoggingFunc;\n }\n Logger.prototype.isLogging = function () {\n return this.isLoggingFunc();\n };\n Logger.prototype.log = function (message) {\n if (this.isLoggingFunc()) {\n // tslint:disable-next-line\n console.log('ag-Grid.' + this.name + ': ' + message);\n }\n };\n return Logger;\n}());\nexports.Logger = Logger;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar ValueFormatterService = /** @class */ (function () {\n function ValueFormatterService() {\n }\n ValueFormatterService.prototype.formatValue = function (column, rowNode, $scope, value) {\n var formatter;\n var colDef = column.getColDef();\n // if floating, give preference to the floating formatter\n if (rowNode && rowNode.rowPinned) {\n formatter = colDef.pinnedRowValueFormatter ? colDef.pinnedRowValueFormatter : colDef.valueFormatter;\n }\n else {\n formatter = colDef.valueFormatter;\n }\n var result = null;\n if (formatter) {\n var params = {\n value: value,\n node: rowNode,\n data: rowNode ? rowNode.data : null,\n colDef: column.getColDef(),\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n // originally we put the angular 1 scope here, but we don't want the scope\n // in the params interface, as other frameworks will see the interface, and\n // angular 1 is not cool any more. so we hack the scope in here (we cannot\n // include it above, as it's not in the interface, so would cause a compile error).\n // in the future, when we stop supporting angular 1, we can take this out.\n params.$scope = $scope;\n result = this.expressionService.evaluate(formatter, params);\n }\n else if (colDef.refData) {\n return colDef.refData[value] || '';\n }\n // if we don't do this, then arrays get displayed as 1,2,3, but we want 1, 2, 3 (ie with spaces)\n if ((result === null || result === undefined) && Array.isArray(value)) {\n result = value.join(', ');\n }\n return result;\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ValueFormatterService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('expressionService'),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], ValueFormatterService.prototype, \"expressionService\", void 0);\n ValueFormatterService = __decorate([\n context_1.Bean('valueFormatterService')\n ], ValueFormatterService);\n return ValueFormatterService;\n}());\nexports.ValueFormatterService = ValueFormatterService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../widgets/component\");\nvar context_1 = require(\"../context/context\");\nvar rowNode_1 = require(\"../entities/rowNode\");\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar eventKeys_1 = require(\"../eventKeys\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar utils_1 = require(\"../utils\");\nvar RowDragComp = /** @class */ (function (_super) {\n __extends(RowDragComp, _super);\n function RowDragComp(rowNode, column, cellValue, beans) {\n var _this = _super.call(this, \"
\") || this;\n _this.visibleMode = null;\n _this.rowNode = rowNode;\n _this.column = column;\n _this.cellValue = cellValue;\n _this.beans = beans;\n return _this;\n }\n RowDragComp.prototype.postConstruct = function () {\n var eGui = this.getGui();\n eGui.appendChild(utils_1._.createIconNoSpan('rowDrag', this.beans.gridOptionsWrapper, null));\n this.addDragSource();\n this.checkCompatibility();\n if (this.beans.gridOptionsWrapper.isRowDragManaged()) {\n this.addFeature(this.beans.context, new ManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column));\n }\n else {\n this.addFeature(this.beans.context, new NonManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column));\n }\n };\n // returns true if all compatibility items work out\n RowDragComp.prototype.checkCompatibility = function () {\n var managed = this.beans.gridOptionsWrapper.isRowDragManaged();\n var treeData = this.beans.gridOptionsWrapper.isTreeData();\n if (treeData && managed) {\n utils_1._.doOnce(function () {\n return console.warn('ag-Grid: If using row drag with tree data, you cannot have rowDragManaged=true');\n }, 'RowDragComp.managedAndTreeData');\n }\n };\n RowDragComp.prototype.addDragSource = function () {\n var _this = this;\n var dragItem = {\n rowNode: this.rowNode\n };\n var dragSource = {\n type: dragAndDropService_1.DragSourceType.RowDrag,\n eElement: this.getGui(),\n dragItemName: this.cellValue,\n dragItemCallback: function () { return dragItem; },\n dragStartPixels: 0\n };\n this.beans.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.beans.dragAndDropService.removeDragSource(dragSource); });\n };\n RowDragComp.prototype.getVisibleMode = function () {\n return this.visibleMode;\n };\n RowDragComp.prototype.setVisibleMode = function (type) {\n this.visibleMode = type;\n };\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], RowDragComp.prototype, \"postConstruct\", null);\n return RowDragComp;\n}(component_1.Component));\nexports.RowDragComp = RowDragComp;\n// when non managed, the visibility depends on suppressRowDrag property only\nvar NonManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends(NonManagedVisibilityStrategy, _super);\n function NonManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.beans = beans;\n _this.column = column;\n _this.rowNode = rowNode;\n return _this;\n }\n NonManagedVisibilityStrategy.prototype.postConstruct = function () {\n this.addDestroyableEventListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var suppressRowDrag = this.beans.gridOptionsWrapper.isSuppressRowDrag();\n if (suppressRowDrag) {\n this.parent.setVisibleMode('display');\n this.parent.setVisible(false, 'display');\n }\n else {\n var visible = this.column.isRowDrag(this.rowNode);\n if (!this.parent.getVisibleMode()) {\n var isRowDragFunc = utils_1._.isFunction(this.column.getColDef().rowDrag);\n this.parent.setVisibleMode(isRowDragFunc ? 'visibility' : 'display');\n }\n this.parent.setVisible(visible, this.parent.getVisibleMode());\n }\n };\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], NonManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return NonManagedVisibilityStrategy;\n}(beanStub_1.BeanStub));\n// when managed, the visibility depends on sort, filter and row group, as well as suppressRowDrag property\nvar ManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends(ManagedVisibilityStrategy, _super);\n function ManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.beans = beans;\n _this.column = column;\n _this.rowNode = rowNode;\n return _this;\n }\n ManagedVisibilityStrategy.prototype.postConstruct = function () {\n // we do not show the component if sort, filter or grouping is active\n this.addDestroyableEventListener(this.beans.eventService, eventKeys_1.Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addDestroyableEventListener(this.beans.eventService, eventKeys_1.Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addDestroyableEventListener(this.beans.eventService, eventKeys_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));\n this.updateSortActive();\n this.updateFilterActive();\n this.updateRowGroupActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.updateRowGroupActive = function () {\n var rowGroups = this.beans.columnController.getRowGroupColumns();\n this.rowGroupActive = !utils_1._.missingOrEmpty(rowGroups);\n };\n ManagedVisibilityStrategy.prototype.onRowGroupChanged = function () {\n this.updateRowGroupActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.updateSortActive = function () {\n var sortModel = this.beans.sortController.getSortModel();\n this.sortActive = !utils_1._.missingOrEmpty(sortModel);\n };\n ManagedVisibilityStrategy.prototype.onSortChanged = function () {\n this.updateSortActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.updateFilterActive = function () {\n this.filterActive = this.beans.filterManager.isAnyFilterPresent();\n };\n ManagedVisibilityStrategy.prototype.onFilterChanged = function () {\n this.updateFilterActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var sortOrFilterOrGroupActive = this.sortActive || this.filterActive || this.rowGroupActive;\n var suppressRowDrag = this.beans.gridOptionsWrapper.isSuppressRowDrag();\n var alwaysHide = sortOrFilterOrGroupActive || suppressRowDrag;\n if (alwaysHide) {\n this.parent.setVisibleMode('display');\n this.parent.setVisible(false, 'display');\n }\n else {\n var visible = this.column.isRowDrag(this.rowNode);\n if (!this.parent.getVisibleMode()) {\n var isRowDragFunc = utils_1._.isFunction(this.column.getColDef().rowDrag);\n this.parent.setVisibleMode(isRowDragFunc ? 'visibility' : 'display');\n }\n this.parent.setVisible(visible, this.parent.getVisibleMode());\n }\n };\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return ManagedVisibilityStrategy;\n}(beanStub_1.BeanStub));\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar selectCellEditor_1 = require(\"./selectCellEditor\");\nvar PopupSelectCellEditor = /** @class */ (function (_super) {\n __extends(PopupSelectCellEditor, _super);\n function PopupSelectCellEditor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupSelectCellEditor.prototype.isPopup = function () {\n return true;\n };\n return PopupSelectCellEditor;\n}(selectCellEditor_1.SelectCellEditor));\nexports.PopupSelectCellEditor = PopupSelectCellEditor;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar expressionService_1 = require(\"./expressionService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar context_1 = require(\"../context/context\");\nvar events_1 = require(\"../events\");\nvar eventService_1 = require(\"../eventService\");\nvar valueCache_1 = require(\"./valueCache\");\nvar utils_1 = require(\"../utils\");\nvar ValueService = /** @class */ (function () {\n function ValueService() {\n this.initialised = false;\n }\n ValueService.prototype.init = function () {\n this.cellExpressions = this.gridOptionsWrapper.isEnableCellExpressions();\n this.initialised = true;\n };\n ValueService.prototype.getValue = function (column, rowNode, forFilter, ignoreAggData) {\n // console.log(`turnActive = ${this.turnActive}`);\n if (forFilter === void 0) { forFilter = false; }\n if (ignoreAggData === void 0) { ignoreAggData = false; }\n // hack - the grid is getting refreshed before this bean gets initialised, race condition.\n // really should have a way so they get initialised in the right order???\n if (!this.initialised) {\n this.init();\n }\n if (!rowNode) {\n return;\n }\n // pull these out to make code below easier to read\n var colDef = column.getColDef();\n var field = colDef.field;\n var colId = column.getId();\n var data = rowNode.data;\n var result;\n // if there is a value getter, this gets precedence over a field\n var groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== undefined;\n var aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== undefined;\n if (forFilter && colDef.filterValueGetter) {\n result = this.executeFilterValueGetter(colDef.filterValueGetter, data, column, rowNode);\n }\n else if (this.gridOptionsWrapper.isTreeData() && aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (this.gridOptionsWrapper.isTreeData() && colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (this.gridOptionsWrapper.isTreeData() && (field && data)) {\n result = utils_1._.getValueUsingField(data, field, column.isFieldContainsDots());\n }\n else if (groupDataExists) {\n result = rowNode.groupData[colId];\n }\n else if (aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (field && data) {\n result = utils_1._.getValueUsingField(data, field, column.isFieldContainsDots());\n }\n // the result could be an expression itself, if we are allowing cell values to be expressions\n if (this.cellExpressions && (typeof result === 'string') && result.indexOf('=') === 0) {\n var cellValueGetter = result.substring(1);\n result = this.executeValueGetter(cellValueGetter, data, column, rowNode);\n }\n return result;\n };\n ValueService.prototype.setValue = function (rowNode, colKey, newValue) {\n var column = this.columnController.getPrimaryColumn(colKey);\n if (!rowNode || !column) {\n return;\n }\n // this will only happen if user is trying to paste into a group row, which doesn't make sense\n // the user should not be trying to paste into group rows\n var data = rowNode.data;\n if (utils_1._.missing(data)) {\n rowNode.data = {};\n }\n // for backwards compatibility we are also retrieving the newValueHandler as well as the valueSetter\n var _a = column.getColDef(), field = _a.field, newValueHandler = _a.newValueHandler, valueSetter = _a.valueSetter;\n // need either a field or a newValueHandler for this to work\n if (utils_1._.missing(field) && utils_1._.missing(newValueHandler) && utils_1._.missing(valueSetter)) {\n // we don't tell user about newValueHandler, as that is deprecated\n console.warn(\"ag-Grid: you need either field or valueSetter set on colDef for editing to work\");\n return;\n }\n var params = {\n node: rowNode,\n data: rowNode.data,\n oldValue: this.getValue(column, rowNode),\n newValue: newValue,\n colDef: column.getColDef(),\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n params.newValue = newValue;\n var valueWasDifferent;\n if (newValueHandler && utils_1._.exists(newValueHandler)) {\n valueWasDifferent = newValueHandler(params);\n }\n else if (utils_1._.exists(valueSetter)) {\n valueWasDifferent = this.expressionService.evaluate(valueSetter, params);\n }\n else {\n valueWasDifferent = this.setValueUsingField(data, field, newValue, column.isFieldContainsDots());\n }\n // in case user forgot to return something (possible if they are not using TypeScript\n // and just forgot, or using an old newValueHandler we didn't always expect a return\n // value here), we default the return value to true, so we always refresh.\n if (valueWasDifferent === undefined) {\n valueWasDifferent = true;\n }\n // if no change to the value, then no need to do the updating, or notifying via events.\n // otherwise the user could be tabbing around the grid, and cellValueChange would get called\n // all the time.\n if (!valueWasDifferent) {\n return;\n }\n // reset quick filter on this row\n rowNode.resetQuickFilterAggregateText();\n this.valueCache.onDataChanged();\n params.newValue = this.getValue(column, rowNode);\n var onCellValueChanged = column.getColDef().onCellValueChanged;\n if (typeof onCellValueChanged === 'function') {\n // to make callback async, do in a timeout\n setTimeout(function () { return onCellValueChanged(params); }, 0);\n }\n var event = {\n type: events_1.Events.EVENT_CELL_VALUE_CHANGED,\n event: null,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned,\n column: params.column,\n api: params.api,\n colDef: params.colDef,\n columnApi: params.columnApi,\n context: params.context,\n data: rowNode.data,\n node: rowNode,\n oldValue: params.oldValue,\n newValue: params.newValue,\n value: params.newValue\n };\n this.eventService.dispatchEvent(event);\n };\n ValueService.prototype.setValueUsingField = function (data, field, newValue, isFieldContainsDots) {\n if (!field) {\n return false;\n }\n // if no '.', then it's not a deep value\n var valuesAreSame = false;\n if (!isFieldContainsDots) {\n data[field] = newValue;\n }\n else {\n // otherwise it is a deep value, so need to dig for it\n var fieldPieces = field.split('.');\n var currentObject = data;\n while (fieldPieces.length > 0 && currentObject) {\n var fieldPiece = fieldPieces.shift();\n if (fieldPieces.length === 0) {\n currentObject[fieldPiece] = newValue;\n }\n else {\n currentObject = currentObject[fieldPiece];\n }\n }\n }\n return !valuesAreSame;\n };\n ValueService.prototype.executeFilterValueGetter = function (valueGetter, data, column, rowNode) {\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n return this.expressionService.evaluate(valueGetter, params);\n };\n ValueService.prototype.executeValueGetter = function (valueGetter, data, column, rowNode) {\n var colId = column.getId();\n // if inside the same turn, just return back the value we got last time\n var valueFromCache = this.valueCache.getValue(rowNode, colId);\n if (valueFromCache !== undefined) {\n return valueFromCache;\n }\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n var result = this.expressionService.evaluate(valueGetter, params);\n // if a turn is active, store the value in case the grid asks for it again\n this.valueCache.setValue(rowNode, colId, result);\n return result;\n };\n ValueService.prototype.getValueCallback = function (node, field) {\n var otherColumn = this.columnController.getPrimaryColumn(field);\n if (otherColumn) {\n return this.getValue(otherColumn, node);\n }\n return null;\n };\n // used by row grouping and pivot, to get key for a row. col can be a pivot col or a row grouping col\n ValueService.prototype.getKeyForNode = function (col, rowNode) {\n var value = this.getValue(col, rowNode);\n var keyCreator = col.getColDef().keyCreator;\n var result = keyCreator ? keyCreator({ value: value }) : value;\n // if already a string, or missing, just return it\n if (typeof result === 'string' || result == null) {\n return result;\n }\n result = String(result);\n if (result === '[object Object]') {\n utils_1._.doOnce(function () {\n console.warn('ag-Grid: a column you are grouping or pivoting by has objects as values. If you want to group by complex objects then either a) use a colDef.keyCreator (se ag-Grid docs) or b) to toString() on the object to return a key');\n }, 'getKeyForNode - warn about [object,object]');\n }\n return result;\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ValueService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('expressionService'),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], ValueService.prototype, \"expressionService\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], ValueService.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], ValueService.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('valueCache'),\n __metadata(\"design:type\", valueCache_1.ValueCache)\n ], ValueService.prototype, \"valueCache\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ValueService.prototype, \"init\", null);\n ValueService = __decorate([\n context_1.Bean('valueService')\n ], ValueService);\n return ValueService;\n}());\nexports.ValueService = ValueService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar constants_1 = require(\"../constants\");\nvar selectionController_1 = require(\"../selectionController\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar displayedGroupCreator_1 = require(\"../columnController/displayedGroupCreator\");\nvar columnFactory_1 = require(\"../columnController/columnFactory\");\nvar groupInstanceIdCreator_1 = require(\"../columnController/groupInstanceIdCreator\");\nvar columnGroup_1 = require(\"../entities/columnGroup\");\nvar pinnedRowModel_1 = require(\"../rowModels/pinnedRowModel\");\nvar utils_1 = require(\"../utils\");\nvar BaseGridSerializingSession = /** @class */ (function () {\n function BaseGridSerializingSession(config) {\n var columnController = config.columnController, valueService = config.valueService, gridOptionsWrapper = config.gridOptionsWrapper, processCellCallback = config.processCellCallback, processHeaderCallback = config.processHeaderCallback, cellAndHeaderEscaper = config.cellAndHeaderEscaper;\n this.columnController = columnController;\n this.valueService = valueService;\n this.gridOptionsWrapper = gridOptionsWrapper;\n this.processCellCallback = processCellCallback;\n this.processHeaderCallback = processHeaderCallback;\n this.cellAndHeaderEscaper = cellAndHeaderEscaper;\n }\n BaseGridSerializingSession.prototype.extractHeaderValue = function (column) {\n var nameForCol = this.getHeaderName(this.processHeaderCallback, column);\n if (nameForCol === null || nameForCol === undefined) {\n nameForCol = '';\n }\n return this.cellAndHeaderEscaper ? this.cellAndHeaderEscaper(nameForCol) : nameForCol;\n };\n BaseGridSerializingSession.prototype.extractRowCellValue = function (column, index, type, node) {\n var isRowGrouping = this.columnController.getRowGroupColumns().length > 0;\n var valueForCell;\n if (node && node.group && isRowGrouping && index === 0) {\n valueForCell = this.createValueForGroupNode(node);\n }\n else {\n valueForCell = this.valueService.getValue(column, node);\n }\n valueForCell = this.processCell(node, column, valueForCell, this.processCellCallback, type);\n if (valueForCell === null || valueForCell === undefined) {\n valueForCell = '';\n }\n return this.cellAndHeaderEscaper ? this.cellAndHeaderEscaper(valueForCell) : valueForCell;\n };\n BaseGridSerializingSession.prototype.getHeaderName = function (callback, column) {\n if (callback) {\n return callback({\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n });\n }\n else {\n return this.columnController.getDisplayNameForColumn(column, 'csv', true);\n }\n };\n BaseGridSerializingSession.prototype.createValueForGroupNode = function (node) {\n var keys = [node.key];\n while (node.parent) {\n node = node.parent;\n keys.push(node.key);\n }\n return keys.reverse().join(' -> ');\n };\n BaseGridSerializingSession.prototype.processCell = function (rowNode, column, value, processCellCallback, type) {\n if (processCellCallback) {\n return processCellCallback({\n column: column,\n node: rowNode,\n value: value,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n type: type\n });\n }\n else {\n return value;\n }\n };\n return BaseGridSerializingSession;\n}());\nexports.BaseGridSerializingSession = BaseGridSerializingSession;\nvar GridSerializer = /** @class */ (function () {\n function GridSerializer() {\n }\n GridSerializer.prototype.serialize = function (gridSerializingSession, params) {\n var dontSkipRows = function () { return false; };\n var skipGroups = params && params.skipGroups;\n var skipHeader = params && params.skipHeader;\n var columnGroups = params && params.columnGroups;\n var skipFooters = params && params.skipFooters;\n var skipPinnedTop = params && params.skipPinnedTop;\n var skipPinnedBottom = params && params.skipPinnedBottom;\n var includeCustomHeader = params && params.customHeader;\n var includeCustomFooter = params && params.customFooter;\n var allColumns = params && params.allColumns;\n var onlySelected = params && params.onlySelected;\n var columnKeys = params && params.columnKeys;\n var onlySelectedAllPages = params && params.onlySelectedAllPages;\n var rowSkipper = (params && params.shouldRowBeSkipped) || dontSkipRows;\n var api = this.gridOptionsWrapper.getApi();\n var skipSingleChildrenGroup = this.gridOptionsWrapper.isGroupRemoveSingleChildren();\n var skipLowestSingleChildrenGroup = this.gridOptionsWrapper.isGroupRemoveLowestSingleChildren();\n var context = this.gridOptionsWrapper.getContext();\n // when in pivot mode, we always render cols on screen, never 'all columns'\n var isPivotMode = this.columnController.isPivotMode();\n var rowModelNormal = this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n var onlySelectedNonStandardModel = !rowModelNormal && onlySelected;\n var columnsToExport = [];\n if (utils_1._.existsAndNotEmpty(columnKeys)) {\n columnsToExport = this.columnController.getGridColumns(columnKeys);\n }\n else if (allColumns && !isPivotMode) {\n // add auto group column for tree data\n columnsToExport = this.gridOptionsWrapper.isTreeData() ?\n this.columnController.getGridColumns([constants_1.Constants.GROUP_AUTO_COLUMN_ID]) : [];\n columnsToExport = columnsToExport.concat(this.columnController.getAllPrimaryColumns() || []);\n }\n else {\n columnsToExport = this.columnController.getAllDisplayedColumns();\n }\n if (includeCustomHeader) {\n gridSerializingSession.addCustomHeader(includeCustomHeader);\n }\n gridSerializingSession.prepare(columnsToExport);\n // first pass, put in the header names of the cols\n if (columnGroups) {\n var groupInstanceIdCreator = new groupInstanceIdCreator_1.GroupInstanceIdCreator();\n var displayedGroups = this.displayedGroupCreator.createDisplayedGroups(columnsToExport, this.columnController.getGridBalancedTree(), groupInstanceIdCreator, null);\n this.recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession);\n }\n if (!skipHeader) {\n var gridRowIterator_1 = gridSerializingSession.onNewHeaderRow();\n columnsToExport.forEach(function (column, index) {\n gridRowIterator_1.onColumn(column, index, undefined);\n });\n }\n this.pinnedRowModel.forEachPinnedTopRow(processRow);\n if (isPivotMode) {\n if (this.rowModel.forEachPivotNode) {\n this.rowModel.forEachPivotNode(processRow);\n }\n else {\n //Must be enterprise, so we can just loop through all the nodes\n this.rowModel.forEachNode(processRow);\n }\n }\n else {\n // onlySelectedAllPages: user doing pagination and wants selected items from\n // other pages, so cannot use the standard row model as it won't have rows from\n // other pages.\n // onlySelectedNonStandardModel: if user wants selected in non standard row model\n // (eg viewport) then again rowmodel cannot be used, so need to use selected instead.\n if (onlySelectedAllPages || onlySelectedNonStandardModel) {\n var selectedNodes = this.selectionController.getSelectedNodes();\n selectedNodes.forEach(function (node) {\n processRow(node);\n });\n }\n else {\n // here is everything else - including standard row model and selected. we don't use\n // the selection model even when just using selected, so that the result is the order\n // of the rows appearing on the screen.\n if (rowModelNormal) {\n this.rowModel.forEachNodeAfterFilterAndSort(processRow);\n }\n else {\n this.rowModel.forEachNode(processRow);\n }\n }\n }\n this.pinnedRowModel.forEachPinnedBottomRow(processRow);\n if (includeCustomFooter) {\n gridSerializingSession.addCustomFooter(includeCustomFooter);\n }\n function processRow(node) {\n var shouldSkipLowestGroup = skipLowestSingleChildrenGroup && node.leafGroup;\n var shouldSkipCurrentGroup = node.allChildrenCount === 1 && (skipSingleChildrenGroup || shouldSkipLowestGroup);\n if (node.group && (skipGroups || shouldSkipCurrentGroup)) {\n return;\n }\n if (skipFooters && node.footer) {\n return;\n }\n if (onlySelected && !node.isSelected()) {\n return;\n }\n if (skipPinnedTop && node.rowPinned === 'top') {\n return;\n }\n if (skipPinnedBottom && node.rowPinned === 'bottom') {\n return;\n }\n // if we are in pivotMode, then the grid will show the root node only\n // if it's not a leaf group\n var nodeIsRootNode = node.level === -1;\n if (nodeIsRootNode && !node.leafGroup) {\n return;\n }\n var shouldRowBeSkipped = rowSkipper({\n node: node,\n api: api,\n context: context\n });\n if (shouldRowBeSkipped) {\n return;\n }\n var rowAccumulator = gridSerializingSession.onNewBodyRow();\n columnsToExport.forEach(function (column, index) {\n rowAccumulator.onColumn(column, index, node);\n });\n }\n return gridSerializingSession.parse();\n };\n GridSerializer.prototype.recursivelyAddHeaderGroups = function (displayedGroups, gridSerializingSession) {\n var directChildrenHeaderGroups = [];\n displayedGroups.forEach(function (columnGroupChild) {\n var columnGroup = columnGroupChild;\n if (!columnGroup.getChildren) {\n return;\n }\n columnGroup.getChildren().forEach(function (it) { return directChildrenHeaderGroups.push(it); });\n });\n if (displayedGroups.length > 0 && displayedGroups[0] instanceof columnGroup_1.ColumnGroup) {\n this.doAddHeaderHeader(gridSerializingSession, displayedGroups);\n }\n if (directChildrenHeaderGroups && directChildrenHeaderGroups.length > 0) {\n this.recursivelyAddHeaderGroups(directChildrenHeaderGroups, gridSerializingSession);\n }\n };\n GridSerializer.prototype.doAddHeaderHeader = function (gridSerializingSession, displayedGroups) {\n var _this = this;\n var gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();\n var columnIndex = 0;\n displayedGroups.forEach(function (columnGroupChild) {\n var columnGroup = columnGroupChild;\n var columnName = _this.columnController.getDisplayNameForColumnGroup(columnGroup, 'header');\n gridRowIterator.onColumn(columnName || '', columnIndex++, columnGroup.getLeafColumns().length - 1);\n });\n };\n __decorate([\n context_1.Autowired('displayedGroupCreator'),\n __metadata(\"design:type\", displayedGroupCreator_1.DisplayedGroupCreator)\n ], GridSerializer.prototype, \"displayedGroupCreator\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], GridSerializer.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], GridSerializer.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('pinnedRowModel'),\n __metadata(\"design:type\", pinnedRowModel_1.PinnedRowModel)\n ], GridSerializer.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n context_1.Autowired('selectionController'),\n __metadata(\"design:type\", selectionController_1.SelectionController)\n ], GridSerializer.prototype, \"selectionController\", void 0);\n __decorate([\n context_1.Autowired('columnFactory'),\n __metadata(\"design:type\", columnFactory_1.ColumnFactory)\n ], GridSerializer.prototype, \"columnFactory\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], GridSerializer.prototype, \"gridOptionsWrapper\", void 0);\n GridSerializer = __decorate([\n context_1.Bean(\"gridSerializer\")\n ], GridSerializer);\n return GridSerializer;\n}());\nexports.GridSerializer = GridSerializer;\nvar RowType;\n(function (RowType) {\n RowType[RowType[\"HEADER_GROUPING\"] = 0] = \"HEADER_GROUPING\";\n RowType[RowType[\"HEADER\"] = 1] = \"HEADER\";\n RowType[RowType[\"BODY\"] = 2] = \"BODY\";\n})(RowType = exports.RowType || (exports.RowType = {}));\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventService_1 = require(\"../eventService\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar context_1 = require(\"./context\");\nvar utils_1 = require(\"../utils\");\nvar BeanStub = /** @class */ (function () {\n function BeanStub() {\n this.destroyFunctions = [];\n this.destroyed = false;\n }\n // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are\n // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed\n // points to a bean or component that was not properly disposed of.\n // constructor() {\n // setTimeout(()=> {\n // if (this.isAlive()) {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n // console.log('is alive ' + beanName);\n // }\n // }, 5000);\n // }\n BeanStub.prototype.getContext = function () {\n return this.context;\n };\n BeanStub.prototype.destroy = function () {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n this.destroyFunctions.forEach(function (func) { return func(); });\n this.destroyFunctions.length = 0;\n this.destroyed = true;\n this.dispatchEvent({ type: BeanStub.EVENT_DESTROYED });\n };\n BeanStub.prototype.addEventListener = function (eventType, listener) {\n if (!this.localEventService) {\n this.localEventService = new eventService_1.EventService();\n }\n this.localEventService.addEventListener(eventType, listener);\n };\n BeanStub.prototype.removeEventListener = function (eventType, listener) {\n if (this.localEventService) {\n this.localEventService.removeEventListener(eventType, listener);\n }\n };\n BeanStub.prototype.dispatchEventAsync = function (event) {\n var _this = this;\n window.setTimeout(function () { return _this.dispatchEvent(event); }, 0);\n };\n BeanStub.prototype.dispatchEvent = function (event) {\n if (this.localEventService) {\n this.localEventService.dispatchEvent(event);\n }\n };\n BeanStub.prototype.addDestroyableEventListener = function (eElement, event, listener, options) {\n if (this.destroyed) {\n return;\n }\n if (eElement instanceof HTMLElement) {\n utils_1._.addSafePassiveEventListener(eElement, event, listener, options);\n }\n else if (eElement instanceof Window) {\n eElement.addEventListener(event, listener);\n }\n else if (eElement instanceof gridOptionsWrapper_1.GridOptionsWrapper) {\n eElement.addEventListener(event, listener);\n }\n else {\n eElement.addEventListener(event, listener);\n }\n this.destroyFunctions.push(function () {\n if (eElement instanceof HTMLElement) {\n eElement.removeEventListener(event, listener);\n }\n else if (eElement instanceof Window) {\n eElement.removeEventListener(event, listener);\n }\n else if (eElement instanceof gridOptionsWrapper_1.GridOptionsWrapper) {\n eElement.removeEventListener(event, listener);\n }\n else {\n eElement.removeEventListener(event, listener);\n }\n });\n };\n BeanStub.prototype.isAlive = function () {\n return !this.destroyed;\n };\n BeanStub.prototype.addDestroyFunc = function (func) {\n // if we are already destroyed, we execute the func now\n if (this.isAlive()) {\n this.destroyFunctions.push(func);\n }\n else {\n func();\n }\n };\n BeanStub.EVENT_DESTROYED = 'destroyed';\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], BeanStub.prototype, \"context\", void 0);\n __decorate([\n context_1.PreDestroy,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], BeanStub.prototype, \"destroy\", null);\n return BeanStub;\n}());\nexports.BeanStub = BeanStub;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar dateFilter_1 = require(\"./dateFilter\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar userComponentFactory_1 = require(\"../components/framework/userComponentFactory\");\nvar component_1 = require(\"../widgets/component\");\nvar constants_1 = require(\"../constants\");\nvar utils_1 = require(\"../utils\");\nvar InputTextFloatingFilterComp = /** @class */ (function (_super) {\n __extends(InputTextFloatingFilterComp, _super);\n function InputTextFloatingFilterComp() {\n var _this = _super.call(this, \"
\") || this;\n _this.lastKnownModel = null;\n return _this;\n }\n InputTextFloatingFilterComp.prototype.init = function (params) {\n this.onFloatingFilterChanged = params.onFloatingFilterChanged;\n this.currentParentModel = params.currentParentModel;\n var debounceMs = params.debounceMs != null ? params.debounceMs : 500;\n var toDebounce = utils_1._.debounce(this.syncUpWithParentFilter.bind(this), debounceMs);\n this.addDestroyableEventListener(this.eColumnFloatingFilter, 'input', toDebounce);\n this.addDestroyableEventListener(this.eColumnFloatingFilter, 'keypress', toDebounce);\n this.addDestroyableEventListener(this.eColumnFloatingFilter, 'keydown', toDebounce);\n var columnDef = params.column.getDefinition();\n if (columnDef.filterParams && columnDef.filterParams.filterOptions && columnDef.filterParams.filterOptions.length === 1 && columnDef.filterParams.filterOptions[0] === 'inRange') {\n this.eColumnFloatingFilter.disabled = true;\n }\n };\n InputTextFloatingFilterComp.prototype.onParentModelChanged = function (parentModel, combinedFilter) {\n if (combinedFilter != null) {\n this.eColumnFloatingFilter.value = this.parseAsText(combinedFilter.condition1) + \" \" + combinedFilter.operator + \" \" + this.parseAsText(combinedFilter.condition2);\n this.eColumnFloatingFilter.disabled = true;\n this.lastKnownModel = null;\n this.eColumnFloatingFilter.title = this.eColumnFloatingFilter.value;\n this.eColumnFloatingFilter.style.cursor = 'default';\n return;\n }\n else {\n this.eColumnFloatingFilter.disabled = false;\n }\n if (this.equalModels(this.lastKnownModel, parentModel)) {\n // ensure column floating filter text is blanked out when both ranges are empty\n if (!this.lastKnownModel && !parentModel) {\n this.eColumnFloatingFilter.value = '';\n }\n return;\n }\n this.lastKnownModel = parentModel;\n var incomingTextValue = this.asFloatingFilterText(parentModel);\n if (incomingTextValue === this.eColumnFloatingFilter.value) {\n return;\n }\n this.eColumnFloatingFilter.value = incomingTextValue;\n this.eColumnFloatingFilter.title = '';\n };\n InputTextFloatingFilterComp.prototype.syncUpWithParentFilter = function (e) {\n var model = this.asParentModel();\n if (this.equalModels(this.lastKnownModel, model)) {\n return;\n }\n var modelUpdated = null;\n if (utils_1._.isKeyPressed(e, constants_1.Constants.KEY_ENTER)) {\n modelUpdated = this.onFloatingFilterChanged({\n model: model,\n apply: true\n });\n }\n else {\n modelUpdated = this.onFloatingFilterChanged({\n model: model,\n apply: false\n });\n }\n if (modelUpdated) {\n this.lastKnownModel = model;\n }\n };\n InputTextFloatingFilterComp.prototype.equalModels = function (left, right) {\n if (utils_1._.referenceCompare(left, right)) {\n return true;\n }\n if (!left || !right) {\n return false;\n }\n if (Array.isArray(left) || Array.isArray(right)) {\n return false;\n }\n return (utils_1._.referenceCompare(left.type, right.type) &&\n utils_1._.referenceCompare(left.filter, right.filter) &&\n utils_1._.referenceCompare(left.filterTo, right.filterTo) &&\n utils_1._.referenceCompare(left.filterType, right.filterType));\n };\n __decorate([\n componentAnnotations_1.RefSelector('eColumnFloatingFilter'),\n __metadata(\"design:type\", HTMLInputElement)\n ], InputTextFloatingFilterComp.prototype, \"eColumnFloatingFilter\", void 0);\n return InputTextFloatingFilterComp;\n}(component_1.Component));\nexports.InputTextFloatingFilterComp = InputTextFloatingFilterComp;\nvar TextFloatingFilterComp = /** @class */ (function (_super) {\n __extends(TextFloatingFilterComp, _super);\n function TextFloatingFilterComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextFloatingFilterComp.prototype.asFloatingFilterText = function (parentModel) {\n if (!parentModel) {\n return '';\n }\n return parentModel.filter;\n };\n TextFloatingFilterComp.prototype.asParentModel = function () {\n var currentParentModel = this.currentParentModel();\n return {\n type: currentParentModel.type,\n filter: this.eColumnFloatingFilter.value,\n filterType: 'text'\n };\n };\n TextFloatingFilterComp.prototype.parseAsText = function (model) {\n return this.asFloatingFilterText(model);\n };\n return TextFloatingFilterComp;\n}(InputTextFloatingFilterComp));\nexports.TextFloatingFilterComp = TextFloatingFilterComp;\nvar DateFloatingFilterComp = /** @class */ (function (_super) {\n __extends(DateFloatingFilterComp, _super);\n function DateFloatingFilterComp() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastKnownModel = null;\n return _this;\n }\n DateFloatingFilterComp.prototype.init = function (params) {\n this.onFloatingFilterChanged = params.onFloatingFilterChanged;\n this.currentParentModel = params.currentParentModel;\n var debounceMs = params.debounceMs != null ? params.debounceMs : 500;\n var toDebounce = utils_1._.debounce(this.onDateChanged.bind(this), debounceMs);\n var dateComponentParams = {\n onDateChanged: toDebounce,\n filterParams: params.column.getColDef().filterParams\n };\n this.dateComponentPromise = this.userComponentFactory.newDateComponent(dateComponentParams);\n var body = utils_1._.loadTemplate('
');\n this.dateComponentPromise.then(function (dateComponent) {\n body.appendChild(dateComponent.getGui());\n var columnDef = params.column.getDefinition();\n var isInRange = (columnDef.filterParams &&\n columnDef.filterParams.filterOptions &&\n columnDef.filterParams.filterOptions.length === 1 &&\n columnDef.filterParams.filterOptions[0] === 'inRange');\n if (dateComponent.eDateInput) {\n dateComponent.eDateInput.disabled = isInRange;\n }\n });\n body.style.width = '100%';\n body.style.height = '100%';\n this.setTemplateFromElement(body);\n };\n DateFloatingFilterComp.prototype.onDateChanged = function () {\n var parentModel = this.currentParentModel();\n var model = this.asParentModel();\n if (this.equalModels(parentModel, model)) {\n return;\n }\n this.onFloatingFilterChanged({\n model: model,\n apply: true\n });\n this.lastKnownModel = model;\n };\n DateFloatingFilterComp.prototype.equalModels = function (left, right) {\n if (utils_1._.referenceCompare(left, right)) {\n return true;\n }\n if (!left || !right) {\n return false;\n }\n if (Array.isArray(left) || Array.isArray(right)) {\n return false;\n }\n return (utils_1._.referenceCompare(left.type, right.type) &&\n utils_1._.referenceCompare(left.dateFrom, right.dateFrom) &&\n utils_1._.referenceCompare(left.dateTo, right.dateTo) &&\n utils_1._.referenceCompare(left.filterType, right.filterType));\n };\n DateFloatingFilterComp.prototype.asParentModel = function () {\n var currentParentModel = this.currentParentModel();\n var filterValueDate = this.dateComponentPromise.resolveNow(null, function (dateComponent) { return dateComponent.getDate(); });\n var filterValueText = utils_1._.serializeDateToYyyyMmDd(dateFilter_1.DateFilter.removeTimezone(filterValueDate), \"-\");\n return {\n type: currentParentModel.type,\n dateFrom: filterValueText,\n dateTo: currentParentModel ? currentParentModel.dateTo : null,\n filterType: 'date'\n };\n };\n DateFloatingFilterComp.prototype.onParentModelChanged = function (parentModel) {\n var _this = this;\n this.lastKnownModel = parentModel;\n this.dateComponentPromise.then(function (dateComponent) {\n if (!parentModel || !parentModel.dateFrom) {\n dateComponent.setDate(null);\n return;\n }\n _this.enrichDateInput(parentModel.type, parentModel.dateFrom, parentModel.dateTo, dateComponent);\n dateComponent.setDate(utils_1._.parseYyyyMmDdToDate(parentModel.dateFrom, '-'));\n });\n };\n DateFloatingFilterComp.prototype.enrichDateInput = function (type, dateFrom, dateTo, dateComponent) {\n if (dateComponent.eDateInput) {\n if (type === 'inRange') {\n dateComponent.eDateInput.title = dateFrom + \" to \" + dateTo;\n dateComponent.eDateInput.disabled = true;\n }\n else {\n dateComponent.eDateInput.title = '';\n dateComponent.eDateInput.disabled = false;\n }\n }\n };\n __decorate([\n context_1.Autowired('userComponentFactory'),\n __metadata(\"design:type\", userComponentFactory_1.UserComponentFactory)\n ], DateFloatingFilterComp.prototype, \"userComponentFactory\", void 0);\n return DateFloatingFilterComp;\n}(component_1.Component));\nexports.DateFloatingFilterComp = DateFloatingFilterComp;\nvar NumberFloatingFilterComp = /** @class */ (function (_super) {\n __extends(NumberFloatingFilterComp, _super);\n function NumberFloatingFilterComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NumberFloatingFilterComp.prototype.asFloatingFilterText = function (toParse) {\n var currentParentModel = this.currentParentModel();\n if (toParse == null && currentParentModel == null) {\n return '';\n }\n if (toParse == null && currentParentModel != null && currentParentModel.type !== 'inRange') {\n this.eColumnFloatingFilter.disabled = false;\n return '';\n }\n if (currentParentModel != null && currentParentModel.type === 'inRange') {\n this.eColumnFloatingFilter.disabled = true;\n return this.parseAsText(currentParentModel);\n }\n this.eColumnFloatingFilter.disabled = false;\n return this.parseAsText(toParse);\n };\n NumberFloatingFilterComp.prototype.parseAsText = function (model) {\n var number = this.asNumber(model.filter);\n if (model.type && model.type === 'inRange') {\n var numberTo = this.asNumber(model.filterTo);\n return (number ? number + '' : '') +\n '-' +\n (numberTo ? numberTo + '' : '');\n }\n return number != null ? number + '' : '';\n };\n NumberFloatingFilterComp.prototype.asParentModel = function () {\n var currentParentModel = this.currentParentModel();\n var filterValueNumber = this.asNumber(this.eColumnFloatingFilter.value);\n var filterValueText = this.eColumnFloatingFilter.value;\n var modelFilterValue = null;\n if (filterValueNumber == null && filterValueText === '') {\n modelFilterValue = null;\n }\n else if (filterValueNumber == null) {\n modelFilterValue = currentParentModel.filter;\n }\n else {\n modelFilterValue = filterValueNumber;\n }\n return {\n type: currentParentModel.type,\n filter: modelFilterValue,\n filterTo: !currentParentModel ? null : currentParentModel.filterTo,\n filterType: 'number'\n };\n };\n NumberFloatingFilterComp.prototype.asNumber = function (value) {\n if (value == null) {\n return null;\n }\n if (value === '') {\n return null;\n }\n var asNumber = Number(value);\n var invalidNumber = !utils_1._.isNumeric(asNumber);\n return invalidNumber ? null : asNumber;\n };\n return NumberFloatingFilterComp;\n}(InputTextFloatingFilterComp));\nexports.NumberFloatingFilterComp = NumberFloatingFilterComp;\nvar SetFloatingFilterComp = /** @class */ (function (_super) {\n __extends(SetFloatingFilterComp, _super);\n function SetFloatingFilterComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SetFloatingFilterComp.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.eColumnFloatingFilter.disabled = true;\n };\n SetFloatingFilterComp.prototype.asFloatingFilterText = function (parentModel) {\n this.eColumnFloatingFilter.disabled = true;\n if (!parentModel) {\n return '';\n }\n // also supporting old filter model for backwards compatibility\n var values = (parentModel instanceof Array) ? parentModel : parentModel.values;\n if (values.length === 0) {\n return '';\n }\n var arrayToDisplay = values.length > 10 ? values.slice(0, 10).concat('...') : values;\n return \"(\" + values.length + \") \" + arrayToDisplay.join(\",\");\n };\n SetFloatingFilterComp.prototype.parseAsText = function (model) {\n return this.asFloatingFilterText(model);\n };\n SetFloatingFilterComp.prototype.asParentModel = function () {\n if (this.eColumnFloatingFilter.value == null || this.eColumnFloatingFilter.value === '') {\n return {\n values: [],\n filterType: 'set'\n };\n }\n return {\n values: this.eColumnFloatingFilter.value.split(\",\"),\n filterType: 'set'\n };\n };\n SetFloatingFilterComp.prototype.equalModels = function (left, right) {\n return false;\n };\n return SetFloatingFilterComp;\n}(InputTextFloatingFilterComp));\nexports.SetFloatingFilterComp = SetFloatingFilterComp;\nvar ReadModelAsStringFloatingFilterComp = /** @class */ (function (_super) {\n __extends(ReadModelAsStringFloatingFilterComp, _super);\n function ReadModelAsStringFloatingFilterComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ReadModelAsStringFloatingFilterComp.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.eColumnFloatingFilter.disabled = true;\n };\n ReadModelAsStringFloatingFilterComp.prototype.onParentModelChanged = function (parentModel) {\n this.eColumnFloatingFilter.value = this.asFloatingFilterText(this.currentParentModel());\n };\n ReadModelAsStringFloatingFilterComp.prototype.asFloatingFilterText = function (parentModel) {\n return parentModel;\n };\n ReadModelAsStringFloatingFilterComp.prototype.parseAsText = function (model) {\n return model;\n };\n ReadModelAsStringFloatingFilterComp.prototype.asParentModel = function () {\n return null;\n };\n return ReadModelAsStringFloatingFilterComp;\n}(InputTextFloatingFilterComp));\nexports.ReadModelAsStringFloatingFilterComp = ReadModelAsStringFloatingFilterComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar context_1 = require(\"../../context/context\");\nvar rowNodeBlock_1 = require(\"../cache/rowNodeBlock\");\nvar rowRenderer_1 = require(\"../../rendering/rowRenderer\");\nvar utils_1 = require(\"../../utils\");\nvar InfiniteBlock = /** @class */ (function (_super) {\n __extends(InfiniteBlock, _super);\n function InfiniteBlock(pageNumber, params) {\n var _this = _super.call(this, pageNumber, params) || this;\n _this.cacheParams = params;\n return _this;\n }\n InfiniteBlock.prototype.createBlankRowNode = function (rowIndex) {\n var rowNode = _super.prototype.createBlankRowNode.call(this, rowIndex);\n rowNode.uiLevel = 0;\n this.setIndexAndTopOnRowNode(rowNode, rowIndex);\n return rowNode;\n };\n InfiniteBlock.prototype.setDataAndId = function (rowNode, data, index) {\n if (utils_1._.exists(data)) {\n // this means if the user is not providing id's we just use the\n // index for the row. this will allow selection to work (that is based\n // on index) as long user is not inserting or deleting rows,\n // or wanting to keep selection between server side sorting or filtering\n rowNode.setDataAndId(data, index.toString());\n }\n else {\n rowNode.setDataAndId(undefined, undefined);\n }\n };\n InfiniteBlock.prototype.setRowNode = function (rowIndex, rowNode) {\n _super.prototype.setRowNode.call(this, rowIndex, rowNode);\n this.setIndexAndTopOnRowNode(rowNode, rowIndex);\n };\n InfiniteBlock.prototype.init = function () {\n _super.prototype.init.call(this, {\n context: this.getContext(),\n rowRenderer: this.rowRenderer\n });\n };\n InfiniteBlock.prototype.getNodeIdPrefix = function () {\n return null;\n };\n InfiniteBlock.prototype.getRow = function (displayIndex) {\n return this.getRowUsingLocalIndex(displayIndex);\n };\n InfiniteBlock.prototype.setIndexAndTopOnRowNode = function (rowNode, rowIndex) {\n rowNode.setRowIndex(rowIndex);\n rowNode.rowTop = this.cacheParams.rowHeight * rowIndex;\n };\n InfiniteBlock.prototype.loadFromDatasource = function () {\n var _this = this;\n // PROBLEM . . . . when the user sets sort via colDef.sort, then this code\n // is executing before the sort is set up, so server is not getting the sort\n // model. need to change with regards order - so the server side request is\n // AFTER thus it gets the right sort model.\n var params = {\n startRow: this.getStartRow(),\n endRow: this.getEndRow(),\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this),\n sortModel: this.cacheParams.sortModel,\n filterModel: this.cacheParams.filterModel,\n context: this.gridOptionsWrapper.getContext()\n };\n if (utils_1._.missing(this.cacheParams.datasource.getRows)) {\n console.warn(\"ag-Grid: datasource is missing getRows method\");\n return;\n }\n // check if old version of datasource used\n var getRowsParams = utils_1._.getFunctionParameters(this.cacheParams.datasource.getRows);\n if (getRowsParams.length > 1) {\n console.warn('ag-grid: It looks like your paging datasource is of the old type, taking more than one parameter.');\n console.warn('ag-grid: From ag-grid 1.9.0, now the getRows takes one parameter. See the documentation for details.');\n }\n // put in timeout, to force result to be async\n window.setTimeout(function () {\n _this.cacheParams.datasource.getRows(params);\n }, 0);\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], InfiniteBlock.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('rowRenderer'),\n __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n ], InfiniteBlock.prototype, \"rowRenderer\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], InfiniteBlock.prototype, \"init\", null);\n return InfiniteBlock;\n}(rowNodeBlock_1.RowNodeBlock));\nexports.InfiniteBlock = InfiniteBlock;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../../context/context\");\nvar utils_1 = require(\"../../../utils\");\n// table for crc calculation\n// from: https://referencesource.microsoft.com/#System/sys/System/IO/compression/Crc32Helper.cs,3b31978c7d7f7246,references\nvar crcTable = [\n 0, 1996959894, -301047508, -1727442502, 124634137, 1886057615, -379345611, -1637575261, 249268274,\n 2044508324, -522852066, -1747789432, 162941995, 2125561021, -407360249, -1866523247, 498536548,\n 1789927666, -205950648, -2067906082, 450548861, 1843258603, -187386543, -2083289657, 325883990,\n 1684777152, -43845254, -1973040660, 335633487, 1661365465, -99664541, -1928851979, 997073096,\n 1281953886, -715111964, -1570279054, 1006888145, 1258607687, -770865667, -1526024853, 901097722,\n 1119000684, -608450090, -1396901568, 853044451, 1172266101, -589951537, -1412350631, 651767980,\n 1373503546, -925412992, -1076862698, 565507253, 1454621731, -809855591, -1195530993, 671266974,\n 1594198024, -972236366, -1324619484, 795835527, 1483230225, -1050600021, -1234817731, 1994146192,\n 31158534, -1731059524, -271249366, 1907459465, 112637215, -1614814043, -390540237, 2013776290,\n 251722036, -1777751922, -519137256, 2137656763, 141376813, -1855689577, -429695999, 1802195444,\n 476864866, -2056965928, -228458418, 1812370925, 453092731, -2113342271, -183516073, 1706088902,\n 314042704, -1950435094, -54949764, 1658658271, 366619977, -1932296973, -69972891, 1303535960,\n 984961486, -1547960204, -725929758, 1256170817, 1037604311, -1529756563, -740887301, 1131014506,\n 879679996, -1385723834, -631195440, 1141124467, 855842277, -1442165665, -586318647, 1342533948,\n 654459306, -1106571248, -921952122, 1466479909, 544179635, -1184443383, -832445281, 1591671054,\n 702138776, -1328506846, -942167884, 1504918807, 783551873, -1212326853, -1061524307, -306674912,\n -1698712650, 62317068, 1957810842, -355121351, -1647151185, 81470997, 1943803523, -480048366,\n -1805370492, 225274430, 2053790376, -468791541, -1828061283, 167816743, 2097651377, -267414716,\n -2029476910, 503444072, 1762050814, -144550051, -2140837941, 426522225, 1852507879, -19653770,\n -1982649376, 282753626, 1742555852, -105259153, -1900089351, 397917763, 1622183637, -690576408,\n -1580100738, 953729732, 1340076626, -776247311, -1497606297, 1068828381, 1219638859, -670225446,\n -1358292148, 906185462, 1090812512, -547295293, -1469587627, 829329135, 1181335161, -882789492,\n -1134132454, 628085408, 1382605366, -871598187, -1156888829, 570562233, 1426400815, -977650754,\n -1296233688, 733239954, 1555261956, -1026031705, -1244606671, 752459403, 1541320221, -1687895376,\n -328994266, 1969922972, 40735498, -1677130071, -351390145, 1913087877, 83908371, -1782625662,\n -491226604, 2075208622, 213261112, -1831694693, -438977011, 2094854071, 198958881, -2032938284,\n -237706686, 1759359992, 534414190, -2118248755, -155638181, 1873836001, 414664567, -2012718362,\n -15766928, 1711684554, 285281116, -1889165569, -127750551, 1634467795, 376229701, -1609899400,\n -686959890, 1308918612, 956543938, -1486412191, -799009033, 1231636301, 1047427035, -1362007478,\n -640263460, 1088359270, 936918000, -1447252397, -558129467, 1202900863, 817233897, -1111625188,\n -893730166, 1404277552, 615818150, -1160759803, -841546093, 1423857449, 601450431, -1285129682,\n -1000256840, 1567103746, 711928724, -1274298825, -1022587231, 1510334235, 755167117\n];\nvar ZipContainer = /** @class */ (function () {\n function ZipContainer() {\n var _this = this;\n this.folders = [];\n this.files = [];\n this.addFolder = function (path) {\n _this.folders.push({\n path: path,\n created: new Date()\n });\n };\n }\n ZipContainer.prototype.addFolders = function (paths) {\n paths.forEach(this.addFolder);\n };\n ZipContainer.prototype.addFile = function (path, content) {\n this.files.push({\n path: path,\n created: new Date(),\n content: content\n });\n };\n ZipContainer.prototype.clearStream = function () {\n this.folders = [];\n this.files = [];\n };\n ZipContainer.prototype.getContent = function (mimeType) {\n if (mimeType === void 0) { mimeType = 'application/zip'; }\n var textOutput = this.buildFileStream();\n var uInt8Output = this.buildUint8Array(textOutput);\n this.clearStream();\n return new Blob([uInt8Output], { type: mimeType });\n };\n ZipContainer.prototype.buildFileStream = function (fData) {\n if (fData === void 0) { fData = ''; }\n var totalFiles = this.folders.concat(this.files);\n var len = totalFiles.length;\n var foData = '';\n var lL = 0;\n var cL = 0;\n for (var _i = 0, totalFiles_1 = totalFiles; _i < totalFiles_1.length; _i++) {\n var currentFile = totalFiles_1[_i];\n var _a = this.getHeader(currentFile, lL), fileHeader = _a.fileHeader, folderHeader = _a.folderHeader, content = _a.content;\n lL += fileHeader.length + content.length;\n cL += folderHeader.length;\n fData += fileHeader + content;\n foData += folderHeader;\n }\n var foEnd = this.buildFolderEnd(len, cL, lL);\n return fData + foData + foEnd;\n };\n ZipContainer.prototype.getHeader = function (currentFile, offset) {\n var content = currentFile.content, path = currentFile.path, created = currentFile.created;\n var utf8_encode = utils_1._.utf8_encode, decToHex = utils_1._.decToHex;\n var utfPath = utf8_encode(path);\n var isUTF8 = utfPath !== path;\n var time = this.convertTime(created);\n var dt = this.convertDate(created);\n var extraFields = '';\n if (isUTF8) {\n var uExtraFieldPath = decToHex(1, 1) + decToHex(this.getFromCrc32Table(utfPath), 4) + utfPath;\n extraFields = \"\\x75\\x70\" + decToHex(uExtraFieldPath.length, 2) + uExtraFieldPath;\n }\n var header = '\\x0A\\x00' +\n (isUTF8 ? '\\x00\\x08' : '\\x00\\x00') +\n '\\x00\\x00' +\n decToHex(time, 2) + // last modified time\n decToHex(dt, 2) + // last modified date\n decToHex(content ? this.getFromCrc32Table(content) : 0, 4) +\n decToHex(content ? content.length : 0, 4) + // compressed size\n decToHex(content ? content.length : 0, 4) + // uncompressed size\n decToHex(utfPath.length, 2) + // file name length\n decToHex(extraFields.length, 2); // extra field length\n var fileHeader = 'PK\\x03\\x04' + header + utfPath + extraFields;\n var folderHeader = 'PK\\x01\\x02' + // central header\n '\\x14\\x00' +\n header + // file header\n '\\x00\\x00' +\n '\\x00\\x00' +\n '\\x00\\x00' +\n (content ? '\\x00\\x00\\x00\\x00' : '\\x10\\x00\\x00\\x00') + // external file attributes\n decToHex(offset, 4) + // relative offset of local header\n utfPath + // file name\n extraFields; // extra field\n return { fileHeader: fileHeader, folderHeader: folderHeader, content: content || '' };\n };\n ZipContainer.prototype.buildFolderEnd = function (tLen, cLen, lLen) {\n var decToHex = utils_1._.decToHex;\n return 'PK\\x05\\x06' + // central folder end\n '\\x00\\x00' +\n '\\x00\\x00' +\n decToHex(tLen, 2) + // total number of entries in the central folder\n decToHex(tLen, 2) + // total number of entries in the central folder\n decToHex(cLen, 4) + // size of the central folder\n decToHex(lLen, 4) + // central folder start offset\n '\\x00\\x00';\n };\n ZipContainer.prototype.buildUint8Array = function (content) {\n var uint8 = new Uint8Array(content.length);\n for (var i = 0; i < uint8.length; i++) {\n uint8[i] = content.charCodeAt(i);\n }\n return uint8;\n };\n ZipContainer.prototype.getFromCrc32Table = function (content, crc) {\n if (crc === void 0) { crc = 0; }\n if (!content.length) {\n return 0;\n }\n crc ^= (-1);\n var j = 0;\n var k = 0;\n var l = 0;\n for (var i = 0; i < content.length; i++) {\n j = content.charCodeAt(i);\n k = (crc ^ j) & 0xFF;\n l = crcTable[k];\n crc = (crc >>> 8) ^ l;\n }\n return crc ^ (-1);\n };\n ZipContainer.prototype.convertTime = function (date) {\n var time = date.getHours();\n time <<= 6;\n time = time | date.getMinutes();\n time <<= 5;\n time = time | date.getSeconds() / 2;\n return time;\n };\n ZipContainer.prototype.convertDate = function (date) {\n var dt = date.getFullYear() - 1980;\n dt <<= 4;\n dt = dt | (date.getMonth() + 1);\n dt <<= 5;\n dt = dt | date.getDate();\n return dt;\n };\n ZipContainer = __decorate([\n context_1.Bean('zipContainer')\n ], ZipContainer);\n return ZipContainer;\n}());\nexports.ZipContainer = ZipContainer;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar beanStub_1 = require(\"../context/beanStub\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar scrollVisibleService_1 = require(\"../gridPanel/scrollVisibleService\");\nvar selectionController_1 = require(\"../selectionController\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar utils_1 = require(\"../utils\");\nvar PaginationAutoPageSizeService = /** @class */ (function (_super) {\n __extends(PaginationAutoPageSizeService, _super);\n function PaginationAutoPageSizeService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PaginationAutoPageSizeService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_BODY_HEIGHT_CHANGED, this.onBodyHeightChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.notActive = function () {\n return !this.gridOptionsWrapper.isPaginationAutoPageSize();\n };\n PaginationAutoPageSizeService.prototype.onScrollVisibilityChanged = function () {\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.onBodyHeightChanged = function () {\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.checkPageSize = function () {\n if (this.notActive()) {\n return;\n }\n var rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n var bodyHeight = this.gridPanel.getBodyHeight();\n if (bodyHeight > 0) {\n var newPageSize = Math.floor(bodyHeight / rowHeight);\n this.gridOptionsWrapper.setProperty('paginationPageSize', newPageSize);\n }\n };\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], PaginationAutoPageSizeService.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], PaginationAutoPageSizeService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('scrollVisibleService'),\n __metadata(\"design:type\", scrollVisibleService_1.ScrollVisibleService)\n ], PaginationAutoPageSizeService.prototype, \"scrollVisibleService\", void 0);\n PaginationAutoPageSizeService = __decorate([\n context_1.Bean('paginationAutoPageSizeService')\n ], PaginationAutoPageSizeService);\n return PaginationAutoPageSizeService;\n}(beanStub_1.BeanStub));\nexports.PaginationAutoPageSizeService = PaginationAutoPageSizeService;\nvar PaginationProxy = /** @class */ (function (_super) {\n __extends(PaginationProxy, _super);\n function PaginationProxy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.currentPage = 0;\n _this.topRowIndex = 0;\n _this.bottomRowIndex = 0;\n _this.pixelOffset = 0;\n return _this;\n }\n PaginationProxy.prototype.postConstruct = function () {\n this.active = this.gridOptionsWrapper.isPagination();\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, 'paginationPageSize', this.onModelUpdated.bind(this));\n this.onModelUpdated();\n };\n PaginationProxy.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n var res = this.rowModel.ensureRowHeightsValid(startPixel, endPixel, this.getPageFirstRow(), this.getPageLastRow());\n if (res) {\n this.setIndexesAndBounds();\n }\n return res;\n };\n PaginationProxy.prototype.isLastRowFound = function () {\n return this.rowModel.isLastRowFound();\n };\n PaginationProxy.prototype.onModelUpdated = function (modelUpdatedEvent) {\n this.setIndexesAndBounds();\n var paginationChangedEvent = {\n type: events_1.Events.EVENT_PAGINATION_CHANGED,\n animate: modelUpdatedEvent ? modelUpdatedEvent.animate : false,\n newData: modelUpdatedEvent ? modelUpdatedEvent.newData : false,\n newPage: modelUpdatedEvent ? modelUpdatedEvent.newPage : false,\n keepRenderedRows: modelUpdatedEvent ? modelUpdatedEvent.keepRenderedRows : false,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(paginationChangedEvent);\n };\n PaginationProxy.prototype.goToPage = function (page) {\n if (!this.active) {\n return;\n }\n if (this.currentPage === page) {\n return;\n }\n this.currentPage = page;\n var event = {\n type: events_1.Events.EVENT_MODEL_UPDATED,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: true,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.onModelUpdated(event);\n };\n PaginationProxy.prototype.getPixelOffset = function () {\n return this.pixelOffset;\n };\n PaginationProxy.prototype.getRow = function (index) {\n return this.rowModel.getRow(index);\n };\n PaginationProxy.prototype.getRowNode = function (id) {\n return this.rowModel.getRowNode(id);\n };\n PaginationProxy.prototype.getRowIndexAtPixel = function (pixel) {\n return this.rowModel.getRowIndexAtPixel(pixel);\n };\n PaginationProxy.prototype.getCurrentPageHeight = function () {\n if (utils_1._.missing(this.topRowBounds) || utils_1._.missing(this.bottomRowBounds)) {\n return 0;\n }\n return this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight - this.topRowBounds.rowTop;\n };\n PaginationProxy.prototype.isRowPresent = function (rowNode) {\n if (!this.rowModel.isRowPresent(rowNode)) {\n return false;\n }\n var nodeIsInPage = rowNode.rowIndex >= this.topRowIndex && rowNode.rowIndex <= this.bottomRowIndex;\n return nodeIsInPage;\n };\n PaginationProxy.prototype.isEmpty = function () {\n return this.rowModel.isEmpty();\n };\n PaginationProxy.prototype.isRowsToRender = function () {\n return this.rowModel.isRowsToRender();\n };\n PaginationProxy.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n return this.rowModel.getNodesInRangeForSelection(firstInRange, lastInRange);\n };\n PaginationProxy.prototype.forEachNode = function (callback) {\n return this.rowModel.forEachNode(callback);\n };\n PaginationProxy.prototype.getType = function () {\n return this.rowModel.getType();\n };\n PaginationProxy.prototype.getRowBounds = function (index) {\n return this.rowModel.getRowBounds(index);\n };\n PaginationProxy.prototype.getPageFirstRow = function () {\n return this.pageSize * this.currentPage;\n };\n PaginationProxy.prototype.getPageLastRow = function () {\n var totalLastRow = (this.pageSize * (this.currentPage + 1)) - 1;\n var pageLastRow = this.rowModel.getPageLastRow();\n if (pageLastRow > totalLastRow) {\n return totalLastRow;\n }\n else {\n return pageLastRow;\n }\n };\n PaginationProxy.prototype.getRowCount = function () {\n return this.rowModel.getRowCount();\n };\n PaginationProxy.prototype.goToPageWithIndex = function (index) {\n if (!this.active) {\n return;\n }\n var pageNumber = Math.floor(index / this.pageSize);\n this.goToPage(pageNumber);\n };\n PaginationProxy.prototype.getTotalRowCount = function () {\n return this.rowModel.getPageLastRow() + 1;\n };\n PaginationProxy.prototype.isLastPageFound = function () {\n return this.rowModel.isLastRowFound();\n };\n PaginationProxy.prototype.getCurrentPage = function () {\n return this.currentPage;\n };\n PaginationProxy.prototype.goToNextPage = function () {\n this.goToPage(this.currentPage + 1);\n };\n PaginationProxy.prototype.goToPreviousPage = function () {\n this.goToPage(this.currentPage - 1);\n };\n PaginationProxy.prototype.goToFirstPage = function () {\n this.goToPage(0);\n };\n PaginationProxy.prototype.goToLastPage = function () {\n var rowCount = this.rowModel.getPageLastRow() + 1;\n var lastPage = Math.floor(rowCount / this.pageSize);\n this.goToPage(lastPage);\n };\n PaginationProxy.prototype.getPageSize = function () {\n return this.pageSize;\n };\n PaginationProxy.prototype.getTotalPages = function () {\n return this.totalPages;\n };\n PaginationProxy.prototype.setPageSize = function () {\n // show put this into super class\n this.pageSize = this.gridOptionsWrapper.getPaginationPageSize();\n if (!(this.pageSize >= 1)) {\n this.pageSize = 100;\n }\n };\n PaginationProxy.prototype.setIndexesAndBounds = function () {\n if (this.active) {\n this.setPageSize();\n var totalRowCount = this.getTotalRowCount();\n this.totalPages = Math.floor((totalRowCount - 1) / this.pageSize) + 1;\n if (this.currentPage >= this.totalPages) {\n this.currentPage = this.totalPages - 1;\n }\n if (!utils_1._.isNumeric(this.currentPage) || this.currentPage < 0) {\n this.currentPage = 0;\n }\n this.topRowIndex = this.pageSize * this.currentPage;\n this.bottomRowIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n var maxRowAllowed = this.rowModel.getPageLastRow();\n if (this.bottomRowIndex > maxRowAllowed) {\n this.bottomRowIndex = maxRowAllowed;\n }\n }\n else {\n this.pageSize = this.rowModel.getPageLastRow() + 1;\n this.totalPages = 1;\n this.currentPage = 0;\n this.topRowIndex = 0;\n this.bottomRowIndex = this.rowModel.getPageLastRow();\n }\n this.topRowBounds = this.rowModel.getRowBounds(this.topRowIndex);\n this.bottomRowBounds = this.rowModel.getRowBounds(this.bottomRowIndex);\n this.pixelOffset = utils_1._.exists(this.topRowBounds) ? this.topRowBounds.rowTop : 0;\n };\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], PaginationProxy.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], PaginationProxy.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], PaginationProxy.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('selectionController'),\n __metadata(\"design:type\", selectionController_1.SelectionController)\n ], PaginationProxy.prototype, \"selectionController\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], PaginationProxy.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], PaginationProxy.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], PaginationProxy.prototype, \"postConstruct\", null);\n PaginationProxy = __decorate([\n context_1.Bean('paginationProxy')\n ], PaginationProxy);\n return PaginationProxy;\n}(beanStub_1.BeanStub));\nexports.PaginationProxy = PaginationProxy;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar events_1 = require(\"../events\");\nvar propertyKeys_1 = require(\"../propertyKeys\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar utils_1 = require(\"../utils\");\nvar ComponentUtil = /** @class */ (function () {\n function ComponentUtil() {\n }\n ComponentUtil.getEventCallbacks = function () {\n if (!ComponentUtil.EVENT_CALLBACKS) {\n ComponentUtil.EVENT_CALLBACKS = [];\n ComponentUtil.EVENT_CALLBACKS_NO_PREFIX = [];\n ComponentUtil.EVENTS.forEach(function (eventName) {\n ComponentUtil.EVENT_CALLBACKS.push(ComponentUtil.getCallbackForEvent(eventName));\n ComponentUtil.EVENT_CALLBACKS_NO_PREFIX.push(eventName);\n });\n }\n return ComponentUtil.EVENT_CALLBACKS;\n };\n ComponentUtil.copyAttributesToGridOptions = function (gridOptions, component, skipEventDeprecationCheck) {\n if (skipEventDeprecationCheck === void 0) { skipEventDeprecationCheck = false; }\n checkForDeprecated(component);\n // create empty grid options if none were passed\n if (typeof gridOptions !== 'object') {\n gridOptions = {};\n }\n // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n var pGridOptions = gridOptions;\n // add in all the simple properties\n ComponentUtil.ARRAY_PROPERTIES\n .concat(ComponentUtil.STRING_PROPERTIES)\n .concat(ComponentUtil.OBJECT_PROPERTIES)\n .concat(ComponentUtil.FUNCTION_PROPERTIES)\n .forEach(function (key) {\n if (typeof component[key] !== 'undefined') {\n pGridOptions[key] = component[key];\n }\n });\n ComponentUtil.BOOLEAN_PROPERTIES.forEach(function (key) {\n if (typeof component[key] !== 'undefined') {\n pGridOptions[key] = ComponentUtil.toBoolean(component[key]);\n }\n });\n ComponentUtil.NUMBER_PROPERTIES.forEach(function (key) {\n if (typeof component[key] !== 'undefined') {\n pGridOptions[key] = ComponentUtil.toNumber(component[key]);\n }\n });\n ComponentUtil.getEventCallbacks().forEach(function (funcName) {\n if (typeof component[funcName] !== 'undefined') {\n pGridOptions[funcName] = component[funcName];\n }\n });\n // purely for event deprecation checks (for frameworks - wouldn't apply for non-fw versions)\n if (!skipEventDeprecationCheck) {\n ComponentUtil.EVENT_CALLBACKS_NO_PREFIX.forEach(function (funcName) {\n // react uses onXXX...not sure why this is diff to the other frameworks\n var onMethodName = ComponentUtil.getCallbackForEvent(funcName);\n if (typeof component[funcName] !== 'undefined' ||\n typeof component[onMethodName] !== 'undefined') {\n gridOptionsWrapper_1.GridOptionsWrapper.checkEventDeprecation(funcName);\n }\n });\n }\n return gridOptions;\n };\n ComponentUtil.getCallbackForEvent = function (eventName) {\n if (!eventName || eventName.length < 2) {\n return eventName;\n }\n else {\n return 'on' + eventName[0].toUpperCase() + eventName.substr(1);\n }\n };\n ComponentUtil.processOnChange = function (changes, gridOptions, api, columnApi) {\n if (!changes) {\n return;\n }\n checkForDeprecated(changes);\n // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n var pGridOptions = gridOptions;\n // check if any change for the simple types, and if so, then just copy in the new value\n ComponentUtil.ARRAY_PROPERTIES\n .concat(ComponentUtil.OBJECT_PROPERTIES)\n .concat(ComponentUtil.STRING_PROPERTIES)\n .forEach(function (key) {\n if (changes[key]) {\n pGridOptions[key] = changes[key].currentValue;\n }\n });\n ComponentUtil.BOOLEAN_PROPERTIES.forEach(function (key) {\n if (changes[key]) {\n pGridOptions[key] = ComponentUtil.toBoolean(changes[key].currentValue);\n }\n });\n ComponentUtil.NUMBER_PROPERTIES.forEach(function (key) {\n if (changes[key]) {\n pGridOptions[key] = ComponentUtil.toNumber(changes[key].currentValue);\n }\n });\n ComponentUtil.getEventCallbacks().forEach(function (funcName) {\n if (changes[funcName]) {\n pGridOptions[funcName] = changes[funcName].currentValue;\n }\n });\n if (changes.enableCellTextSelection) {\n api.setEnableCellTextSelection(ComponentUtil.toBoolean(changes.enableCellTextSelection.currentValue));\n }\n if (changes.showToolPanel) {\n api.showToolPanel(ComponentUtil.toBoolean(changes.showToolPanel.currentValue));\n }\n if (changes.quickFilterText) {\n api.setQuickFilter(changes.quickFilterText.currentValue);\n }\n if (changes.rowData) {\n api.setRowData(changes.rowData.currentValue);\n }\n if (changes.pinnedTopRowData) {\n api.setPinnedTopRowData(changes.pinnedTopRowData.currentValue);\n }\n if (changes.pinnedBottomRowData) {\n api.setPinnedBottomRowData(changes.pinnedBottomRowData.currentValue);\n }\n if (changes.columnDefs) {\n api.setColumnDefs(changes.columnDefs.currentValue, \"gridOptionsChanged\");\n }\n if (changes.datasource) {\n api.setDatasource(changes.datasource.currentValue);\n }\n if (changes.headerHeight) {\n api.setHeaderHeight(ComponentUtil.toNumber(changes.headerHeight.currentValue));\n }\n if (changes.paginationPageSize) {\n api.paginationSetPageSize(ComponentUtil.toNumber(changes.paginationPageSize.currentValue));\n }\n if (changes.pivotMode) {\n columnApi.setPivotMode(ComponentUtil.toBoolean(changes.pivotMode.currentValue));\n }\n if (changes.groupRemoveSingleChildren) {\n api.setGroupRemoveSingleChildren(ComponentUtil.toBoolean(changes.groupRemoveSingleChildren.currentValue));\n }\n if (changes.suppressRowDrag) {\n api.setSuppressRowDrag(ComponentUtil.toBoolean(changes.suppressRowDrag.currentValue));\n }\n if (changes.gridAutoHeight) {\n api.setGridAutoHeight(ComponentUtil.toBoolean(changes.gridAutoHeight.currentValue));\n }\n if (changes.suppressClipboardPaste) {\n api.setSuppressClipboardPaste(ComponentUtil.toBoolean(changes.suppressClipboardPaste.currentValue));\n }\n if (changes.sideBar) {\n api.setSideBar(changes.sideBar.currentValue);\n }\n if (changes.datasource) {\n api.setDatasource(changes.datasource.currentValue);\n }\n // copy changes into an event for dispatch\n var event = {\n type: events_1.Events.EVENT_COMPONENT_STATE_CHANGED,\n api: gridOptions.api,\n columnApi: gridOptions.columnApi\n };\n utils_1._.iterateObject(changes, function (key, value) {\n event[key] = value;\n });\n api.dispatchEvent(event);\n };\n ComponentUtil.toBoolean = function (value) {\n if (typeof value === 'boolean') {\n return value;\n }\n else if (typeof value === 'string') {\n // for boolean, compare to empty String to allow attributes appearing with\n // not value to be treated as 'true'\n return value.toUpperCase() === 'TRUE' || value == '';\n }\n else {\n return false;\n }\n };\n ComponentUtil.toNumber = function (value) {\n if (typeof value === 'number') {\n return value;\n }\n else if (typeof value === 'string') {\n return Number(value);\n }\n else {\n return undefined;\n }\n };\n // all the events are populated in here AFTER this class (at the bottom of the file).\n ComponentUtil.EVENTS = [];\n ComponentUtil.STRING_PROPERTIES = propertyKeys_1.PropertyKeys.STRING_PROPERTIES;\n ComponentUtil.OBJECT_PROPERTIES = propertyKeys_1.PropertyKeys.OBJECT_PROPERTIES;\n ComponentUtil.ARRAY_PROPERTIES = propertyKeys_1.PropertyKeys.ARRAY_PROPERTIES;\n ComponentUtil.NUMBER_PROPERTIES = propertyKeys_1.PropertyKeys.NUMBER_PROPERTIES;\n ComponentUtil.BOOLEAN_PROPERTIES = propertyKeys_1.PropertyKeys.BOOLEAN_PROPERTIES;\n ComponentUtil.FUNCTION_PROPERTIES = propertyKeys_1.PropertyKeys.FUNCTION_PROPERTIES;\n ComponentUtil.ALL_PROPERTIES = propertyKeys_1.PropertyKeys.ALL_PROPERTIES;\n return ComponentUtil;\n}());\nexports.ComponentUtil = ComponentUtil;\nutils_1._.iterateObject(events_1.Events, function (key, value) {\n ComponentUtil.EVENTS.push(value);\n});\nfunction checkForDeprecated(changes) {\n if (changes.rowDeselected || changes.onRowDeselected) {\n console.warn('ag-grid: as of v3.4 rowDeselected no longer exists. Please check the docs.');\n }\n}\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar templateService_1 = require(\"../templateService\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar eventService_1 = require(\"../eventService\");\nvar rowComp_1 = require(\"./rowComp\");\nvar events_1 = require(\"../events\");\nvar constants_1 = require(\"../constants\");\nvar cellComp_1 = require(\"./cellComp\");\nvar context_1 = require(\"../context/context\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar logger_1 = require(\"../logger\");\nvar focusedCellController_1 = require(\"../focusedCellController\");\nvar cellNavigationService_1 = require(\"../cellNavigationService\");\nvar gridCell_1 = require(\"../entities/gridCell\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar paginationProxy_1 = require(\"../rowModels/paginationProxy\");\nvar gridApi_1 = require(\"../gridApi\");\nvar pinnedRowModel_1 = require(\"../rowModels/pinnedRowModel\");\nvar beans_1 = require(\"./beans\");\nvar animationFrameService_1 = require(\"../misc/animationFrameService\");\nvar maxDivHeightScaler_1 = require(\"./maxDivHeightScaler\");\nvar utils_1 = require(\"../utils\");\nvar RowRenderer = /** @class */ (function (_super) {\n __extends(RowRenderer, _super);\n function RowRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // map of row ids to row objects. keeps track of which elements\n // are rendered for which rows in the dom.\n _this.rowCompsByIndex = {};\n _this.floatingTopRowComps = [];\n _this.floatingBottomRowComps = [];\n // we only allow one refresh at a time, otherwise the internal memory structure here\n // will get messed up. this can happen if the user has a cellRenderer, and inside the\n // renderer they call an API method that results in another pass of the refresh,\n // then it will be trying to draw rows in the middle of a refresh.\n _this.refreshInProgress = false;\n return _this;\n }\n RowRenderer.prototype.registerGridCore = function (gridCore) {\n this.gridCore = gridCore;\n };\n RowRenderer.prototype.agWire = function (loggerFactory) {\n this.logger = loggerFactory.create(\"RowRenderer\");\n };\n RowRenderer.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.rowContainers = this.gridPanel.getRowContainers();\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_PAGINATION_CHANGED, this.onPageLoaded.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_BODY_SCROLL, this.redrawAfterScroll.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_BODY_HEIGHT_CHANGED, this.redrawAfterScroll.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n this.embedFullWidthRows = this.printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();\n this.redrawAfterModelUpdate();\n };\n RowRenderer.prototype.onDomLayoutChanged = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n var embedFullWidthRows = printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();\n // if moving towards or away from print layout, means we need to destroy all rows, as rows are not laid\n // out using absolute positioning when doing print layout\n var destroyRows = embedFullWidthRows !== this.embedFullWidthRows || this.printLayout !== printLayout;\n this.printLayout = printLayout;\n this.embedFullWidthRows = embedFullWidthRows;\n if (destroyRows) {\n this.redrawAfterModelUpdate();\n }\n };\n // for row models that have datasources, when we update the datasource, we need to force the rowRenderer\n // to redraw all rows. otherwise the old rows from the old datasource will stay displayed.\n RowRenderer.prototype.datasourceChanged = function () {\n this.firstRenderedRow = 0;\n this.lastRenderedRow = -1;\n var rowIndexesToRemove = Object.keys(this.rowCompsByIndex);\n this.removeRowComps(rowIndexesToRemove);\n };\n RowRenderer.prototype.onPageLoaded = function (refreshEvent) {\n if (utils_1._.missing(refreshEvent)) {\n refreshEvent = {\n type: events_1.Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: false\n };\n }\n this.onModelUpdated(refreshEvent);\n };\n RowRenderer.prototype.getAllCellsForColumn = function (column) {\n var eCells = [];\n utils_1._.iterateObject(this.rowCompsByIndex, callback);\n utils_1._.iterateObject(this.floatingBottomRowComps, callback);\n utils_1._.iterateObject(this.floatingTopRowComps, callback);\n function callback(key, rowComp) {\n var eCell = rowComp.getCellForCol(column);\n if (eCell) {\n eCells.push(eCell);\n }\n }\n return eCells;\n };\n RowRenderer.prototype.refreshFloatingRowComps = function () {\n this.refreshFloatingRows(this.floatingTopRowComps, this.pinnedRowModel.getPinnedTopRowData(), this.rowContainers.floatingTopPinnedLeft, this.rowContainers.floatingTopPinnedRight, this.rowContainers.floatingTop, this.rowContainers.floatingTopFullWidth);\n this.refreshFloatingRows(this.floatingBottomRowComps, this.pinnedRowModel.getPinnedBottomRowData(), this.rowContainers.floatingBottomPinnedLeft, this.rowContainers.floatingBottomPinnedRight, this.rowContainers.floatingBottom, this.rowContainers.floatingBottomFullWith);\n };\n RowRenderer.prototype.refreshFloatingRows = function (rowComps, rowNodes, pinnedLeftContainerComp, pinnedRightContainerComp, bodyContainerComp, fullWidthContainerComp) {\n var _this = this;\n rowComps.forEach(function (row) {\n row.destroy();\n });\n rowComps.length = 0;\n if (rowNodes) {\n rowNodes.forEach(function (node) {\n var rowComp = new rowComp_1.RowComp(_this.$scope, bodyContainerComp, pinnedLeftContainerComp, pinnedRightContainerComp, fullWidthContainerComp, node, _this.beans, false, false, _this.printLayout, _this.embedFullWidthRows);\n rowComp.init();\n rowComps.push(rowComp);\n });\n }\n this.flushContainers(rowComps);\n };\n RowRenderer.prototype.onPinnedRowDataChanged = function () {\n // recycling rows in order to ensure cell editing is not cancelled\n var params = {\n recycleRows: true\n };\n this.redrawAfterModelUpdate(params);\n };\n RowRenderer.prototype.onModelUpdated = function (refreshEvent) {\n var params = {\n recycleRows: refreshEvent.keepRenderedRows,\n animate: refreshEvent.animate,\n newData: refreshEvent.newData,\n newPage: refreshEvent.newPage,\n // because this is a model updated event (not pinned rows), we\n // can skip updating the pinned rows. this is needed so that if user\n // is doing transaction updates, the pinned rows are not getting constantly\n // trashed - or editing cells in pinned rows are not refreshed and put into read mode\n onlyBody: true\n };\n this.redrawAfterModelUpdate(params);\n };\n // if the row nodes are not rendered, no index is returned\n RowRenderer.prototype.getRenderedIndexesForRowNodes = function (rowNodes) {\n var result = [];\n if (utils_1._.missing(rowNodes)) {\n return result;\n }\n utils_1._.iterateObject(this.rowCompsByIndex, function (index, renderedRow) {\n var rowNode = renderedRow.getRowNode();\n if (rowNodes.indexOf(rowNode) >= 0) {\n result.push(index);\n }\n });\n return result;\n };\n RowRenderer.prototype.redrawRows = function (rowNodes) {\n if (!rowNodes || rowNodes.length == 0) {\n return;\n }\n // we only need to be worried about rendered rows, as this method is\n // called to what's rendered. if the row isn't rendered, we don't care\n var indexesToRemove = this.getRenderedIndexesForRowNodes(rowNodes);\n // remove the rows\n this.removeRowComps(indexesToRemove);\n // add draw them again\n this.redrawAfterModelUpdate({\n recycleRows: true\n });\n };\n RowRenderer.prototype.getCellToRestoreFocusToAfterRefresh = function (params) {\n var focusedCell = params.suppressKeepFocus ? null : this.focusedCellController.getFocusCellToUseAfterRefresh();\n if (utils_1._.missing(focusedCell)) {\n return null;\n }\n // if the dom is not actually focused on a cell, then we don't try to refocus. the problem this\n // solves is with editing - if the user is editing, eg focus is on a text field, and not on the\n // cell itself, then the cell can be registered as having focus, however it's the text field that\n // has the focus and not the cell div. therefore, when the refresh is finished, the grid will focus\n // the cell, and not the textfield. that means if the user is in a text field, and the grid refreshes,\n // the focus is lost from the text field. we do not want this.\n var activeElement = document.activeElement;\n var domData = this.gridOptionsWrapper.getDomData(activeElement, cellComp_1.CellComp.DOM_DATA_KEY_CELL_COMP);\n var elementIsNotACellDev = utils_1._.missing(domData);\n if (elementIsNotACellDev) {\n return null;\n }\n return focusedCell;\n };\n // gets called after changes to the model.\n RowRenderer.prototype.redrawAfterModelUpdate = function (params) {\n if (params === void 0) { params = {}; }\n this.getLockOnRefresh();\n var focusedCell = this.getCellToRestoreFocusToAfterRefresh(params);\n this.sizeContainerToPageHeight();\n this.scrollToTopIfNewData(params);\n // never recycle rows when print layout, we draw each row again from scratch. this is because print layout\n // uses normal dom layout to put cells into dom - it doesn't allow reordering rows.\n var recycleRows = !this.printLayout && params.recycleRows;\n var animate = params.animate && this.gridOptionsWrapper.isAnimateRows();\n var rowsToRecycle = this.binRowComps(recycleRows);\n this.redraw(rowsToRecycle, animate);\n if (!params.onlyBody) {\n this.refreshFloatingRowComps();\n }\n this.restoreFocusedCell(focusedCell);\n this.releaseLockOnRefresh();\n };\n RowRenderer.prototype.scrollToTopIfNewData = function (params) {\n var scrollToTop = params.newData || params.newPage;\n var suppressScrollToTop = this.gridOptionsWrapper.isSuppressScrollOnNewData();\n if (scrollToTop && !suppressScrollToTop) {\n this.gridPanel.scrollToTop();\n }\n };\n RowRenderer.prototype.sizeContainerToPageHeight = function () {\n var containers = [\n this.rowContainers.body,\n this.rowContainers.fullWidth,\n this.rowContainers.pinnedLeft,\n this.rowContainers.pinnedRight\n ];\n if (this.printLayout) {\n containers.forEach(function (container) { return container.setHeight(null); });\n return;\n }\n var containerHeight = this.paginationProxy.getCurrentPageHeight();\n // we need at least 1 pixel for the horizontal scroll to work. so if there are now rows,\n // we still want the scroll to be present, otherwise there would be no way to scroll the header\n // which might be needed us user wants to access columns\n // on the RHS - and if that was where the filter was that cause no rows to be presented, there\n // is no way to remove the filter.\n if (containerHeight === 0) {\n containerHeight = 1;\n }\n this.maxDivHeightScaler.setModelHeight(containerHeight);\n var realHeight = this.maxDivHeightScaler.getUiContainerHeight();\n containers.forEach(function (container) { return container.setHeight(realHeight); });\n };\n RowRenderer.prototype.getLockOnRefresh = function () {\n if (this.refreshInProgress) {\n throw new Error(\"ag-Grid: cannot get grid to draw rows when it is in the middle of drawing rows. \" +\n \"Your code probably called a grid API method while the grid was in the render stage. To overcome \" +\n \"this, put the API call into a timeout, eg instead of api.refreshView(), \" +\n \"call setTimeout(function(){api.refreshView(),0}). To see what part of your code \" +\n \"that caused the refresh check this stacktrace.\");\n }\n this.refreshInProgress = true;\n };\n RowRenderer.prototype.releaseLockOnRefresh = function () {\n this.refreshInProgress = false;\n };\n // sets the focus to the provided cell, if the cell is provided. this way, the user can call refresh without\n // worry about the focus been lost. this is important when the user is using keyboard navigation to do edits\n // and the cellEditor is calling 'refresh' to get other cells to update (as other cells might depend on the\n // edited cell).\n RowRenderer.prototype.restoreFocusedCell = function (gridCell) {\n if (gridCell) {\n this.focusedCellController.setFocusedCell(gridCell.rowIndex, gridCell.column, gridCell.floating, true);\n }\n };\n RowRenderer.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.forEachRowComp(function (key, rowComp) {\n rowComp.stopEditing(cancel);\n });\n };\n RowRenderer.prototype.forEachCellComp = function (callback) {\n this.forEachRowComp(function (key, rowComp) { return rowComp.forEachCellComp(callback); });\n };\n RowRenderer.prototype.forEachRowComp = function (callback) {\n utils_1._.iterateObject(this.rowCompsByIndex, callback);\n utils_1._.iterateObject(this.floatingTopRowComps, callback);\n utils_1._.iterateObject(this.floatingBottomRowComps, callback);\n };\n RowRenderer.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n var rowComp = this.rowCompsByIndex[rowIndex];\n if (rowComp) {\n rowComp.addEventListener(eventName, callback);\n }\n };\n RowRenderer.prototype.flashCells = function (params) {\n if (params === void 0) { params = {}; }\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) { return cellComp.flashCell(); });\n };\n RowRenderer.prototype.refreshCells = function (params) {\n if (params === void 0) { params = {}; }\n var refreshCellParams = {\n forceRefresh: params.force,\n newData: false\n };\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) { return cellComp.refreshCell(refreshCellParams); });\n };\n RowRenderer.prototype.getCellRendererInstances = function (params) {\n var res = [];\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) {\n var cellRenderer = cellComp.getCellRenderer();\n if (cellRenderer) {\n res.push(cellRenderer);\n }\n });\n return res;\n };\n RowRenderer.prototype.getCellEditorInstances = function (params) {\n var res = [];\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) {\n var cellEditor = cellComp.getCellEditor();\n if (cellEditor) {\n res.push(cellEditor);\n }\n });\n return res;\n };\n RowRenderer.prototype.getEditingCells = function () {\n var res = [];\n this.forEachCellComp(function (cellComp) {\n if (cellComp.isEditing()) {\n var gridCellDef = cellComp.getGridCell().getGridCellDef();\n res.push(gridCellDef);\n }\n });\n return res;\n };\n // calls the callback for each cellComp that match the provided rowNodes and columns. eg if one row node\n // and two columns provided, that identifies 4 cells, so callback gets called 4 times, once for each cell.\n RowRenderer.prototype.forEachCellCompFiltered = function (rowNodes, columns, callback) {\n var _this = this;\n var rowIdsMap;\n if (utils_1._.exists(rowNodes)) {\n rowIdsMap = {\n top: {},\n bottom: {},\n normal: {}\n };\n rowNodes.forEach(function (rowNode) {\n if (rowNode.rowPinned === constants_1.Constants.PINNED_TOP) {\n rowIdsMap.top[rowNode.id] = true;\n }\n else if (rowNode.rowPinned === constants_1.Constants.PINNED_BOTTOM) {\n rowIdsMap.bottom[rowNode.id] = true;\n }\n else {\n rowIdsMap.normal[rowNode.id] = true;\n }\n });\n }\n var colIdsMap;\n if (utils_1._.exists(columns)) {\n colIdsMap = {};\n columns.forEach(function (colKey) {\n var column = _this.columnController.getGridColumn(colKey);\n if (utils_1._.exists(column)) {\n colIdsMap[column.getId()] = true;\n }\n });\n }\n var processRow = function (rowComp) {\n var rowNode = rowComp.getRowNode();\n var id = rowNode.id;\n var floating = rowNode.rowPinned;\n // skip this row if it is missing from the provided list\n if (utils_1._.exists(rowIdsMap)) {\n if (floating === constants_1.Constants.PINNED_BOTTOM) {\n if (!rowIdsMap.bottom[id]) {\n return;\n }\n }\n else if (floating === constants_1.Constants.PINNED_TOP) {\n if (!rowIdsMap.top[id]) {\n return;\n }\n }\n else {\n if (!rowIdsMap.normal[id]) {\n return;\n }\n }\n }\n rowComp.forEachCellComp(function (cellComp) {\n var colId = cellComp.getColumn().getId();\n var excludeColFromRefresh = colIdsMap && !colIdsMap[colId];\n if (excludeColFromRefresh) {\n return;\n }\n callback(cellComp);\n });\n };\n utils_1._.iterateObject(this.rowCompsByIndex, function (index, rowComp) {\n processRow(rowComp);\n });\n if (this.floatingTopRowComps) {\n this.floatingTopRowComps.forEach(processRow);\n }\n if (this.floatingBottomRowComps) {\n this.floatingBottomRowComps.forEach(processRow);\n }\n };\n RowRenderer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n var rowIndexesToRemove = Object.keys(this.rowCompsByIndex);\n this.removeRowComps(rowIndexesToRemove);\n };\n RowRenderer.prototype.binRowComps = function (recycleRows) {\n var _this = this;\n var indexesToRemove;\n var rowsToRecycle = {};\n if (recycleRows) {\n indexesToRemove = [];\n utils_1._.iterateObject(this.rowCompsByIndex, function (index, rowComp) {\n var rowNode = rowComp.getRowNode();\n if (utils_1._.exists(rowNode.id)) {\n rowsToRecycle[rowNode.id] = rowComp;\n delete _this.rowCompsByIndex[index];\n }\n else {\n indexesToRemove.push(index);\n }\n });\n }\n else {\n indexesToRemove = Object.keys(this.rowCompsByIndex);\n }\n this.removeRowComps(indexesToRemove);\n return rowsToRecycle;\n };\n // takes array of row indexes\n RowRenderer.prototype.removeRowComps = function (rowsToRemove) {\n var _this = this;\n // if no fromIndex then set to -1, which will refresh everything\n // let realFromIndex = -1;\n rowsToRemove.forEach(function (indexToRemove) {\n var renderedRow = _this.rowCompsByIndex[indexToRemove];\n renderedRow.destroy();\n delete _this.rowCompsByIndex[indexToRemove];\n });\n };\n // gets called when rows don't change, but viewport does, so after:\n // 1) height of grid body changes, ie number of displayed rows has changed\n // 2) grid scrolled to new position\n // 3) ensure index visible (which is a scroll)\n RowRenderer.prototype.redrawAfterScroll = function () {\n this.getLockOnRefresh();\n this.redraw(null, false, true);\n this.releaseLockOnRefresh();\n };\n RowRenderer.prototype.removeRowCompsNotToDraw = function (indexesToDraw) {\n // for speedy lookup, dump into map\n var indexesToDrawMap = {};\n indexesToDraw.forEach(function (index) { return (indexesToDrawMap[index] = true); });\n var existingIndexes = Object.keys(this.rowCompsByIndex);\n var indexesNotToDraw = utils_1._.filter(existingIndexes, function (index) { return !indexesToDrawMap[index]; });\n this.removeRowComps(indexesNotToDraw);\n };\n RowRenderer.prototype.calculateIndexesToDraw = function () {\n var _this = this;\n // all in all indexes in the viewport\n var indexesToDraw = utils_1._.createArrayOfNumbers(this.firstRenderedRow, this.lastRenderedRow);\n // add in indexes of rows we want to keep, because they are currently editing\n utils_1._.iterateObject(this.rowCompsByIndex, function (indexStr, rowComp) {\n var index = Number(indexStr);\n if (index < _this.firstRenderedRow || index > _this.lastRenderedRow) {\n if (_this.keepRowBecauseEditingOrFocused(rowComp)) {\n indexesToDraw.push(index);\n }\n }\n });\n indexesToDraw.sort(function (a, b) { return a - b; });\n return indexesToDraw;\n };\n RowRenderer.prototype.redraw = function (rowsToRecycle, animate, afterScroll) {\n var _this = this;\n if (animate === void 0) { animate = false; }\n if (afterScroll === void 0) { afterScroll = false; }\n this.maxDivHeightScaler.updateOffset();\n this.workOutFirstAndLastRowsToRender();\n // the row can already exist and be in the following:\n // rowsToRecycle -> if model change, then the index may be different, however row may\n // exist here from previous time (mapped by id).\n // this.rowCompsByIndex -> if just a scroll, then this will contain what is currently in the viewport\n // this is all the indexes we want, including those that already exist, so this method\n // will end up going through each index and drawing only if the row doesn't already exist\n var indexesToDraw = this.calculateIndexesToDraw();\n this.removeRowCompsNotToDraw(indexesToDraw);\n // never animate when doing print layout - as we want to get things ready to print as quickly as possible,\n // otherwise we risk the printer printing a row that's half faded (half way through fading in)\n if (this.printLayout) {\n animate = false;\n }\n // add in new rows\n var nextVmTurnFunctions = [];\n var rowComps = [];\n indexesToDraw.forEach(function (rowIndex) {\n var rowComp = _this.createOrUpdateRowComp(rowIndex, rowsToRecycle, animate, afterScroll);\n if (utils_1._.exists(rowComp)) {\n rowComps.push(rowComp);\n utils_1._.pushAll(nextVmTurnFunctions, rowComp.getAndClearNextVMTurnFunctions());\n }\n });\n this.flushContainers(rowComps);\n utils_1._.executeNextVMTurn(nextVmTurnFunctions);\n var useAnimationFrame = afterScroll && !this.gridOptionsWrapper.isSuppressAnimationFrame() && !this.printLayout;\n if (useAnimationFrame) {\n this.beans.taskQueue.addP2Task(this.destroyRowComps.bind(this, rowsToRecycle, animate));\n }\n else {\n this.destroyRowComps(rowsToRecycle, animate);\n }\n this.checkAngularCompile();\n };\n RowRenderer.prototype.flushContainers = function (rowComps) {\n utils_1._.iterateObject(this.rowContainers, function (key, rowContainerComp) {\n if (rowContainerComp) {\n rowContainerComp.flushRowTemplates();\n }\n });\n rowComps.forEach(function (rowComp) { return rowComp.afterFlush(); });\n };\n RowRenderer.prototype.onDisplayedColumnsChanged = function () {\n var pinningLeft = this.columnController.isPinningLeft();\n var pinningRight = this.columnController.isPinningRight();\n var atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;\n if (atLeastOneChanged) {\n this.pinningLeft = pinningLeft;\n this.pinningRight = pinningRight;\n if (this.embedFullWidthRows) {\n this.redrawFullWidthEmbeddedRows();\n }\n }\n };\n // when embedding, what gets showed in each section depends on what is pinned. eg if embedding group expand / collapse,\n // then it should go into the pinned left area if pinning left, or the center area if not pinning.\n RowRenderer.prototype.redrawFullWidthEmbeddedRows = function () {\n // if either of the pinned panels has shown / hidden, then need to redraw the fullWidth bits when\n // embedded, as what appears in each section depends on whether we are pinned or not\n var rowsToRemove = [];\n utils_1._.iterateObject(this.rowCompsByIndex, function (id, rowComp) {\n if (rowComp.isFullWidth()) {\n var rowIndex = rowComp.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n }\n });\n this.refreshFloatingRowComps();\n this.removeRowComps(rowsToRemove);\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.refreshFullWidthRows = function () {\n var rowsToRemove = [];\n utils_1._.iterateObject(this.rowCompsByIndex, function (id, rowComp) {\n if (rowComp.isFullWidth()) {\n var rowIndex = rowComp.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n }\n });\n this.removeRowComps(rowsToRemove);\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.createOrUpdateRowComp = function (rowIndex, rowsToRecycle, animate, afterScroll) {\n var rowNode;\n var rowComp = this.rowCompsByIndex[rowIndex];\n // if no row comp, see if we can get it from the previous rowComps\n if (!rowComp) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n if (utils_1._.exists(rowNode) && utils_1._.exists(rowsToRecycle) && rowsToRecycle[rowNode.id] && rowNode.alreadyRendered) {\n rowComp = rowsToRecycle[rowNode.id];\n rowsToRecycle[rowNode.id] = null;\n }\n }\n var creatingNewRowComp = !rowComp;\n if (creatingNewRowComp) {\n // create a new one\n if (!rowNode) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n }\n if (utils_1._.exists(rowNode)) {\n rowComp = this.createRowComp(rowNode, animate, afterScroll);\n }\n else {\n // this should never happen - if somehow we are trying to create\n // a row for a rowNode that does not exist.\n return;\n }\n }\n else {\n // ensure row comp is in right position in DOM\n rowComp.ensureDomOrder();\n }\n if (rowNode) {\n // set node as 'alreadyRendered' to ensure we only recycle rowComps that have been rendered, this ensures\n // we don't reuse rowComps that have been removed and then re-added in the same batch transaction.\n rowNode.alreadyRendered = true;\n }\n this.rowCompsByIndex[rowIndex] = rowComp;\n return rowComp;\n };\n RowRenderer.prototype.destroyRowComps = function (rowCompsMap, animate) {\n var delayedFuncs = [];\n utils_1._.iterateObject(rowCompsMap, function (nodeId, rowComp) {\n // if row was used, then it's null\n if (!rowComp) {\n return;\n }\n rowComp.destroy(animate);\n utils_1._.pushAll(delayedFuncs, rowComp.getAndClearDelayedDestroyFunctions());\n });\n utils_1._.executeInAWhile(delayedFuncs);\n };\n RowRenderer.prototype.checkAngularCompile = function () {\n var _this = this;\n // if we are doing angular compiling, then do digest the scope here\n if (this.gridOptionsWrapper.isAngularCompileRows()) {\n // we do it in a timeout, in case we are already in an apply\n window.setTimeout(function () {\n _this.$scope.$apply();\n }, 0);\n }\n };\n RowRenderer.prototype.workOutFirstAndLastRowsToRender = function () {\n var newFirst;\n var newLast;\n if (!this.paginationProxy.isRowsToRender()) {\n newFirst = 0;\n newLast = -1; // setting to -1 means nothing in range\n }\n else if (this.printLayout) {\n newFirst = this.paginationProxy.getPageFirstRow();\n newLast = this.paginationProxy.getPageLastRow();\n }\n else {\n var paginationOffset = this.paginationProxy ? this.paginationProxy.getPixelOffset() : 0;\n var maxDivHeightScaler = this.maxDivHeightScaler.getOffset();\n var bodyVRange = this.gridPanel.getVScrollPosition();\n var bodyTopPixel = bodyVRange.top;\n var bodyBottomPixel = bodyVRange.bottom;\n var bufferPixels = this.gridOptionsWrapper.getRowBufferInPixels();\n var firstPixel = bodyTopPixel + paginationOffset + maxDivHeightScaler - bufferPixels;\n var lastPixel = bodyBottomPixel + paginationOffset + maxDivHeightScaler + bufferPixels;\n this.ensureAllRowsInRangeHaveHeightsCalculated(firstPixel, lastPixel);\n var firstRowIndex = this.paginationProxy.getRowIndexAtPixel(firstPixel);\n var lastRowIndex = this.paginationProxy.getRowIndexAtPixel(lastPixel);\n var pageFirstRow = this.paginationProxy.getPageFirstRow();\n var pageLastRow = this.paginationProxy.getPageLastRow();\n // adjust, in case buffer extended actual size\n if (firstRowIndex < pageFirstRow) {\n firstRowIndex = pageFirstRow;\n }\n if (lastRowIndex > pageLastRow) {\n lastRowIndex = pageLastRow;\n }\n newFirst = firstRowIndex;\n newLast = lastRowIndex;\n }\n // sometimes user doesn't set CSS right and ends up with grid with no height and grid ends up\n // trying to render all the rows, eg 10,000+ rows. this will kill the browser. so instead of\n // killing the browser, we limit the number of rows. just in case some use case we didn't think\n // of, we also have a property to not do this operation.\n var rowLayoutNormal = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_NORMAL;\n var suppressRowCountRestriction = this.gridOptionsWrapper.isSuppressMaxRenderedRowRestriction();\n if (rowLayoutNormal && !suppressRowCountRestriction) {\n if (newLast - newFirst > 500) {\n newLast = newFirst + 500;\n }\n }\n var firstDiffers = newFirst !== this.firstRenderedRow;\n var lastDiffers = newLast !== this.lastRenderedRow;\n if (firstDiffers || lastDiffers) {\n this.firstRenderedRow = newFirst;\n this.lastRenderedRow = newLast;\n var event_1 = {\n type: events_1.Events.EVENT_VIEWPORT_CHANGED,\n firstRow: newFirst,\n lastRow: newLast,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n if (this.paginationProxy.isRowsToRender()) {\n var event_2 = {\n type: events_1.Events.EVENT_FIRST_DATA_RENDERED,\n firstRow: newFirst,\n lastRow: newLast,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEventOnce(event_2);\n }\n };\n RowRenderer.prototype.ensureAllRowsInRangeHaveHeightsCalculated = function (topPixel, bottomPixel) {\n // ensureRowHeightsVisible only works with CSRM, as it's the only row model that allows lazy row height calcs.\n // all the other row models just hard code so the method just returns back false\n var rowHeightsChanged = this.paginationProxy.ensureRowHeightsValid(topPixel, bottomPixel, -1, -1);\n if (rowHeightsChanged) {\n // if row heights have changed, we need to resize the containers the rows sit it\n this.sizeContainerToPageHeight();\n // we also need to update heightScaler as this has dependency of row container height\n this.maxDivHeightScaler.updateOffset();\n }\n };\n RowRenderer.prototype.getFirstVirtualRenderedRow = function () {\n return this.firstRenderedRow;\n };\n RowRenderer.prototype.getLastVirtualRenderedRow = function () {\n return this.lastRenderedRow;\n };\n // check that none of the rows to remove are editing or focused as:\n // a) if editing, we want to keep them, otherwise the user will loose the context of the edit,\n // eg user starts editing, enters some text, then scrolls down and then up, next time row rendered\n // the edit is reset - so we want to keep it rendered.\n // b) if focused, we want ot keep keyboard focus, so if user ctrl+c, it goes to clipboard,\n // otherwise the user can range select and drag (with focus cell going out of the viewport)\n // and then ctrl+c, nothing will happen if cell is removed from dom.\n RowRenderer.prototype.keepRowBecauseEditingOrFocused = function (rowComp) {\n var REMOVE_ROW = false;\n var KEEP_ROW = true;\n var rowNode = rowComp.getRowNode();\n var rowHasFocus = this.focusedCellController.isRowNodeFocused(rowNode);\n var rowIsEditing = rowComp.isEditing();\n var mightWantToKeepRow = rowHasFocus || rowIsEditing;\n // if we deffo don't want to keep it,\n if (!mightWantToKeepRow) {\n return REMOVE_ROW;\n }\n // editing row, only remove if it is no longer rendered, eg filtered out or new data set.\n // the reason we want to keep is if user is scrolling up and down, we don't want to loose\n // the context of the editing in process.\n var rowNodePresent = this.paginationProxy.isRowPresent(rowNode);\n return rowNodePresent ? KEEP_ROW : REMOVE_ROW;\n };\n RowRenderer.prototype.createRowComp = function (rowNode, animate, afterScroll) {\n var suppressAnimationFrame = this.gridOptionsWrapper.isSuppressAnimationFrame();\n // we don't use animations frames for printing, so the user can put the grid into print mode\n // and immediately print - otherwise the user would have to wait for the rows to draw in the background\n // (via the animation frames) which is awkward to do from code.\n // we only do the animation frames after scrolling, as this is where we want the smooth user experience.\n // having animation frames for other times makes the grid look 'jumpy'.\n var useAnimationFrameForCreate = afterScroll && !suppressAnimationFrame && !this.printLayout;\n var rowComp = new rowComp_1.RowComp(this.$scope, this.rowContainers.body, this.rowContainers.pinnedLeft, this.rowContainers.pinnedRight, this.rowContainers.fullWidth, rowNode, this.beans, animate, useAnimationFrameForCreate, this.printLayout, this.embedFullWidthRows);\n rowComp.init();\n return rowComp;\n };\n RowRenderer.prototype.getRenderedNodes = function () {\n var renderedRows = this.rowCompsByIndex;\n return Object.keys(renderedRows).map(function (key) {\n return renderedRows[key].getRowNode();\n });\n };\n // we use index for rows, but column object for columns, as the next column (by index) might not\n // be visible (header grouping) so it's not reliable, so using the column object instead.\n RowRenderer.prototype.navigateToNextCell = function (event, key, currentCell, allowUserOverride) {\n var nextCell;\n // we keep searching for a next cell until we find one. this is how the group rows get skipped\n while (true) {\n var cellComp = this.getComponentForCell(currentCell);\n var colSpanningList = cellComp.getColSpanningList();\n // if the current cell is spanning across multiple columns, we need to move\n // our current position to be the last cell on the right before finding the\n // the next target.\n if (key === constants_1.Constants.KEY_RIGHT && colSpanningList.length > 1) {\n currentCell = new gridCell_1.GridCell({\n rowIndex: currentCell.rowIndex,\n column: colSpanningList[colSpanningList.length - 1],\n floating: currentCell.floating\n });\n }\n nextCell = this.cellNavigationService.getNextCellToFocus(key, currentCell);\n if (utils_1._.missing(nextCell)) {\n break;\n }\n var skipGroupRows = this.gridOptionsWrapper.isGroupUseEntireRow();\n if (!skipGroupRows) {\n break;\n }\n var rowNode = this.paginationProxy.getRow(nextCell.rowIndex);\n if (!rowNode.group) {\n break;\n }\n }\n if (nextCell) {\n var cellComp = this.getComponentForCell(nextCell);\n nextCell = cellComp.getGridCell();\n }\n // allow user to override what cell to go to next. when doing normal cell navigation (with keys)\n // we allow this, however if processing 'enter after edit' we don't allow override\n if (allowUserOverride) {\n var userFunc = this.gridOptionsWrapper.getNavigateToNextCellFunc();\n if (utils_1._.exists(userFunc)) {\n var params = {\n key: key,\n previousCellDef: currentCell.getGridCellDef(),\n nextCellDef: nextCell ? nextCell.getGridCellDef() : null,\n event: event\n };\n var nextCellDef = userFunc(params);\n if (utils_1._.exists(nextCellDef)) {\n nextCell = new gridCell_1.GridCell(nextCellDef);\n }\n else {\n nextCell = null;\n }\n }\n }\n // no next cell means we have reached a grid boundary, eg left, right, top or bottom of grid\n if (!nextCell) {\n return;\n }\n this.ensureCellVisible(nextCell);\n this.focusedCellController.setFocusedCell(nextCell.rowIndex, nextCell.column, nextCell.floating, true);\n if (this.rangeController) {\n var gridCell = new gridCell_1.GridCell({ rowIndex: nextCell.rowIndex, floating: nextCell.floating, column: nextCell.column });\n this.rangeController.setRangeToCell(gridCell);\n }\n };\n RowRenderer.prototype.ensureCellVisible = function (gridCell) {\n // this scrolls the row into view\n if (utils_1._.missing(gridCell.floating)) {\n this.gridPanel.ensureIndexVisible(gridCell.rowIndex);\n }\n if (!gridCell.column.isPinned()) {\n this.gridPanel.ensureColumnVisible(gridCell.column);\n }\n // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible\n // floating cell, the scrolls get out of sync\n this.gridPanel.horizontallyScrollHeaderCenterAndFloatingCenter();\n // need to flush frames, to make sure the correct cells are rendered\n this.animationFrameService.flushAllFrames();\n };\n RowRenderer.prototype.startEditingCell = function (gridCell, keyPress, charPress) {\n var cell = this.getComponentForCell(gridCell);\n if (cell) {\n cell.startRowOrCellEdit(keyPress, charPress);\n }\n };\n RowRenderer.prototype.getComponentForCell = function (gridCell) {\n var rowComponent;\n switch (gridCell.floating) {\n case constants_1.Constants.PINNED_TOP:\n rowComponent = this.floatingTopRowComps[gridCell.rowIndex];\n break;\n case constants_1.Constants.PINNED_BOTTOM:\n rowComponent = this.floatingBottomRowComps[gridCell.rowIndex];\n break;\n default:\n rowComponent = this.rowCompsByIndex[gridCell.rowIndex];\n break;\n }\n if (!rowComponent) {\n return null;\n }\n var cellComponent = rowComponent.getRenderedCellForColumn(gridCell.column);\n return cellComponent;\n };\n RowRenderer.prototype.onTabKeyDown = function (previousRenderedCell, keyboardEvent) {\n var backwards = keyboardEvent.shiftKey;\n var success = this.moveToCellAfter(previousRenderedCell, backwards);\n if (success) {\n keyboardEvent.preventDefault();\n }\n };\n RowRenderer.prototype.tabToNextCell = function (backwards) {\n var focusedCell = this.focusedCellController.getFocusedCell();\n // if no focus, then cannot navigate\n if (utils_1._.missing(focusedCell)) {\n return false;\n }\n var renderedCell = this.getComponentForCell(focusedCell);\n // if cell is not rendered, means user has scrolled away from the cell\n if (utils_1._.missing(renderedCell)) {\n return false;\n }\n var result = this.moveToCellAfter(renderedCell, backwards);\n return result;\n };\n RowRenderer.prototype.moveToCellAfter = function (previousRenderedCell, backwards) {\n var editing = previousRenderedCell.isEditing();\n var res;\n if (editing) {\n if (this.gridOptionsWrapper.isFullRowEdit()) {\n res = this.moveToNextEditingRow(previousRenderedCell, backwards);\n }\n else {\n res = this.moveToNextEditingCell(previousRenderedCell, backwards);\n }\n }\n else {\n res = this.moveToNextCellNotEditing(previousRenderedCell, backwards);\n }\n return res;\n };\n RowRenderer.prototype.moveToNextEditingCell = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getGridCell();\n // need to do this before getting next cell to edit, in case the next cell\n // has editable function (eg colDef.editable=func() ) and it depends on the\n // result of this cell, so need to save updates from the first edit, in case\n // the value is referenced in the function.\n previousRenderedCell.stopEditing();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, true);\n var foundCell = utils_1._.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n nextRenderedCell.startEditingIfEnabled(null, null, true);\n nextRenderedCell.focusCell(false);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveToNextEditingRow = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getGridCell();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, true);\n var foundCell = utils_1._.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n this.moveEditToNextCellOrRow(previousRenderedCell, nextRenderedCell);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveToNextCellNotEditing = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getGridCell();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, false);\n var foundCell = utils_1._.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n nextRenderedCell.focusCell(true);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveEditToNextCellOrRow = function (previousRenderedCell, nextRenderedCell) {\n var pGridCell = previousRenderedCell.getGridCell();\n var nGridCell = nextRenderedCell.getGridCell();\n var rowsMatch = pGridCell.rowIndex === nGridCell.rowIndex && pGridCell.floating === nGridCell.floating;\n if (rowsMatch) {\n // same row, so we don't start / stop editing, we just move the focus along\n previousRenderedCell.setFocusOutOnEditor();\n nextRenderedCell.setFocusInOnEditor();\n }\n else {\n var pRow = previousRenderedCell.getRenderedRow();\n var nRow = nextRenderedCell.getRenderedRow();\n previousRenderedCell.setFocusOutOnEditor();\n pRow.stopEditing();\n nRow.startRowEditing();\n nextRenderedCell.setFocusInOnEditor();\n }\n nextRenderedCell.focusCell();\n };\n // called by the cell, when tab is pressed while editing.\n // @return: RenderedCell when navigation successful, otherwise null\n RowRenderer.prototype.findNextCellToFocusOn = function (gridCell, backwards, startEditing) {\n var nextCell = gridCell;\n while (true) {\n nextCell = this.cellNavigationService.getNextTabbedCell(nextCell, backwards);\n // allow user to override what cell to go to next\n var userFunc = this.gridOptionsWrapper.getTabToNextCellFunc();\n if (utils_1._.exists(userFunc)) {\n var params = {\n backwards: backwards,\n editing: startEditing,\n previousCellDef: gridCell.getGridCellDef(),\n nextCellDef: nextCell ? nextCell.getGridCellDef() : null\n };\n var nextCellDef = userFunc(params);\n if (utils_1._.exists(nextCellDef)) {\n nextCell = new gridCell_1.GridCell(nextCellDef);\n }\n else {\n nextCell = null;\n }\n }\n // if no 'next cell', means we have got to last cell of grid, so nothing to move to,\n // so bottom right cell going forwards, or top left going backwards\n if (!nextCell) {\n return null;\n }\n // if editing, but cell not editable, skip cell. we do this before we do all of\n // the 'ensure index visible' and 'flush all frames', otherwise if we are skipping\n // a bunch of cells (eg 10 rows) then all the work on ensuring cell visible is useless\n // (except for the last one) which causes grid to stall for a while.\n if (startEditing) {\n var rowNode = this.lookupRowNodeForCell(nextCell);\n var cellIsEditable = nextCell.column.isCellEditable(rowNode);\n if (!cellIsEditable) {\n continue;\n }\n }\n // this scrolls the row into view\n var cellIsNotFloating = utils_1._.missing(nextCell.floating);\n if (cellIsNotFloating) {\n this.gridPanel.ensureIndexVisible(nextCell.rowIndex);\n }\n // pinned columns don't scroll, so no need to ensure index visible\n if (!nextCell.column.isPinned()) {\n this.gridPanel.ensureColumnVisible(nextCell.column);\n }\n // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible\n // floating cell, the scrolls get out of sync\n this.gridPanel.horizontallyScrollHeaderCenterAndFloatingCenter();\n // get the grid panel to flush all animation frames - otherwise the call below to get the cellComp\n // could fail, if we just scrolled the grid (to make a cell visible) and the rendering hasn't finished.\n this.animationFrameService.flushAllFrames();\n // we have to call this after ensureColumnVisible - otherwise it could be a virtual column\n // or row that is not currently in view, hence the renderedCell would not exist\n var nextCellComp = this.getComponentForCell(nextCell);\n // if next cell is fullWidth row, then no rendered cell,\n // as fullWidth rows have no cells, so we skip it\n if (utils_1._.missing(nextCellComp)) {\n continue;\n }\n if (nextCellComp.isSuppressNavigable()) {\n continue;\n }\n // by default, when we click a cell, it gets selected into a range, so to keep keyboard navigation\n // consistent, we set into range here also.\n if (this.rangeController) {\n gridCell = new gridCell_1.GridCell({ rowIndex: nextCell.rowIndex, floating: nextCell.floating, column: nextCell.column });\n this.rangeController.setRangeToCell(gridCell);\n }\n // we successfully tabbed onto a grid cell, so return true\n return nextCellComp;\n }\n };\n RowRenderer.prototype.lookupRowNodeForCell = function (cell) {\n if (cell.floating === constants_1.Constants.PINNED_TOP) {\n return this.pinnedRowModel.getPinnedTopRow(cell.rowIndex);\n }\n if (cell.floating === constants_1.Constants.PINNED_BOTTOM) {\n return this.pinnedRowModel.getPinnedBottomRow(cell.rowIndex);\n }\n return this.paginationProxy.getRow(cell.rowIndex);\n };\n __decorate([\n context_1.Autowired(\"paginationProxy\"),\n __metadata(\"design:type\", paginationProxy_1.PaginationProxy)\n ], RowRenderer.prototype, \"paginationProxy\", void 0);\n __decorate([\n context_1.Autowired(\"columnController\"),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], RowRenderer.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired(\"gridOptionsWrapper\"),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], RowRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired(\"$scope\"),\n __metadata(\"design:type\", Object)\n ], RowRenderer.prototype, \"$scope\", void 0);\n __decorate([\n context_1.Autowired(\"expressionService\"),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], RowRenderer.prototype, \"expressionService\", void 0);\n __decorate([\n context_1.Autowired(\"templateService\"),\n __metadata(\"design:type\", templateService_1.TemplateService)\n ], RowRenderer.prototype, \"templateService\", void 0);\n __decorate([\n context_1.Autowired(\"valueService\"),\n __metadata(\"design:type\", valueService_1.ValueService)\n ], RowRenderer.prototype, \"valueService\", void 0);\n __decorate([\n context_1.Autowired(\"eventService\"),\n __metadata(\"design:type\", eventService_1.EventService)\n ], RowRenderer.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired(\"pinnedRowModel\"),\n __metadata(\"design:type\", pinnedRowModel_1.PinnedRowModel)\n ], RowRenderer.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n context_1.Autowired(\"loggerFactory\"),\n __metadata(\"design:type\", logger_1.LoggerFactory)\n ], RowRenderer.prototype, \"loggerFactory\", void 0);\n __decorate([\n context_1.Autowired(\"focusedCellController\"),\n __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n ], RowRenderer.prototype, \"focusedCellController\", void 0);\n __decorate([\n context_1.Autowired(\"cellNavigationService\"),\n __metadata(\"design:type\", cellNavigationService_1.CellNavigationService)\n ], RowRenderer.prototype, \"cellNavigationService\", void 0);\n __decorate([\n context_1.Autowired(\"columnApi\"),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], RowRenderer.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired(\"gridApi\"),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], RowRenderer.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired(\"beans\"),\n __metadata(\"design:type\", beans_1.Beans)\n ], RowRenderer.prototype, \"beans\", void 0);\n __decorate([\n context_1.Autowired(\"maxDivHeightScaler\"),\n __metadata(\"design:type\", maxDivHeightScaler_1.MaxDivHeightScaler)\n ], RowRenderer.prototype, \"maxDivHeightScaler\", void 0);\n __decorate([\n context_1.Autowired(\"animationFrameService\"),\n __metadata(\"design:type\", animationFrameService_1.AnimationFrameService)\n ], RowRenderer.prototype, \"animationFrameService\", void 0);\n __decorate([\n context_1.Optional(\"rangeController\"),\n __metadata(\"design:type\", Object)\n ], RowRenderer.prototype, \"rangeController\", void 0);\n __decorate([\n __param(0, context_1.Qualifier(\"loggerFactory\")),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], RowRenderer.prototype, \"agWire\", null);\n RowRenderer = __decorate([\n context_1.Bean(\"rowRenderer\")\n ], RowRenderer);\n return RowRenderer;\n}(beanStub_1.BeanStub));\nexports.RowRenderer = RowRenderer;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar utils_1 = require(\"../utils\");\nvar compIdSequence = new utils_1.NumberSequence();\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n function Component(template) {\n var _this = _super.call(this) || this;\n _this.childComponents = [];\n _this.annotatedEventListeners = [];\n _this.visible = true;\n // unique id for this row component. this is used for getting a reference to the HTML dom.\n // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying\n // around as we create a new rowComp instance for the same row node).\n _this.compId = compIdSequence.next();\n if (template) {\n _this.setTemplate(template);\n }\n return _this;\n }\n Component.prototype.getCompId = function () {\n return this.compId;\n };\n // for registered components only, eg creates AgCheckbox instance from ag-checkbox HTML tag\n Component.prototype.createChildComponentsFromTags = function (parentNode) {\n var _this = this;\n // we MUST take a copy of the list first, as the 'swapComponentForNode' adds comments into the DOM\n // which messes up the traversal order of the children.\n var childNodeList = utils_1._.copyNodeList(parentNode.childNodes);\n childNodeList.forEach(function (childNode) {\n var childComp = _this.getContext().createComponentFromElement(childNode, function (childComp) {\n // copy over all attributes, including css classes, so any attributes user put on the tag\n // wll be carried across\n _this.copyAttributesFromNode(childNode, childComp.getGui());\n });\n if (childComp) {\n // replace the tag (eg ag-checkbox) with the proper HTMLElement (eg 'div') in the dom\n _this.swapComponentForNode(childComp, parentNode, childNode);\n }\n else if (childNode.childNodes) {\n _this.createChildComponentsFromTags(childNode);\n }\n });\n };\n Component.prototype.copyAttributesFromNode = function (source, dest) {\n utils_1._.iterateNamedNodeMap(source.attributes, function (name, value) {\n dest.setAttribute(name, value);\n });\n };\n Component.prototype.swapComponentForNode = function (newComponent, parentNode, childNode) {\n var eComponent = newComponent.getGui();\n parentNode.replaceChild(eComponent, childNode);\n parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);\n this.childComponents.push(newComponent);\n this.swapInComponentForQuerySelectors(newComponent, childNode);\n };\n Component.prototype.swapInComponentForQuerySelectors = function (newComponent, childNode) {\n var thisProto = Object.getPrototypeOf(this);\n var thisNoType = this;\n while (thisProto != null) {\n var metaData = thisProto.__agComponentMetaData;\n var currentProtoName = (thisProto.constructor).name;\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n metaData[currentProtoName].querySelectors.forEach(function (querySelector) {\n if (thisNoType[querySelector.attributeName] === childNode) {\n thisNoType[querySelector.attributeName] = newComponent;\n }\n });\n }\n thisProto = Object.getPrototypeOf(thisProto);\n }\n };\n Component.prototype.setTemplate = function (template) {\n var eGui = utils_1._.loadTemplate(template);\n this.setTemplateFromElement(eGui);\n };\n Component.prototype.setTemplateFromElement = function (element) {\n this.eGui = element;\n this.eGui.__agComponent = this;\n this.addAnnotatedEventListeners();\n this.wireQuerySelectors();\n // context will not be available when user sets template in constructor\n var contextIsAvailable = !!this.getContext();\n if (contextIsAvailable) {\n this.createChildComponentsFromTags(this.getGui());\n }\n };\n Component.prototype.createChildComponentsPreConstruct = function () {\n // ui exists if user sets template in constructor. when this happens, we have to wait for the context\n // to be autoWired first before we can create child components.\n var uiExists = !!this.getGui();\n if (uiExists) {\n this.createChildComponentsFromTags(this.getGui());\n }\n };\n Component.prototype.wireQuerySelectors = function () {\n var _this = this;\n if (!this.eGui) {\n return;\n }\n var thisProto = Object.getPrototypeOf(this);\n var _loop_1 = function () {\n var metaData = thisProto.__agComponentMetaData;\n var currentProtoName = (thisProto.constructor).name;\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n var thisNoType_1 = this_1;\n metaData[currentProtoName].querySelectors.forEach(function (querySelector) {\n var resultOfQuery = _this.eGui.querySelector(querySelector.querySelector);\n if (resultOfQuery) {\n var backingComponent = resultOfQuery.__agComponent;\n if (backingComponent) {\n thisNoType_1[querySelector.attributeName] = backingComponent;\n }\n else {\n thisNoType_1[querySelector.attributeName] = resultOfQuery;\n }\n }\n else {\n // put debug msg in here if query selector fails???\n }\n });\n }\n thisProto = Object.getPrototypeOf(thisProto);\n };\n var this_1 = this;\n while (thisProto != null) {\n _loop_1();\n }\n };\n Component.prototype.addAnnotatedEventListeners = function () {\n var _this = this;\n this.removeAnnotatedEventListeners();\n if (!this.eGui) {\n return;\n }\n var listenerMethods = this.getAgComponentMetaData('listenerMethods');\n if (utils_1._.missingOrEmpty(listenerMethods)) {\n return;\n }\n if (!this.annotatedEventListeners) {\n this.annotatedEventListeners = [];\n }\n listenerMethods.forEach(function (eventListener) {\n var listener = _this[eventListener.methodName].bind(_this);\n _this.eGui.addEventListener(eventListener.eventName, listener);\n _this.annotatedEventListeners.push({ eventName: eventListener.eventName, listener: listener });\n });\n };\n Component.prototype.getAgComponentMetaData = function (key) {\n var res = [];\n var thisProto = Object.getPrototypeOf(this);\n while (thisProto != null) {\n var metaData = thisProto.__agComponentMetaData;\n var currentProtoName = (thisProto.constructor).name;\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName][key]) {\n res = res.concat(metaData[currentProtoName][key]);\n }\n thisProto = Object.getPrototypeOf(thisProto);\n }\n return res;\n };\n Component.prototype.removeAnnotatedEventListeners = function () {\n var _this = this;\n if (!this.annotatedEventListeners || !this.eGui) {\n return;\n }\n this.annotatedEventListeners.forEach(function (eventListener) {\n _this.eGui.removeEventListener(eventListener.eventName, eventListener.listener);\n });\n this.annotatedEventListeners = [];\n };\n Component.prototype.getGui = function () {\n return this.eGui;\n };\n // this method is for older code, that wants to provide the gui element,\n // it is not intended for this to be in ag-Stack\n Component.prototype.setGui = function (eGui) {\n this.eGui = eGui;\n };\n Component.prototype.queryForHtmlElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.queryForHtmlInputElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.appendChild = function (newChild) {\n if (utils_1._.isNodeOrElement(newChild)) {\n this.eGui.appendChild(newChild);\n }\n else {\n var childComponent = newChild;\n this.eGui.appendChild(childComponent.getGui());\n this.childComponents.push(childComponent);\n }\n };\n Component.prototype.addFeature = function (context, feature) {\n context.wireBean(feature);\n if (feature.destroy) {\n this.addDestroyFunc(feature.destroy.bind(feature));\n }\n };\n Component.prototype.isVisible = function () {\n return this.visible;\n };\n Component.prototype.setVisible = function (visible, visibilityMode) {\n var isDisplay = visibilityMode !== 'visibility';\n if (visible !== this.visible) {\n this.visible = visible;\n utils_1._.addOrRemoveCssClass(this.eGui, isDisplay ? 'ag-hidden' : 'ag-invisible', !visible);\n var event_1 = {\n type: Component.EVENT_VISIBLE_CHANGED,\n visible: this.visible\n };\n this.dispatchEvent(event_1);\n }\n };\n Component.prototype.addOrRemoveCssClass = function (className, addOrRemove) {\n utils_1._.addOrRemoveCssClass(this.eGui, className, addOrRemove);\n };\n Component.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.childComponents.forEach(function (childComponent) {\n if (childComponent && childComponent.destroy) {\n childComponent.destroy();\n }\n });\n this.childComponents.length = 0;\n this.removeAnnotatedEventListeners();\n };\n Component.prototype.addGuiEventListener = function (event, listener) {\n var _this = this;\n this.getGui().addEventListener(event, listener);\n this.addDestroyFunc(function () { return _this.getGui().removeEventListener(event, listener); });\n };\n Component.prototype.addCssClass = function (className) {\n utils_1._.addCssClass(this.getGui(), className);\n };\n Component.prototype.removeCssClass = function (className) {\n utils_1._.removeCssClass(this.getGui(), className);\n };\n Component.prototype.getAttribute = function (key) {\n var eGui = this.getGui();\n return eGui ? eGui.getAttribute(key) : null;\n };\n Component.prototype.getRefElement = function (refName) {\n return this.queryForHtmlElement('[ref=\"' + refName + '\"]');\n };\n Component.EVENT_VISIBLE_CHANGED = 'visibleChanged';\n __decorate([\n context_1.PreConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], Component.prototype, \"createChildComponentsPreConstruct\", null);\n return Component;\n}(beanStub_1.BeanStub));\nexports.Component = Component;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnGroup_1 = require(\"../entities/columnGroup\");\nvar originalColumnGroup_1 = require(\"../entities/originalColumnGroup\");\nvar context_1 = require(\"../context/context\");\nvar context_2 = require(\"../context/context\");\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar ColumnUtils = /** @class */ (function () {\n function ColumnUtils() {\n }\n ColumnUtils.prototype.calculateColInitialWidth = function (colDef) {\n if (!colDef.width) {\n // if no width defined in colDef, use default\n return this.gridOptionsWrapper.getColWidth();\n }\n else if (colDef.width < this.gridOptionsWrapper.getMinColWidth()) {\n // if width in col def to small, set to min width\n return this.gridOptionsWrapper.getMinColWidth();\n }\n else {\n // otherwise use the provided width\n return colDef.width;\n }\n };\n ColumnUtils.prototype.getOriginalPathForColumn = function (column, originalBalancedTree) {\n var result = [];\n var found = false;\n recursePath(originalBalancedTree, 0);\n // we should always find the path, but in case there is a bug somewhere, returning null\n // will make it fail rather than provide a 'hard to track down' bug\n if (found) {\n return result;\n }\n else {\n return null;\n }\n function recursePath(balancedColumnTree, dept) {\n for (var i = 0; i < balancedColumnTree.length; i++) {\n if (found) {\n // quit the search, so 'result' is kept with the found result\n return;\n }\n var node = balancedColumnTree[i];\n if (node instanceof originalColumnGroup_1.OriginalColumnGroup) {\n var nextNode = node;\n recursePath(nextNode.getChildren(), dept + 1);\n result[dept] = node;\n }\n else {\n if (node === column) {\n found = true;\n }\n }\n }\n }\n };\n /* public getPathForColumn(column: Column, allDisplayedColumnGroups: ColumnGroupChild[]): ColumnGroup[] {\n let result: ColumnGroup[] = [];\n let found = false;\n \n recursePath(allDisplayedColumnGroups, 0);\n \n // we should always find the path, but in case there is a bug somewhere, returning null\n // will make it fail rather than provide a 'hard to track down' bug\n if (found) {\n return result;\n } else {\n return null;\n }\n \n function recursePath(balancedColumnTree: ColumnGroupChild[], dept: number): void {\n \n for (let i = 0; i node;\n recursePath(nextNode.getChildren(), dept+1);\n result[dept] = node;\n } else {\n if (node === column) {\n found = true;\n }\n }\n }\n }\n }*/\n ColumnUtils.prototype.depthFirstOriginalTreeSearch = function (parent, tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof originalColumnGroup_1.OriginalColumnGroup) {\n _this.depthFirstOriginalTreeSearch(child, child.getChildren(), callback);\n }\n callback(child, parent);\n });\n };\n ColumnUtils.prototype.depthFirstAllColumnTreeSearch = function (tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof columnGroup_1.ColumnGroup) {\n _this.depthFirstAllColumnTreeSearch(child.getChildren(), callback);\n }\n callback(child);\n });\n };\n ColumnUtils.prototype.depthFirstDisplayedColumnTreeSearch = function (tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof columnGroup_1.ColumnGroup) {\n _this.depthFirstDisplayedColumnTreeSearch(child.getDisplayedChildren(), callback);\n }\n callback(child);\n });\n };\n __decorate([\n context_2.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ColumnUtils.prototype, \"gridOptionsWrapper\", void 0);\n ColumnUtils = __decorate([\n context_1.Bean('columnUtils')\n ], ColumnUtils);\n return ColumnUtils;\n}());\nexports.ColumnUtils = ColumnUtils;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rowNode_1 = require(\"../../entities/rowNode\");\nvar events_1 = require(\"../../events\");\nvar utils_1 = require(\"../../utils\");\nvar ClientSideNodeManager = /** @class */ (function () {\n function ClientSideNodeManager(rootNode, gridOptionsWrapper, context, eventService, columnController, gridApi, columnApi, selectionController) {\n this.nextId = 0;\n // when user is provide the id's, we also keep a map of ids to row nodes for convenience\n this.allNodesMap = {};\n this.rootNode = rootNode;\n this.gridOptionsWrapper = gridOptionsWrapper;\n this.context = context;\n this.eventService = eventService;\n this.columnController = columnController;\n this.gridApi = gridApi;\n this.columnApi = columnApi;\n this.selectionController = selectionController;\n this.rootNode.group = true;\n this.rootNode.level = -1;\n this.rootNode.id = ClientSideNodeManager.ROOT_NODE_ID;\n this.rootNode.allLeafChildren = [];\n this.rootNode.childrenAfterGroup = [];\n this.rootNode.childrenAfterSort = [];\n this.rootNode.childrenAfterFilter = [];\n // if we make this class a bean, then can annotate postConstruct\n this.postConstruct();\n }\n // @PostConstruct - this is not a bean, so postConstruct called by constructor\n ClientSideNodeManager.prototype.postConstruct = function () {\n // func below doesn't have 'this' pointer, so need to pull out these bits\n this.getNodeChildDetails = this.gridOptionsWrapper.getNodeChildDetailsFunc();\n this.suppressParentsInRowNodes = this.gridOptionsWrapper.isSuppressParentsInRowNodes();\n this.doesDataFlower = this.gridOptionsWrapper.getDoesDataFlowerFunc();\n this.isRowMasterFunc = this.gridOptionsWrapper.getIsRowMasterFunc();\n this.doingLegacyTreeData = utils_1._.exists(this.getNodeChildDetails);\n this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n };\n ClientSideNodeManager.prototype.getCopyOfNodesMap = function () {\n var result = utils_1._.cloneObject(this.allNodesMap);\n return result;\n };\n ClientSideNodeManager.prototype.getRowNode = function (id) {\n return this.allNodesMap[id];\n };\n ClientSideNodeManager.prototype.setRowData = function (rowData) {\n this.rootNode.childrenAfterFilter = null;\n this.rootNode.childrenAfterGroup = null;\n this.rootNode.childrenAfterSort = null;\n this.rootNode.childrenMapped = null;\n this.nextId = 0;\n this.allNodesMap = {};\n if (!rowData) {\n this.rootNode.allLeafChildren = [];\n this.rootNode.childrenAfterGroup = [];\n return;\n }\n // kick off recursion\n // we add rootNode as the parent, however if using ag-grid-enterprise, the grouping stage\n // sets the parent node on each row (even if we are not grouping). so setting parent node\n // here is for benefit of ag-grid-community users\n var result = this.recursiveFunction(rowData, this.rootNode, ClientSideNodeManager.TOP_LEVEL);\n if (this.doingLegacyTreeData) {\n this.rootNode.childrenAfterGroup = result;\n this.setLeafChildren(this.rootNode);\n }\n else {\n this.rootNode.allLeafChildren = result;\n }\n };\n ClientSideNodeManager.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n var _this = this;\n if (this.isLegacyTreeData()) {\n return null;\n }\n var add = rowDataTran.add, addIndex = rowDataTran.addIndex, remove = rowDataTran.remove, update = rowDataTran.update;\n var rowNodeTransaction = {\n remove: [],\n update: [],\n add: []\n };\n if (utils_1._.exists(add)) {\n var useIndex = typeof addIndex === 'number' && addIndex >= 0;\n if (useIndex) {\n // items get inserted in reverse order for index insertion\n add.reverse().forEach(function (item) {\n var newRowNode = _this.addRowNode(item, addIndex);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n else {\n add.forEach(function (item) {\n var newRowNode = _this.addRowNode(item);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n }\n if (utils_1._.exists(remove)) {\n var anyNodesSelected_1 = false;\n remove.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n if (rowNode.isSelected()) {\n anyNodesSelected_1 = true;\n }\n _this.updatedRowNode(rowNode, item, false);\n rowNodeTransaction.remove.push(rowNode);\n });\n if (anyNodesSelected_1) {\n this.selectionController.updateGroupsFromChildrenSelections();\n var event_1 = {\n type: events_1.Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n }\n if (utils_1._.exists(update)) {\n update.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n _this.updatedRowNode(rowNode, item, true);\n rowNodeTransaction.update.push(rowNode);\n });\n }\n if (rowNodeOrder) {\n utils_1._.sortRowNodesByOrder(this.rootNode.allLeafChildren, rowNodeOrder);\n }\n return rowNodeTransaction;\n };\n ClientSideNodeManager.prototype.addRowNode = function (data, index) {\n var newNode = this.createNode(data, this.rootNode, ClientSideNodeManager.TOP_LEVEL);\n if (utils_1._.exists(index)) {\n utils_1._.insertIntoArray(this.rootNode.allLeafChildren, newNode, index);\n }\n else {\n this.rootNode.allLeafChildren.push(newNode);\n }\n return newNode;\n };\n ClientSideNodeManager.prototype.lookupRowNode = function (data) {\n var rowNodeIdFunc = this.gridOptionsWrapper.getRowNodeIdFunc();\n var rowNode;\n if (utils_1._.exists(rowNodeIdFunc)) {\n // find rowNode using id\n var id = rowNodeIdFunc(data);\n rowNode = this.allNodesMap[id];\n if (!rowNode) {\n console.error(\"ag-Grid: could not find row id=\" + id + \", data item was not found for this id\");\n return null;\n }\n }\n else {\n // find rowNode using object references\n rowNode = utils_1._.find(this.rootNode.allLeafChildren, function (rowNode) { return rowNode.data === data; });\n if (!rowNode) {\n console.error(\"ag-Grid: could not find data item as object was not found\", data);\n return null;\n }\n }\n return rowNode;\n };\n ClientSideNodeManager.prototype.updatedRowNode = function (rowNode, data, update) {\n if (update) {\n // do update\n rowNode.updateData(data);\n }\n else {\n // do delete - setting 'tailingNodeInSequence = true' to ensure EVENT_SELECTION_CHANGED is not raised for\n // each row node updated, instead it is raised once by the calling code if any selected nodes exist.\n rowNode.setSelected(false, false, true);\n // so row renderer knows to fade row out (and not reposition it)\n rowNode.clearRowTop();\n utils_1._.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n delete this.allNodesMap[rowNode.id];\n }\n };\n ClientSideNodeManager.prototype.recursiveFunction = function (rowData, parent, level) {\n var _this = this;\n // make sure the rowData is an array and not a string of json - this was a commonly reported problem on the forum\n if (typeof rowData === 'string') {\n console.warn('ag-Grid: rowData must be an array, however you passed in a string. If you are loading JSON, make sure you convert the JSON string to JavaScript objects first');\n return;\n }\n var rowNodes = [];\n rowData.forEach(function (dataItem) {\n var node = _this.createNode(dataItem, parent, level);\n rowNodes.push(node);\n });\n return rowNodes;\n };\n ClientSideNodeManager.prototype.createNode = function (dataItem, parent, level) {\n var node = new rowNode_1.RowNode();\n this.context.wireBean(node);\n var doingTreeData = this.gridOptionsWrapper.isTreeData();\n var doingLegacyTreeData = !doingTreeData && utils_1._.exists(this.getNodeChildDetails);\n var nodeChildDetails = doingLegacyTreeData ? this.getNodeChildDetails(dataItem) : null;\n if (nodeChildDetails && nodeChildDetails.group) {\n node.group = true;\n node.childrenAfterGroup = this.recursiveFunction(nodeChildDetails.children, node, level + 1);\n node.expanded = nodeChildDetails.expanded === true;\n node.field = nodeChildDetails.field;\n node.key = nodeChildDetails.key;\n /** @deprecated is now 'master' */\n node.canFlower = node.master;\n // pull out all the leaf children and add to our node\n this.setLeafChildren(node);\n }\n else {\n node.group = false;\n if (doingTreeData) {\n node.master = false;\n node.expanded = false;\n }\n else {\n // this is the default, for when doing grid data\n if (this.doesDataFlower) {\n node.master = this.doesDataFlower(dataItem);\n }\n else if (this.doingMasterDetail) {\n // if we are doing master detail, then the\n // default is that everything can flower.\n if (this.isRowMasterFunc) {\n node.master = this.isRowMasterFunc(dataItem);\n }\n else {\n node.master = true;\n }\n }\n else {\n node.master = false;\n }\n var rowGroupColumns = this.columnController.getRowGroupColumns();\n var numRowGroupColumns = rowGroupColumns ? rowGroupColumns.length : 0;\n // need to take row group into account when determining level\n var masterRowLevel = level + numRowGroupColumns;\n node.expanded = node.master ? this.isExpanded(masterRowLevel) : false;\n }\n }\n // support for backwards compatibility, canFlow is now called 'master'\n node.canFlower = node.master;\n if (parent && !this.suppressParentsInRowNodes) {\n node.parent = parent;\n }\n node.level = level;\n node.setDataAndId(dataItem, this.nextId.toString());\n if (this.allNodesMap[node.id]) {\n console.warn(\"ag-grid: duplicate node id '\" + node.id + \"' detected from getRowNodeId callback, this could cause issues in your grid.\");\n }\n this.allNodesMap[node.id] = node;\n this.nextId++;\n return node;\n };\n ClientSideNodeManager.prototype.isExpanded = function (level) {\n var expandByDefault = this.gridOptionsWrapper.getGroupDefaultExpanded();\n if (expandByDefault === -1) {\n return true;\n }\n else {\n return level < expandByDefault;\n }\n };\n // this is only used for doing legacy tree data\n ClientSideNodeManager.prototype.setLeafChildren = function (node) {\n node.allLeafChildren = [];\n if (node.childrenAfterGroup) {\n node.childrenAfterGroup.forEach(function (childAfterGroup) {\n if (childAfterGroup.group) {\n if (childAfterGroup.allLeafChildren) {\n childAfterGroup.allLeafChildren.forEach(function (leafChild) { return node.allLeafChildren.push(leafChild); });\n }\n }\n else {\n node.allLeafChildren.push(childAfterGroup);\n }\n });\n }\n };\n ClientSideNodeManager.prototype.isLegacyTreeData = function () {\n var rowsAlreadyGrouped = utils_1._.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n if (rowsAlreadyGrouped) {\n console.warn('ag-Grid: adding and removing rows is not supported when using nodeChildDetailsFunc, ie it is not ' +\n 'supported for legacy tree data. Please see the docs on the new preferred way of providing tree data that works with delta updates.');\n return true;\n }\n else {\n return false;\n }\n };\n ClientSideNodeManager.TOP_LEVEL = 0;\n ClientSideNodeManager.ROOT_NODE_ID = 'ROOT_NODE_ID';\n return ClientSideNodeManager;\n}());\nexports.ClientSideNodeManager = ClientSideNodeManager;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar logger_1 = require(\"./logger\");\nvar eventService_1 = require(\"./eventService\");\nvar events_1 = require(\"./events\");\nvar context_3 = require(\"./context/context\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar context_4 = require(\"./context/context\");\nvar constants_1 = require(\"./constants\");\nvar columnApi_1 = require(\"./columnController/columnApi\");\nvar gridApi_1 = require(\"./gridApi\");\nvar utils_1 = require(\"./utils\");\nvar changedPath_1 = require(\"./rowModels/clientSide/changedPath\");\nvar SelectionController = /** @class */ (function () {\n function SelectionController() {\n }\n SelectionController.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('SelectionController');\n this.reset();\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.eventService.addEventListener(events_1.Events.EVENT_ROW_DATA_CHANGED, this.reset.bind(this));\n }\n else {\n this.logger.log('dont know what to do here');\n }\n };\n SelectionController.prototype.init = function () {\n this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.eventService.addEventListener(events_1.Events.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n };\n SelectionController.prototype.setLastSelectedNode = function (rowNode) {\n this.lastSelectedNode = rowNode;\n };\n SelectionController.prototype.getLastSelectedNode = function () {\n return this.lastSelectedNode;\n };\n SelectionController.prototype.getSelectedNodes = function () {\n var selectedNodes = [];\n utils_1._.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode) {\n selectedNodes.push(rowNode);\n }\n });\n return selectedNodes;\n };\n SelectionController.prototype.getSelectedRows = function () {\n var selectedRows = [];\n utils_1._.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.data) {\n selectedRows.push(rowNode.data);\n }\n });\n return selectedRows;\n };\n SelectionController.prototype.removeGroupsFromSelection = function () {\n var _this = this;\n utils_1._.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.group) {\n _this.selectedNodes[rowNode.id] = undefined;\n }\n });\n };\n // should only be called if groupSelectsChildren=true\n SelectionController.prototype.updateGroupsFromChildrenSelections = function (changedPath) {\n // we only do this when group selection state depends on selected children\n if (!this.gridOptionsWrapper.isGroupSelectsChildren()) {\n return;\n }\n // also only do it if CSRM (code should never allow this anyway)\n if (this.rowModel.getType() !== constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n return;\n }\n var clientSideRowModel = this.rowModel;\n var rootNode = clientSideRowModel.getRootNode();\n if (!changedPath) {\n changedPath = new changedPath_1.ChangedPath(true, rootNode);\n changedPath.setInactive();\n }\n changedPath.forEachChangedNodeDepthFirst(function (rowNode) {\n if (rowNode !== rootNode) {\n rowNode.calculateSelectedFromChildren();\n }\n });\n // clientSideRowModel.getTopLevelNodes()!.forEach((rowNode: RowNode) => {\n // rowNode.depthFirstSearch((node) => {\n // if (node.group) {\n // }\n // });\n // });\n };\n SelectionController.prototype.getNodeForIdIfSelected = function (id) {\n return this.selectedNodes[id];\n };\n SelectionController.prototype.clearOtherNodes = function (rowNodeToKeepSelected) {\n var _this = this;\n var groupsToRefresh = {};\n var updatedCount = 0;\n utils_1._.iterateObject(this.selectedNodes, function (key, otherRowNode) {\n if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {\n var rowNode = _this.selectedNodes[otherRowNode.id];\n updatedCount += rowNode.setSelectedParams({\n newValue: false,\n clearSelection: false,\n suppressFinishActions: true\n });\n if (_this.groupSelectsChildren && otherRowNode.parent) {\n groupsToRefresh[otherRowNode.parent.id] = otherRowNode.parent;\n }\n }\n });\n utils_1._.iterateObject(groupsToRefresh, function (key, group) {\n group.calculateSelectedFromChildren();\n });\n return updatedCount;\n };\n SelectionController.prototype.onRowSelected = function (event) {\n var rowNode = event.node;\n // we do not store the group rows when the groups select children\n if (this.groupSelectsChildren && rowNode.group) {\n return;\n }\n if (rowNode.isSelected()) {\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n this.selectedNodes[rowNode.id] = undefined;\n }\n };\n SelectionController.prototype.syncInRowNode = function (rowNode, oldNode) {\n this.syncInOldRowNode(rowNode, oldNode);\n this.syncInNewRowNode(rowNode);\n };\n // if the id has changed for the node, then this means the rowNode\n // is getting used for a different data item, which breaks\n // our selectedNodes, as the node now is mapped by the old id\n // which is inconsistent. so to keep the old node as selected,\n // we swap in the clone (with the old id and old data). this means\n // the oldNode is effectively a daemon we keep a reference to,\n // so if client calls api.getSelectedNodes(), it gets the daemon\n // in the result. when the client un-selects, the reference to the\n // daemon is removed. the daemon, because it's an oldNode, is not\n // used by the grid for rendering, it's a copy of what the node used\n // to be like before the id was changed.\n SelectionController.prototype.syncInOldRowNode = function (rowNode, oldNode) {\n var oldNodeHasDifferentId = utils_1._.exists(oldNode) && (rowNode.id !== oldNode.id);\n if (oldNodeHasDifferentId) {\n var oldNodeSelected = utils_1._.exists(this.selectedNodes[oldNode.id]);\n if (oldNodeSelected) {\n this.selectedNodes[oldNode.id] = oldNode;\n }\n }\n };\n SelectionController.prototype.syncInNewRowNode = function (rowNode) {\n if (utils_1._.exists(this.selectedNodes[rowNode.id])) {\n rowNode.setSelectedInitialValue(true);\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n rowNode.setSelectedInitialValue(false);\n }\n };\n SelectionController.prototype.reset = function () {\n this.logger.log('reset');\n this.selectedNodes = {};\n this.lastSelectedNode = null;\n };\n // returns a list of all nodes at 'best cost' - a feature to be used\n // with groups / trees. if a group has all it's children selected,\n // then the group appears in the result, but not the children.\n // Designed for use with 'children' as the group selection type,\n // where groups don't actually appear in the selection normally.\n SelectionController.prototype.getBestCostNodeSelection = function () {\n if (this.rowModel.getType() !== constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n console.warn('getBestCostNodeSelection is only available when using normal row model');\n }\n var clientSideRowModel = this.rowModel;\n var topLevelNodes = clientSideRowModel.getTopLevelNodes();\n if (topLevelNodes === null) {\n console.warn('selectAll not available doing rowModel=virtual');\n return;\n }\n var result = [];\n // recursive function, to find the selected nodes\n function traverse(nodes) {\n for (var i = 0, l = nodes.length; i < l; i++) {\n var node = nodes[i];\n if (node.isSelected()) {\n result.push(node);\n }\n else {\n // if not selected, then if it's a group, and the group\n // has children, continue to search for selections\n if (node.group && node.children) {\n traverse(node.children);\n }\n }\n }\n }\n traverse(topLevelNodes);\n return result;\n };\n SelectionController.prototype.setRowModel = function (rowModel) {\n this.rowModel = rowModel;\n };\n SelectionController.prototype.isEmpty = function () {\n var count = 0;\n utils_1._.iterateObject(this.selectedNodes, function (nodeId, rowNode) {\n if (rowNode) {\n count++;\n }\n });\n return count === 0;\n };\n SelectionController.prototype.deselectAllRowNodes = function (justFiltered) {\n if (justFiltered === void 0) { justFiltered = false; }\n var callback = function (rowNode) { return rowNode.selectThisNode(false); };\n var rowModelClientSide = this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n if (justFiltered) {\n if (!rowModelClientSide) {\n console.error('ag-Grid: selecting just filtered only works with In Memory Row Model');\n return;\n }\n var clientSideRowModel = this.rowModel;\n clientSideRowModel.forEachNodeAfterFilter(callback);\n }\n else {\n utils_1._.iterateObject(this.selectedNodes, function (id, rowNode) {\n // remember the reference can be to null, as we never 'delete' from the map\n if (rowNode) {\n callback(rowNode);\n }\n });\n // this clears down the map (whereas above only sets the items in map to 'undefined')\n this.reset();\n }\n // the above does not clean up the parent rows if they are selected\n if (rowModelClientSide && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections();\n }\n var event = {\n type: events_1.Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n SelectionController.prototype.selectAllRowNodes = function (justFiltered) {\n if (justFiltered === void 0) { justFiltered = false; }\n if (this.rowModel.getType() !== constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n throw new Error(\"selectAll only available with normal row model, ie not \" + this.rowModel.getType());\n }\n var clientSideRowModel = this.rowModel;\n var callback = function (rowNode) { return rowNode.selectThisNode(true); };\n if (justFiltered) {\n clientSideRowModel.forEachNodeAfterFilter(callback);\n }\n else {\n clientSideRowModel.forEachNode(callback);\n }\n // the above does not clean up the parent rows if they are selected\n if (this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections();\n }\n var event = {\n type: events_1.Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.selectNode = function (rowNode, tryMulti) {\n if (rowNode) {\n rowNode.setSelectedParams({ newValue: true, clearSelection: !tryMulti });\n }\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.deselectIndex = function (rowIndex) {\n var node = this.rowModel.getRow(rowIndex);\n this.deselectNode(node);\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.deselectNode = function (rowNode) {\n if (rowNode) {\n rowNode.setSelectedParams({ newValue: false, clearSelection: false });\n }\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.selectIndex = function (index, tryMulti) {\n var node = this.rowModel.getRow(index);\n this.selectNode(node, tryMulti);\n };\n __decorate([\n context_3.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], SelectionController.prototype, \"eventService\", void 0);\n __decorate([\n context_3.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], SelectionController.prototype, \"rowModel\", void 0);\n __decorate([\n context_3.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], SelectionController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_3.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], SelectionController.prototype, \"columnApi\", void 0);\n __decorate([\n context_3.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], SelectionController.prototype, \"gridApi\", void 0);\n __decorate([\n __param(0, context_2.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], SelectionController.prototype, \"setBeans\", null);\n __decorate([\n context_4.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], SelectionController.prototype, \"init\", null);\n SelectionController = __decorate([\n context_1.Bean('selectionController')\n ], SelectionController);\n return SelectionController;\n}());\nexports.SelectionController = SelectionController;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar VerticalStack = /** @class */ (function () {\n function VerticalStack() {\n this.isLayoutPanel = true;\n this.childPanels = [];\n this.eGui = document.createElement('div');\n this.eGui.style.height = '100%';\n }\n VerticalStack.prototype.addPanel = function (panel, height) {\n var component;\n if (panel.isLayoutPanel) {\n this.childPanels.push(panel);\n component = panel.getGui();\n }\n else {\n component = panel;\n }\n if (height) {\n component.style.height = height;\n }\n this.eGui.appendChild(component);\n };\n VerticalStack.prototype.getGui = function () {\n return this.eGui;\n };\n VerticalStack.prototype.doLayout = function () {\n for (var i = 0; i < this.childPanels.length; i++) {\n this.childPanels[i].doLayout();\n }\n };\n return VerticalStack;\n}());\nexports.VerticalStack = VerticalStack;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar logger_1 = require(\"../logger\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar column_1 = require(\"../entities/column\");\nvar utils_1 = require(\"../utils\");\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar MoveColumnController = /** @class */ (function () {\n function MoveColumnController(pinned, eContainer) {\n this.needToMoveLeft = false;\n this.needToMoveRight = false;\n this.pinned = pinned;\n this.eContainer = eContainer;\n this.centerContainer = !utils_1._.exists(pinned);\n }\n MoveColumnController.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n MoveColumnController.prototype.init = function () {\n this.logger = this.loggerFactory.create('MoveColumnController');\n };\n MoveColumnController.prototype.getIconName = function () {\n return this.pinned ? dragAndDropService_1.DragAndDropService.ICON_PINNED : dragAndDropService_1.DragAndDropService.ICON_MOVE;\n };\n MoveColumnController.prototype.onDragEnter = function (draggingEvent) {\n // we do dummy drag, so make sure column appears in the right location when first placed\n var columns = draggingEvent.dragItem.columns;\n var dragCameFromToolPanel = draggingEvent.dragSource.type === dragAndDropService_1.DragSourceType.ToolPanel;\n if (dragCameFromToolPanel) {\n // the if statement doesn't work if drag leaves grid, then enters again\n this.setColumnsVisible(columns, true, \"uiColumnDragged\");\n }\n else {\n // restore previous state of visible columns upon re-entering. this means if the user drags\n // a group out, and then drags the group back in, only columns that were originally visible\n // will be visible again. otherwise a group with three columns (but only two visible) could\n // be dragged out, then when it's dragged in again, all three are visible. this stops that.\n var visibleState_1 = draggingEvent.dragItem.visibleState;\n var visibleColumns = columns.filter(function (column) { return visibleState_1[column.getId()]; });\n this.setColumnsVisible(visibleColumns, true, \"uiColumnDragged\");\n }\n this.setColumnsPinned(columns, this.pinned, \"uiColumnDragged\");\n this.onDragging(draggingEvent, true);\n };\n MoveColumnController.prototype.onDragLeave = function (draggingEvent) {\n var hideColumnOnExit = !this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns() && !draggingEvent.fromNudge;\n if (hideColumnOnExit) {\n var dragItem = draggingEvent.dragSource.dragItemCallback();\n var columns = dragItem.columns;\n this.setColumnsVisible(columns, false, \"uiColumnDragged\");\n }\n this.ensureIntervalCleared();\n };\n MoveColumnController.prototype.setColumnsVisible = function (columns, visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.isLockVisible(); });\n this.columnController.setColumnsVisible(allowedCols, visible, source);\n }\n };\n MoveColumnController.prototype.setColumnsPinned = function (columns, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.isLockPinned(); });\n this.columnController.setColumnsPinned(allowedCols, pinned, source);\n }\n };\n MoveColumnController.prototype.onDragStop = function () {\n this.ensureIntervalCleared();\n };\n MoveColumnController.prototype.normaliseX = function (x) {\n // flip the coordinate if doing RTL\n var flipHorizontallyForRtl = this.gridOptionsWrapper.isEnableRtl();\n if (flipHorizontallyForRtl) {\n var clientWidth = this.eContainer.clientWidth;\n x = clientWidth - x;\n }\n // adjust for scroll only if centre container (the pinned containers dont scroll)\n var adjustForScroll = this.centerContainer;\n if (adjustForScroll) {\n x += this.gridPanel.getCenterViewportScrollLeft();\n }\n return x;\n };\n MoveColumnController.prototype.checkCenterForScrolling = function (xAdjustedForScroll) {\n if (this.centerContainer) {\n // scroll if the mouse has gone outside the grid (or just outside the scrollable part if pinning)\n // putting in 50 buffer, so even if user gets to edge of grid, a scroll will happen\n var firstVisiblePixel = this.gridPanel.getCenterViewportScrollLeft();\n var lastVisiblePixel = firstVisiblePixel + this.gridPanel.getCenterWidth();\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.needToMoveRight = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveLeft = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n else {\n this.needToMoveLeft = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveRight = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n if (this.needToMoveLeft || this.needToMoveRight) {\n this.ensureIntervalStarted();\n }\n else {\n this.ensureIntervalCleared();\n }\n }\n };\n MoveColumnController.prototype.onDragging = function (draggingEvent, fromEnter) {\n var _this = this;\n if (fromEnter === void 0) { fromEnter = false; }\n this.lastDraggingEvent = draggingEvent;\n // if moving up or down (ie not left or right) then do nothing\n if (utils_1._.missing(draggingEvent.hDirection)) {\n return;\n }\n var xNormalised = this.normaliseX(draggingEvent.x);\n // if the user is dragging into the panel, ie coming from the side panel into the main grid,\n // we don't want to scroll the grid this time, it would appear like the table is jumping\n // each time a column is dragged in.\n if (!fromEnter) {\n this.checkCenterForScrolling(xNormalised);\n }\n var hDirectionNormalised = this.normaliseDirection(draggingEvent.hDirection);\n var dragSourceType = draggingEvent.dragSource.type;\n var columnsToMove = draggingEvent.dragSource.dragItemCallback().columns;\n columnsToMove = columnsToMove.filter(function (col) {\n if (col.isLockPinned()) {\n // if locked return true only if both col and container are same pin type.\n // double equals (==) here on purpose so that null==undefined is true (for not pinned options)\n return col.getPinned() == _this.pinned;\n }\n else {\n // if not pin locked, then always allowed to be in this container\n return true;\n }\n });\n this.attemptMoveColumns(dragSourceType, columnsToMove, hDirectionNormalised, xNormalised, fromEnter);\n };\n MoveColumnController.prototype.normaliseDirection = function (hDirection) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n switch (hDirection) {\n case dragAndDropService_1.HDirection.Left: return dragAndDropService_1.HDirection.Right;\n case dragAndDropService_1.HDirection.Right: return dragAndDropService_1.HDirection.Left;\n default: console.error(\"ag-Grid: Unknown direction \" + hDirection);\n }\n }\n else {\n return hDirection;\n }\n };\n // returns the index of the first column in the list ONLY if the cols are all beside\n // each other. if the cols are not beside each other, then returns null\n MoveColumnController.prototype.calculateOldIndex = function (movingCols) {\n var gridCols = this.columnController.getAllGridColumns();\n var indexes = [];\n movingCols.forEach(function (col) { return indexes.push(gridCols.indexOf(col)); });\n utils_1._.sortNumberArray(indexes);\n var firstIndex = indexes[0];\n var lastIndex = indexes[indexes.length - 1];\n var spread = lastIndex - firstIndex;\n var gapsExist = spread !== indexes.length - 1;\n return gapsExist ? null : firstIndex;\n };\n MoveColumnController.prototype.attemptMoveColumns = function (dragSourceType, allMovingColumns, hDirection, xAdjusted, fromEnter) {\n var draggingLeft = hDirection === dragAndDropService_1.HDirection.Left;\n var draggingRight = hDirection === dragAndDropService_1.HDirection.Right;\n var validMoves = this.calculateValidMoves(allMovingColumns, draggingRight, xAdjusted);\n // if cols are not adjacent, then this returns null. when moving, we constrain the direction of the move\n // (ie left or right) to the mouse direction. however\n var oldIndex = this.calculateOldIndex(allMovingColumns);\n for (var i = 0; i < validMoves.length; i++) {\n var newIndex = validMoves[i];\n // the two check below stop an error when the user grabs a group my a middle column, then\n // it is possible the mouse pointer is to the right of a column while been dragged left.\n // so we need to make sure that the mouse pointer is actually left of the left most column\n // if moving left, and right of the right most column if moving right\n // we check 'fromEnter' below so we move the column to the new spot if the mouse is coming from\n // outside the grid, eg if the column is moving from side panel, mouse is moving left, then we should\n // place the column to the RHS even if the mouse is moving left and the column is already on\n // the LHS. otherwise we stick to the rule described above.\n var constrainDirection = oldIndex !== null && !fromEnter;\n // don't consider 'fromEnter' when dragging header cells, otherwise group can jump to opposite direction of drag\n if (dragSourceType == dragAndDropService_1.DragSourceType.HeaderCell) {\n constrainDirection = oldIndex !== null;\n }\n if (constrainDirection) {\n // only allow left drag if this column is moving left\n if (draggingLeft && newIndex >= oldIndex) {\n continue;\n }\n // only allow right drag if this column is moving right\n if (draggingRight && newIndex <= oldIndex) {\n continue;\n }\n }\n if (!this.columnController.doesMovePassRules(allMovingColumns, newIndex)) {\n continue;\n }\n this.columnController.moveColumns(allMovingColumns, newIndex, \"uiColumnDragged\");\n // important to return here, so once we do the first valid move, we don't try do any more\n return;\n }\n };\n MoveColumnController.prototype.calculateValidMoves = function (movingCols, draggingRight, x) {\n // this is the list of cols on the screen, so it's these we use when comparing the x mouse position\n var allDisplayedCols = this.columnController.getDisplayedColumns(this.pinned);\n // but this list is the list of all cols, when we move a col it's the index within this list that gets used,\n // so the result we return has to be and index location for this list\n var allGridCols = this.columnController.getAllGridColumns();\n var colIsMovingFunc = function (col) { return movingCols.indexOf(col) >= 0; };\n var colIsNotMovingFunc = function (col) { return movingCols.indexOf(col) < 0; };\n var movingDisplayedCols = allDisplayedCols.filter(colIsMovingFunc);\n var otherDisplayedCols = allDisplayedCols.filter(colIsNotMovingFunc);\n var otherGridCols = allGridCols.filter(colIsNotMovingFunc);\n // work out how many DISPLAYED columns fit before the 'x' position. this gives us the displayIndex.\n // for example, if cols are a,b,c,d and we find a,b fit before 'x', then we want to place the moving\n // col between b and c (so that it is under the mouse position).\n var displayIndex = 0;\n var availableWidth = x;\n // if we are dragging right, then the columns will be to the left of the mouse, so we also want to\n // include the width of the moving columns\n if (draggingRight) {\n var widthOfMovingDisplayedCols_1 = 0;\n movingDisplayedCols.forEach(function (col) { return widthOfMovingDisplayedCols_1 += col.getActualWidth(); });\n availableWidth -= widthOfMovingDisplayedCols_1;\n }\n if (availableWidth > 0) {\n // now count how many of the displayed columns will fit to the left\n for (var i = 0; i < otherDisplayedCols.length; i++) {\n var col = otherDisplayedCols[i];\n availableWidth -= col.getActualWidth();\n if (availableWidth < 0) {\n break;\n }\n displayIndex++;\n }\n // trial and error, if going right, we adjust by one, i didn't manage to quantify why, but it works\n if (draggingRight) {\n displayIndex++;\n }\n }\n // the display index is with respect to all the showing columns, however when we move, it's with\n // respect to all grid columns, so we need to translate from display index to grid index\n var gridColIndex;\n if (displayIndex > 0) {\n var leftColumn = otherDisplayedCols[displayIndex - 1];\n gridColIndex = otherGridCols.indexOf(leftColumn) + 1;\n }\n else {\n gridColIndex = 0;\n }\n var validMoves = [gridColIndex];\n // add in all adjacent empty columns as other valid moves. this allows us to try putting the new\n // column in any place of a hidden column, to try different combinations so that we don't break\n // married children. in other words, maybe the new index breaks a group, but only because some\n // columns are hidden, maybe we can reshuffle the hidden columns to find a place that works.\n var nextCol = allGridCols[gridColIndex];\n while (utils_1._.exists(nextCol) && this.isColumnHidden(allDisplayedCols, nextCol)) {\n gridColIndex++;\n validMoves.push(gridColIndex);\n nextCol = allGridCols[gridColIndex];\n }\n return validMoves;\n };\n // isHidden takes into account visible=false and group=closed, ie it is not displayed\n MoveColumnController.prototype.isColumnHidden = function (displayedColumns, col) {\n return displayedColumns.indexOf(col) < 0;\n };\n MoveColumnController.prototype.ensureIntervalStarted = function () {\n if (!this.movingIntervalId) {\n this.intervalCount = 0;\n this.failedMoveAttempts = 0;\n this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);\n if (this.needToMoveLeft) {\n this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_LEFT, true);\n }\n else {\n this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_RIGHT, true);\n }\n }\n };\n MoveColumnController.prototype.ensureIntervalCleared = function () {\n if (this.moveInterval) {\n window.clearInterval(this.movingIntervalId);\n this.movingIntervalId = null;\n this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_MOVE);\n }\n };\n MoveColumnController.prototype.moveInterval = function () {\n // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow\n // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.\n var pixelsToMove;\n this.intervalCount++;\n pixelsToMove = 10 + (this.intervalCount * 5);\n if (pixelsToMove > 100) {\n pixelsToMove = 100;\n }\n var pixelsMoved;\n if (this.needToMoveLeft) {\n pixelsMoved = this.gridPanel.scrollHorizontally(-pixelsToMove);\n }\n else if (this.needToMoveRight) {\n pixelsMoved = this.gridPanel.scrollHorizontally(pixelsToMove);\n }\n if (pixelsMoved !== 0) {\n this.onDragging(this.lastDraggingEvent);\n this.failedMoveAttempts = 0;\n }\n else {\n // we count the failed move attempts. if we fail to move 7 times, then we pin the column.\n // this is how we achieve pining by dragging the column to the edge of the grid.\n this.failedMoveAttempts++;\n var columns = this.lastDraggingEvent.dragItem.columns;\n var columnsThatCanPin = columns.filter(function (c) { return !c.isLockPinned(); });\n if (columnsThatCanPin.length > 0) {\n this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_PINNED);\n if (this.failedMoveAttempts > 7) {\n var pinType = this.needToMoveLeft ? column_1.Column.PINNED_LEFT : column_1.Column.PINNED_RIGHT;\n this.setColumnsPinned(columnsThatCanPin, pinType, \"uiColumnDragged\");\n this.dragAndDropService.nudge();\n }\n }\n }\n };\n __decorate([\n context_1.Autowired('loggerFactory'),\n __metadata(\"design:type\", logger_1.LoggerFactory)\n ], MoveColumnController.prototype, \"loggerFactory\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], MoveColumnController.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('dragAndDropService'),\n __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n ], MoveColumnController.prototype, \"dragAndDropService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], MoveColumnController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], MoveColumnController.prototype, \"init\", null);\n return MoveColumnController;\n}());\nexports.MoveColumnController = MoveColumnController;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar filterManager_1 = require(\"../filter/filterManager\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar FilterService = /** @class */ (function () {\n function FilterService() {\n }\n FilterService.prototype.postConstruct = function () {\n this.doingTreeData = this.gridOptionsWrapper.isTreeData();\n };\n FilterService.prototype.filter = function (changedPath) {\n var filterActive = this.filterManager.isAnyFilterPresent();\n this.filterNodes(filterActive, changedPath);\n };\n FilterService.prototype.filterNodes = function (filterActive, changedPath) {\n var _this = this;\n var filterCallback = function (rowNode, includeChildNodes) {\n // recursively get all children that are groups to also filter\n if (rowNode.hasChildren()) {\n // result of filter for this node. when filtering tree data, includeChildNodes = true when parent passes\n if (filterActive && !includeChildNodes) {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup.filter(function (childNode) {\n // a group is included in the result if it has any children of it's own.\n // by this stage, the child groups are already filtered\n var passBecauseChildren = childNode.childrenAfterFilter && childNode.childrenAfterFilter.length > 0;\n // both leaf level nodes and tree data nodes have data. these get added if\n // the data passes the filter\n var passBecauseDataPasses = childNode.data && _this.filterManager.doesRowPassFilter(childNode);\n // note - tree data nodes pass either if a) they pass themselves or b) any children of that node pass\n return passBecauseChildren || passBecauseDataPasses;\n });\n }\n else {\n // if not filtering, the result is the original list\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n }\n _this.setAllChildrenCount(rowNode);\n }\n else {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n rowNode.setAllChildrenCount(null);\n }\n };\n if (this.doingTreeDataFiltering()) {\n var treeDataDepthFirstFilter_1 = function (rowNode, alreadyFoundInParent) {\n // tree data filter traverses the hierarchy depth first and includes child nodes if parent passes\n // filter, and parent nodes will be include if any children exist.\n if (rowNode.childrenAfterGroup) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n var childNode = rowNode.childrenAfterGroup[i];\n // first check if current node passes filter before invoking child nodes\n var foundInParent = alreadyFoundInParent || _this.filterManager.doesRowPassFilter(childNode);\n if (childNode.childrenAfterGroup) {\n treeDataDepthFirstFilter_1(rowNode.childrenAfterGroup[i], foundInParent);\n }\n else {\n filterCallback(childNode, foundInParent);\n }\n }\n }\n filterCallback(rowNode, alreadyFoundInParent);\n };\n var treeDataFilterCallback = function (rowNode) { return treeDataDepthFirstFilter_1(rowNode, false); };\n changedPath.executeFromRootNode(treeDataFilterCallback);\n }\n else {\n var defaultFilterCallback = function (rowNode) { return filterCallback(rowNode, false); };\n changedPath.forEachChangedNodeDepthFirst(defaultFilterCallback, true);\n }\n };\n FilterService.prototype.setAllChildrenCountTreeData = function (rowNode) {\n // for tree data, we include all children, groups and leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterFilter.forEach(function (child) {\n // include child itself\n allChildrenCount++;\n // include children of children\n allChildrenCount += child.allChildrenCount;\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterService.prototype.setAllChildrenCountGridGrouping = function (rowNode) {\n // for grid data, we only count the leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterFilter.forEach(function (child) {\n if (child.group) {\n allChildrenCount += child.allChildrenCount;\n }\n else {\n allChildrenCount++;\n }\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterService.prototype.setAllChildrenCount = function (rowNode) {\n if (this.doingTreeData) {\n this.setAllChildrenCountTreeData(rowNode);\n }\n else {\n this.setAllChildrenCountGridGrouping(rowNode);\n }\n };\n FilterService.prototype.doingTreeDataFiltering = function () {\n return this.gridOptionsWrapper.isTreeData() && !this.gridOptionsWrapper.isExcludeChildrenWhenTreeDataFiltering();\n };\n __decorate([\n context_1.Autowired('filterManager'),\n __metadata(\"design:type\", filterManager_1.FilterManager)\n ], FilterService.prototype, \"filterManager\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], FilterService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], FilterService.prototype, \"postConstruct\", null);\n FilterService = __decorate([\n context_1.Bean(\"filterService\")\n ], FilterService);\n return FilterService;\n}());\nexports.FilterService = FilterService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"../../constants\");\nvar popupComponent_1 = require(\"../../widgets/popupComponent\");\nvar utils_1 = require(\"../../utils\");\nvar TextCellEditor = /** @class */ (function (_super) {\n __extends(TextCellEditor, _super);\n function TextCellEditor() {\n var _this = _super.call(this, TextCellEditor.TEMPLATE) || this;\n _this.eInput = _this.getGui().querySelector('input');\n return _this;\n }\n TextCellEditor.prototype.init = function (params) {\n this.params = params;\n var eInput = this.eInput;\n var startValue;\n // cellStartedEdit is only false if we are doing fullRow editing\n if (params.cellStartedEdit) {\n this.focusAfterAttached = true;\n var keyPressBackspaceOrDelete = params.keyPress === constants_1.Constants.KEY_BACKSPACE\n || params.keyPress === constants_1.Constants.KEY_DELETE;\n if (keyPressBackspaceOrDelete) {\n startValue = '';\n }\n else if (params.charPress) {\n startValue = params.charPress;\n }\n else {\n startValue = this.getStartValue(params);\n if (params.keyPress !== constants_1.Constants.KEY_F2) {\n this.highlightAllOnFocus = true;\n }\n }\n }\n else {\n this.focusAfterAttached = false;\n startValue = this.getStartValue(params);\n }\n if (utils_1._.exists(startValue)) {\n eInput.value = startValue;\n }\n this.addDestroyableEventListener(eInput, 'keydown', function (event) {\n var isNavigationKey = event.keyCode === constants_1.Constants.KEY_LEFT\n || event.keyCode === constants_1.Constants.KEY_RIGHT\n || event.keyCode === constants_1.Constants.KEY_UP\n || event.keyCode === constants_1.Constants.KEY_DOWN\n || event.keyCode === constants_1.Constants.KEY_PAGE_DOWN\n || event.keyCode === constants_1.Constants.KEY_PAGE_UP\n || event.keyCode === constants_1.Constants.KEY_PAGE_HOME\n || event.keyCode === constants_1.Constants.KEY_PAGE_END;\n if (isNavigationKey) {\n // this stops the grid from executing keyboard navigation\n event.stopPropagation();\n // this stops the browser from scrolling up / down\n var pageUp = event.keyCode === constants_1.Constants.KEY_PAGE_UP;\n var pageDown = event.keyCode === constants_1.Constants.KEY_PAGE_DOWN;\n if (pageUp || pageDown) {\n event.preventDefault();\n }\n }\n });\n };\n TextCellEditor.prototype.afterGuiAttached = function () {\n if (!this.focusAfterAttached) {\n return;\n }\n var eInput = this.eInput;\n eInput.focus();\n if (this.highlightAllOnFocus) {\n eInput.select();\n }\n else {\n // when we started editing, we want the caret at the end, not the start.\n // this comes into play in two scenarios: a) when user hits F2 and b)\n // when user hits a printable character, then on IE (and only IE) the caret\n // was placed after the first character, thus 'apply' would end up as 'pplea'\n var length_1 = eInput.value ? eInput.value.length : 0;\n if (length_1 > 0) {\n eInput.setSelectionRange(length_1, length_1);\n }\n }\n };\n // gets called when tabbing trough cells and in full row edit mode\n TextCellEditor.prototype.focusIn = function () {\n var eInput = this.eInput;\n eInput.focus();\n eInput.select();\n };\n TextCellEditor.prototype.getValue = function () {\n var eInput = this.eInput;\n return this.params.parseValue(eInput.value);\n };\n TextCellEditor.prototype.getStartValue = function (params) {\n var formatValue = params.useFormatter || params.column.getColDef().refData;\n return formatValue ? params.formatValue(params.value) : params.value;\n };\n TextCellEditor.prototype.isPopup = function () {\n return false;\n };\n TextCellEditor.TEMPLATE = '
';\n return TextCellEditor;\n}(popupComponent_1.PopupComponent));\nexports.TextCellEditor = TextCellEditor;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar beanStub_1 = require(\"../context/beanStub\");\nvar context_1 = require(\"../context/context\");\nvar eventService_1 = require(\"../eventService\");\nvar eventKeys_1 = require(\"../eventKeys\");\nvar utils_1 = require(\"../utils\");\n/**\n * This class solves the 'max height' problem, where the user might want to show more data than\n * the max div height actually allows.\n */\nvar MaxDivHeightScaler = /** @class */ (function (_super) {\n __extends(MaxDivHeightScaler, _super);\n function MaxDivHeightScaler() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // the scrollY position\n _this.scrollY = 0;\n // how tall the body is\n _this.uiBodyHeight = 0;\n return _this;\n }\n MaxDivHeightScaler.prototype.postConstruct = function () {\n this.addDestroyableEventListener(this.eventService, eventKeys_1.Events.EVENT_BODY_HEIGHT_CHANGED, this.updateOffset.bind(this));\n this.scrollBarWidth = utils_1._.getScrollbarWidth();\n this.maxDivHeight = utils_1._.getMaxDivHeight();\n };\n MaxDivHeightScaler.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n MaxDivHeightScaler.prototype.isScaling = function () {\n return this.scaling;\n };\n MaxDivHeightScaler.prototype.getOffset = function () {\n return this.offset;\n };\n MaxDivHeightScaler.prototype.updateOffset = function () {\n if (!this.scaling) {\n return;\n }\n var newScrollY = this.gridPanel.getVScrollPosition().top;\n var newBodyHeight = this.getUiBodyHeight();\n var atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;\n if (atLeastOneChanged) {\n this.scrollY = newScrollY;\n this.uiBodyHeight = newBodyHeight;\n this.calculateOffset();\n }\n };\n MaxDivHeightScaler.prototype.calculateOffset = function () {\n this.uiContainerHeight = this.maxDivHeight;\n this.pixelsToShave = this.modelHeight - this.uiContainerHeight;\n this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;\n var scrollPercent = this.scrollY / this.maxScrollY;\n this.setOffset(scrollPercent * this.pixelsToShave);\n };\n MaxDivHeightScaler.prototype.clearOffset = function () {\n this.uiContainerHeight = this.modelHeight;\n this.pixelsToShave = 0;\n this.setOffset(0);\n };\n MaxDivHeightScaler.prototype.setOffset = function (newOffset) {\n // because we are talking pixels, no point in confusing things with half numbers\n var newOffsetFloor = typeof newOffset === 'number' ? Math.floor(newOffset) : null;\n if (this.offset === newOffsetFloor) {\n return;\n }\n this.offset = newOffsetFloor;\n this.eventService.dispatchEvent({ type: eventKeys_1.Events.EVENT_HEIGHT_SCALE_CHANGED });\n };\n MaxDivHeightScaler.prototype.setModelHeight = function (modelHeight) {\n this.modelHeight = modelHeight;\n this.scaling = this.maxDivHeight > 0 && modelHeight > this.maxDivHeight;\n if (this.scaling) {\n this.calculateOffset();\n }\n else {\n this.clearOffset();\n }\n };\n MaxDivHeightScaler.prototype.getUiContainerHeight = function () {\n return this.uiContainerHeight;\n };\n MaxDivHeightScaler.prototype.getRealPixelPosition = function (modelPixel) {\n return modelPixel - this.offset;\n };\n MaxDivHeightScaler.prototype.getUiBodyHeight = function () {\n var pos = this.gridPanel.getVScrollPosition();\n return pos.bottom - pos.top;\n };\n MaxDivHeightScaler.prototype.getScrollPositionForPixel = function (rowTop) {\n if (this.pixelsToShave <= 0) {\n return rowTop;\n }\n var modelMaxScroll = this.modelHeight - this.getUiBodyHeight();\n var scrollPercent = rowTop / modelMaxScroll;\n var scrollPixel = this.maxScrollY * scrollPercent;\n return scrollPixel;\n };\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], MaxDivHeightScaler.prototype, \"eventService\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], MaxDivHeightScaler.prototype, \"postConstruct\", null);\n MaxDivHeightScaler = __decorate([\n context_1.Bean('maxDivHeightScaler')\n ], MaxDivHeightScaler);\n return MaxDivHeightScaler;\n}(beanStub_1.BeanStub));\nexports.MaxDivHeightScaler = MaxDivHeightScaler;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar globalObj = typeof global === 'undefined' ? {} : global;\nglobalObj.HTMLElement = typeof HTMLElement === 'undefined' ? {} : HTMLElement;\nglobalObj.HTMLButtonElement = typeof HTMLButtonElement === 'undefined' ? {} : HTMLButtonElement;\nglobalObj.HTMLSelectElement = typeof HTMLSelectElement === 'undefined' ? {} : HTMLSelectElement;\nglobalObj.HTMLInputElement = typeof HTMLInputElement === 'undefined' ? {} : HTMLInputElement;\nglobalObj.Node = typeof Node === 'undefined' ? {} : Node;\nglobalObj.MouseEvent = typeof MouseEvent === 'undefined' ? {} : MouseEvent;\n// columnController\nvar columnFactory_1 = require(\"./dist/lib/columnController/columnFactory\");\nexports.ColumnFactory = columnFactory_1.ColumnFactory;\nvar columnController_1 = require(\"./dist/lib/columnController/columnController\");\nexports.ColumnController = columnController_1.ColumnController;\nvar columnKeyCreator_1 = require(\"./dist/lib/columnController/columnKeyCreator\");\nexports.ColumnKeyCreator = columnKeyCreator_1.ColumnKeyCreator;\nvar columnUtils_1 = require(\"./dist/lib/columnController/columnUtils\");\nexports.ColumnUtils = columnUtils_1.ColumnUtils;\nvar displayedGroupCreator_1 = require(\"./dist/lib/columnController/displayedGroupCreator\");\nexports.DisplayedGroupCreator = displayedGroupCreator_1.DisplayedGroupCreator;\nvar groupInstanceIdCreator_1 = require(\"./dist/lib/columnController/groupInstanceIdCreator\");\nexports.GroupInstanceIdCreator = groupInstanceIdCreator_1.GroupInstanceIdCreator;\n// components\nvar componentUtil_1 = require(\"./dist/lib/components/componentUtil\");\nexports.ComponentUtil = componentUtil_1.ComponentUtil;\nvar colDefUtil_1 = require(\"./dist/lib/components/colDefUtil\");\nexports.ColDefUtil = colDefUtil_1.ColDefUtil;\nvar userComponentRegistry_1 = require(\"./dist/lib/components/framework/userComponentRegistry\");\nexports.UserComponentRegistry = userComponentRegistry_1.UserComponentRegistry;\nvar userComponentFactory_1 = require(\"./dist/lib/components/framework/userComponentFactory\");\nexports.UserComponentFactory = userComponentFactory_1.UserComponentFactory;\nvar agGridNg1_1 = require(\"./dist/lib/components/agGridNg1\");\nexports.initialiseAgGridWithAngular1 = agGridNg1_1.initialiseAgGridWithAngular1;\nvar agGridWebComponent_1 = require(\"./dist/lib/components/agGridWebComponent\");\nexports.initialiseAgGridWithWebComponents = agGridWebComponent_1.initialiseAgGridWithWebComponents;\n// context\nvar beanStub_1 = require(\"./dist/lib/context/beanStub\");\nexports.BeanStub = beanStub_1.BeanStub;\nvar context_1 = require(\"./dist/lib/context/context\");\nexports.Context = context_1.Context;\nexports.Autowired = context_1.Autowired;\nexports.PostConstruct = context_1.PostConstruct;\nexports.PreConstruct = context_1.PreConstruct;\nexports.Optional = context_1.Optional;\nexports.Bean = context_1.Bean;\nexports.Qualifier = context_1.Qualifier;\nexports.PreDestroy = context_1.PreDestroy;\nvar componentAnnotations_1 = require(\"./dist/lib/widgets/componentAnnotations\");\nexports.QuerySelector = componentAnnotations_1.QuerySelector;\nexports.Listener = componentAnnotations_1.Listener;\nexports.RefSelector = componentAnnotations_1.RefSelector;\n// dragAndDrop\nvar dragAndDropService_1 = require(\"./dist/lib/dragAndDrop/dragAndDropService\");\nexports.DragAndDropService = dragAndDropService_1.DragAndDropService;\nexports.DragSourceType = dragAndDropService_1.DragSourceType;\nexports.HDirection = dragAndDropService_1.HDirection;\nexports.VDirection = dragAndDropService_1.VDirection;\nvar dragService_1 = require(\"./dist/lib/dragAndDrop/dragService\");\nexports.DragService = dragService_1.DragService;\n// entities\nvar column_1 = require(\"./dist/lib/entities/column\");\nexports.Column = column_1.Column;\nvar columnGroup_1 = require(\"./dist/lib/entities/columnGroup\");\nexports.ColumnGroup = columnGroup_1.ColumnGroup;\nvar gridCell_1 = require(\"./dist/lib/entities/gridCell\");\nexports.GridCell = gridCell_1.GridCell;\nvar gridRow_1 = require(\"./dist/lib/entities/gridRow\");\nexports.GridRow = gridRow_1.GridRow;\nvar originalColumnGroup_1 = require(\"./dist/lib/entities/originalColumnGroup\");\nexports.OriginalColumnGroup = originalColumnGroup_1.OriginalColumnGroup;\nvar rowNode_1 = require(\"./dist/lib/entities/rowNode\");\nexports.RowNode = rowNode_1.RowNode;\n// filter\nvar baseFilter_1 = require(\"./dist/lib/filter/baseFilter\");\nexports.BaseFilter = baseFilter_1.BaseFilter;\nvar dateFilter_1 = require(\"./dist/lib/filter/dateFilter\");\nexports.DateFilter = dateFilter_1.DateFilter;\nvar filterManager_1 = require(\"./dist/lib/filter/filterManager\");\nexports.FilterManager = filterManager_1.FilterManager;\nvar numberFilter_1 = require(\"./dist/lib/filter/numberFilter\");\nexports.NumberFilter = numberFilter_1.NumberFilter;\nvar textFilter_1 = require(\"./dist/lib/filter/textFilter\");\nexports.TextFilter = textFilter_1.TextFilter;\n// gridPanel\nvar gridPanel_1 = require(\"./dist/lib/gridPanel/gridPanel\");\nexports.GridPanel = gridPanel_1.GridPanel;\nvar scrollVisibleService_1 = require(\"./dist/lib/gridPanel/scrollVisibleService\");\nexports.ScrollVisibleService = scrollVisibleService_1.ScrollVisibleService;\nvar mouseEventService_1 = require(\"./dist/lib/gridPanel/mouseEventService\");\nexports.MouseEventService = mouseEventService_1.MouseEventService;\n// headerRendering\nvar bodyDropPivotTarget_1 = require(\"./dist/lib/headerRendering/bodyDropPivotTarget\");\nexports.BodyDropPivotTarget = bodyDropPivotTarget_1.BodyDropPivotTarget;\nvar bodyDropTarget_1 = require(\"./dist/lib/headerRendering/bodyDropTarget\");\nexports.BodyDropTarget = bodyDropTarget_1.BodyDropTarget;\nvar cssClassApplier_1 = require(\"./dist/lib/headerRendering/cssClassApplier\");\nexports.CssClassApplier = cssClassApplier_1.CssClassApplier;\nvar headerContainer_1 = require(\"./dist/lib/headerRendering/headerContainer\");\nexports.HeaderContainer = headerContainer_1.HeaderContainer;\nvar headerRootComp_1 = require(\"./dist/lib/headerRendering/headerRootComp\");\nexports.HeaderRootComp = headerRootComp_1.HeaderRootComp;\nvar headerRowComp_1 = require(\"./dist/lib/headerRendering/headerRowComp\");\nexports.HeaderRowComp = headerRowComp_1.HeaderRowComp;\nvar horizontalResizeService_1 = require(\"./dist/lib/headerRendering/horizontalResizeService\");\nexports.HorizontalResizeService = horizontalResizeService_1.HorizontalResizeService;\nvar moveColumnController_1 = require(\"./dist/lib/headerRendering/moveColumnController\");\nexports.MoveColumnController = moveColumnController_1.MoveColumnController;\nvar standardMenu_1 = require(\"./dist/lib/headerRendering/standardMenu\");\nexports.StandardMenuFactory = standardMenu_1.StandardMenuFactory;\n// layout\nvar tabbedLayout_1 = require(\"./dist/lib/layout/tabbedLayout\");\nexports.TabbedLayout = tabbedLayout_1.TabbedLayout;\nvar verticalStack_1 = require(\"./dist/lib/layout/verticalStack\");\nexports.VerticalStack = verticalStack_1.VerticalStack;\n// misc\nvar simpleHttpRequest_1 = require(\"./dist/lib/misc/simpleHttpRequest\");\nexports.simpleHttpRequest = simpleHttpRequest_1.simpleHttpRequest;\nvar largeTextCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/largeTextCellEditor\");\nexports.LargeTextCellEditor = largeTextCellEditor_1.LargeTextCellEditor;\nvar popupEditorWrapper_1 = require(\"./dist/lib/rendering/cellEditors/popupEditorWrapper\");\nexports.PopupEditorWrapper = popupEditorWrapper_1.PopupEditorWrapper;\nvar popupSelectCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/popupSelectCellEditor\");\nexports.PopupSelectCellEditor = popupSelectCellEditor_1.PopupSelectCellEditor;\nvar popupTextCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/popupTextCellEditor\");\nexports.PopupTextCellEditor = popupTextCellEditor_1.PopupTextCellEditor;\nvar selectCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/selectCellEditor\");\nexports.SelectCellEditor = selectCellEditor_1.SelectCellEditor;\nvar textCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/textCellEditor\");\nexports.TextCellEditor = textCellEditor_1.TextCellEditor;\nvar animateShowChangeCellRenderer_1 = require(\"./dist/lib/rendering/cellRenderers/animateShowChangeCellRenderer\");\nexports.AnimateShowChangeCellRenderer = animateShowChangeCellRenderer_1.AnimateShowChangeCellRenderer;\nvar animateSlideCellRenderer_1 = require(\"./dist/lib/rendering/cellRenderers/animateSlideCellRenderer\");\nexports.AnimateSlideCellRenderer = animateSlideCellRenderer_1.AnimateSlideCellRenderer;\nvar groupCellRenderer_1 = require(\"./dist/lib/rendering/cellRenderers/groupCellRenderer\");\nexports.GroupCellRenderer = groupCellRenderer_1.GroupCellRenderer;\n// features\nvar setLeftFeature_1 = require(\"./dist/lib/rendering/features/setLeftFeature\");\nexports.SetLeftFeature = setLeftFeature_1.SetLeftFeature;\n// rendering\nvar autoWidthCalculator_1 = require(\"./dist/lib/rendering/autoWidthCalculator\");\nexports.AutoWidthCalculator = autoWidthCalculator_1.AutoWidthCalculator;\nvar cellRendererFactory_1 = require(\"./dist/lib/rendering/cellRendererFactory\");\nexports.CellRendererFactory = cellRendererFactory_1.CellRendererFactory;\nvar checkboxSelectionComponent_1 = require(\"./dist/lib/rendering/checkboxSelectionComponent\");\nexports.CheckboxSelectionComponent = checkboxSelectionComponent_1.CheckboxSelectionComponent;\nvar cellComp_1 = require(\"./dist/lib/rendering/cellComp\");\nexports.CellComp = cellComp_1.CellComp;\nvar rowComp_1 = require(\"./dist/lib/rendering/rowComp\");\nexports.RowComp = rowComp_1.RowComp;\nvar rowRenderer_1 = require(\"./dist/lib/rendering/rowRenderer\");\nexports.RowRenderer = rowRenderer_1.RowRenderer;\nvar valueFormatterService_1 = require(\"./dist/lib/rendering/valueFormatterService\");\nexports.ValueFormatterService = valueFormatterService_1.ValueFormatterService;\n// rowControllers/inMemory\nvar filterStage_1 = require(\"./dist/lib/rowModels/clientSide/filterStage\");\nexports.FilterStage = filterStage_1.FilterStage;\nvar flattenStage_1 = require(\"./dist/lib/rowModels/clientSide/flattenStage\");\nexports.FlattenStage = flattenStage_1.FlattenStage;\nvar sortStage_1 = require(\"./dist/lib/rowModels/clientSide/sortStage\");\nexports.SortStage = sortStage_1.SortStage;\n// row models\nvar pinnedRowModel_1 = require(\"./dist/lib/rowModels/pinnedRowModel\");\nexports.PinnedRowModel = pinnedRowModel_1.PinnedRowModel;\nvar clientSideRowModel_1 = require(\"./dist/lib/rowModels/clientSide/clientSideRowModel\");\nexports.ClientSideRowModel = clientSideRowModel_1.ClientSideRowModel;\nvar changedPath_1 = require(\"./dist/lib/rowModels/clientSide/changedPath\");\nexports.ChangedPath = changedPath_1.ChangedPath;\nvar clientSideNodeManager_1 = require(\"./dist/lib/rowModels/clientSide/clientSideNodeManager\");\nexports.ClientSideNodeManager = clientSideNodeManager_1.ClientSideNodeManager;\nvar infiniteRowModel_1 = require(\"./dist/lib/rowModels/infinite/infiniteRowModel\");\nexports.InfiniteRowModel = infiniteRowModel_1.InfiniteRowModel;\nvar rowNodeBlock_1 = require(\"./dist/lib/rowModels/cache/rowNodeBlock\");\nexports.RowNodeBlock = rowNodeBlock_1.RowNodeBlock;\nvar rowNodeBlockLoader_1 = require(\"./dist/lib/rowModels/cache/rowNodeBlockLoader\");\nexports.RowNodeBlockLoader = rowNodeBlockLoader_1.RowNodeBlockLoader;\nvar paginationProxy_1 = require(\"./dist/lib/rowModels/paginationProxy\");\nexports.PaginationProxy = paginationProxy_1.PaginationProxy;\nvar rowNodeCache_1 = require(\"./dist/lib/rowModels/cache/rowNodeCache\");\nexports.RowNodeCache = rowNodeCache_1.RowNodeCache;\n//styling\nvar stylingService_1 = require(\"./dist/lib/styling/stylingService\");\nexports.StylingService = stylingService_1.StylingService;\n// widgets\nvar agCheckbox_1 = require(\"./dist/lib/widgets/agCheckbox\");\nexports.AgCheckbox = agCheckbox_1.AgCheckbox;\nvar popupWindow_1 = require(\"./dist/lib/widgets/popupWindow\");\nexports.PopupWindow = popupWindow_1.PopupWindow;\nvar popupMessageBox_1 = require(\"./dist/lib/widgets/popupMessageBox\");\nexports.PopupMessageBox = popupMessageBox_1.PopupMessageBox;\nvar component_1 = require(\"./dist/lib/widgets/component\");\nexports.Component = component_1.Component;\nvar popupComponent_1 = require(\"./dist/lib/widgets/popupComponent\");\nexports.PopupComponent = popupComponent_1.PopupComponent;\nvar popupService_1 = require(\"./dist/lib/widgets/popupService\");\nexports.PopupService = popupService_1.PopupService;\nvar touchListener_1 = require(\"./dist/lib/widgets/touchListener\");\nexports.TouchListener = touchListener_1.TouchListener;\n// exporter\nvar csvCreator_1 = require(\"./dist/lib/exporter/csvCreator\");\nexports.CsvCreator = csvCreator_1.CsvCreator;\nexports.BaseCreator = csvCreator_1.BaseCreator;\nvar downloader_1 = require(\"./dist/lib/exporter/downloader\");\nexports.Downloader = downloader_1.Downloader;\nvar xmlFactory_1 = require(\"./dist/lib/exporter/xmlFactory\");\nexports.XmlFactory = xmlFactory_1.XmlFactory;\nvar gridSerializer_1 = require(\"./dist/lib/exporter/gridSerializer\");\nexports.BaseGridSerializingSession = gridSerializer_1.BaseGridSerializingSession;\nexports.GridSerializer = gridSerializer_1.GridSerializer;\nvar gridSerializer_2 = require(\"./dist/lib/exporter/gridSerializer\");\nexports.RowType = gridSerializer_2.RowType;\nvar zipContainer_1 = require(\"./dist/lib/exporter/files/zip/zipContainer\");\nexports.ZipContainer = zipContainer_1.ZipContainer;\n// root\nvar baseFrameworkFactory_1 = require(\"./dist/lib/baseFrameworkFactory\");\nexports.BaseFrameworkFactory = baseFrameworkFactory_1.BaseFrameworkFactory;\nvar cellNavigationService_1 = require(\"./dist/lib/cellNavigationService\");\nexports.CellNavigationService = cellNavigationService_1.CellNavigationService;\nvar alignedGridsService_1 = require(\"./dist/lib/alignedGridsService\");\nexports.AlignedGridsService = alignedGridsService_1.AlignedGridsService;\nvar constants_1 = require(\"./dist/lib/constants\");\nexports.Constants = constants_1.Constants;\nvar grid_1 = require(\"./dist/lib/grid\");\nexports.Grid = grid_1.Grid;\nvar gridApi_1 = require(\"./dist/lib/gridApi\");\nexports.GridApi = gridApi_1.GridApi;\nvar eventKeys_1 = require(\"./dist/lib/eventKeys\");\nexports.Events = eventKeys_1.Events;\nvar focusedCellController_1 = require(\"./dist/lib/focusedCellController\");\nexports.FocusedCellController = focusedCellController_1.FocusedCellController;\nvar functions_1 = require(\"./dist/lib/functions\");\nexports.defaultGroupComparator = functions_1.defaultGroupComparator;\nvar gridOptionsWrapper_1 = require(\"./dist/lib/gridOptionsWrapper\");\nexports.GridOptionsWrapper = gridOptionsWrapper_1.GridOptionsWrapper;\nvar eventService_1 = require(\"./dist/lib/eventService\");\nexports.EventService = eventService_1.EventService;\nvar selectableService_1 = require(\"./dist/lib/rowNodes/selectableService\");\nexports.SelectableService = selectableService_1.SelectableService;\nvar gridCore_1 = require(\"./dist/lib/gridCore\");\nexports.GridCore = gridCore_1.GridCore;\nvar logger_1 = require(\"./dist/lib/logger\");\nexports.Logger = logger_1.Logger;\nvar selectionController_1 = require(\"./dist/lib/selectionController\");\nexports.SelectionController = selectionController_1.SelectionController;\nvar sortController_1 = require(\"./dist/lib/sortController\");\nexports.SortController = sortController_1.SortController;\nvar templateService_1 = require(\"./dist/lib/templateService\");\nexports.TemplateService = templateService_1.TemplateService;\nvar utils_1 = require(\"./dist/lib/utils\");\nexports.Utils = utils_1.Utils;\nexports.NumberSequence = utils_1.NumberSequence;\nexports._ = utils_1._;\nexports.Promise = utils_1.Promise;\nvar valueService_1 = require(\"./dist/lib/valueService/valueService\");\nexports.ValueService = valueService_1.ValueService;\nvar expressionService_1 = require(\"./dist/lib/valueService/expressionService\");\nexports.ExpressionService = expressionService_1.ExpressionService;\nvar logger_2 = require(\"./dist/lib/logger\");\nexports.LoggerFactory = logger_2.LoggerFactory;\nvar columnApi_1 = require(\"./dist/lib/columnController/columnApi\");\nexports.ColumnApi = columnApi_1.ColumnApi;\nvar frameworkComponentWrapper_1 = require(\"./dist/lib/components/framework/frameworkComponentWrapper\");\nexports.BaseComponentWrapper = frameworkComponentWrapper_1.BaseComponentWrapper;\nvar environment_1 = require(\"./dist/lib/environment\");\nexports.Environment = environment_1.Environment;\nvar tooltipManager_1 = require(\"./dist/lib/widgets/tooltipManager\");\nexports.TooltipManager = tooltipManager_1.TooltipManager;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Constants = /** @class */ (function () {\n function Constants() {\n }\n Constants.STEP_EVERYTHING = 0;\n Constants.STEP_FILTER = 1;\n Constants.STEP_SORT = 2;\n Constants.STEP_MAP = 3;\n Constants.STEP_AGGREGATE = 4;\n Constants.STEP_PIVOT = 5;\n Constants.ROW_BUFFER_SIZE = 10;\n Constants.LAYOUT_INTERVAL = 500;\n Constants.BATCH_WAIT_MILLIS = 50;\n Constants.EXPORT_TYPE_DRAG_COPY = 'dragCopy';\n Constants.EXPORT_TYPE_CLIPBOARD = 'clipboard';\n Constants.EXPORT_TYPE_EXCEL = 'excel';\n Constants.EXPORT_TYPE_CSV = 'csv';\n Constants.KEY_BACKSPACE = 8;\n Constants.KEY_TAB = 9;\n Constants.KEY_NEW_LINE = 10;\n Constants.KEY_ENTER = 13;\n Constants.KEY_SHIFT = 16;\n Constants.KEY_ESCAPE = 27;\n Constants.KEY_SPACE = 32;\n Constants.KEY_LEFT = 37;\n Constants.KEY_UP = 38;\n Constants.KEY_RIGHT = 39;\n Constants.KEY_DOWN = 40;\n Constants.KEY_DELETE = 46;\n Constants.KEY_A = 65;\n Constants.KEY_C = 67;\n Constants.KEY_V = 86;\n Constants.KEY_D = 68;\n Constants.KEY_F2 = 113;\n Constants.KEY_PAGE_UP = 33;\n Constants.KEY_PAGE_DOWN = 34;\n Constants.KEY_PAGE_HOME = 36;\n Constants.KEY_PAGE_END = 35;\n Constants.ROW_MODEL_TYPE_INFINITE = 'infinite';\n Constants.ROW_MODEL_TYPE_VIEWPORT = 'viewport';\n Constants.ROW_MODEL_TYPE_CLIENT_SIDE = 'clientSide';\n Constants.ROW_MODEL_TYPE_SERVER_SIDE = 'serverSide';\n Constants.DEPRECATED_ROW_MODEL_TYPE_NORMAL = 'normal';\n Constants.ALWAYS = 'always';\n Constants.ONLY_WHEN_GROUPING = 'onlyWhenGrouping';\n Constants.PINNED_TOP = 'top';\n Constants.PINNED_BOTTOM = 'bottom';\n Constants.DOM_LAYOUT_NORMAL = 'normal';\n Constants.DOM_LAYOUT_PRINT = 'print';\n Constants.DOM_LAYOUT_AUTO_HEIGHT = 'autoHeight';\n Constants.GROUP_AUTO_COLUMN_ID = 'ag-Grid-AutoColumn';\n return Constants;\n}());\nexports.Constants = Constants;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar columnApi_1 = require(\"./columnController/columnApi\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar rowRenderer_1 = require(\"./rendering/rowRenderer\");\nvar filterManager_1 = require(\"./filter/filterManager\");\nvar eventService_1 = require(\"./eventService\");\nvar gridPanel_1 = require(\"./gridPanel/gridPanel\");\nvar logger_1 = require(\"./logger\");\nvar popupService_1 = require(\"./widgets/popupService\");\nvar context_1 = require(\"./context/context\");\nvar focusedCellController_1 = require(\"./focusedCellController\");\nvar component_1 = require(\"./widgets/component\");\nvar gridApi_1 = require(\"./gridApi\");\nvar componentAnnotations_1 = require(\"./widgets/componentAnnotations\");\nvar events_1 = require(\"./events\");\nvar resizeObserverService_1 = require(\"./misc/resizeObserverService\");\nvar sideBar_1 = require(\"./entities/sideBar\");\nvar utils_1 = require(\"./utils\");\nvar GridCore = /** @class */ (function (_super) {\n __extends(GridCore, _super);\n function GridCore() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridCore.prototype.init = function () {\n var _this = this;\n this.logger = this.loggerFactory.create('GridCore');\n var template = this.enterprise ? GridCore.TEMPLATE_ENTERPRISE : GridCore.TEMPLATE_NORMAL;\n this.setTemplate(template);\n // register with services that need grid core\n [\n this.gridApi,\n this.filterManager,\n this.rowRenderer,\n this.popupService\n ].forEach(function (service) { return service.registerGridCore(_this); });\n if (this.enterprise) {\n this.clipboardService.registerGridCore(this);\n }\n this.gridOptionsWrapper.addLayoutElement(this.getGui());\n // see what the grid options are for default of toolbar\n this.setSideBarVisible(this.gridOptionsWrapper.isShowToolPanel());\n this.eGridDiv.appendChild(this.getGui());\n this.addDestroyFunc(function () {\n _this.eGridDiv.removeChild(_this.getGui());\n });\n // if using angular, watch for quickFilter changes\n if (this.$scope) {\n var quickFilterUnregisterFn = this.$scope.$watch(this.quickFilterOnScope, function (newFilter) { return _this.filterManager.setQuickFilter(newFilter); });\n this.addDestroyFunc(quickFilterUnregisterFn);\n }\n // important to set rtl before doLayout, as setting the RTL class impacts the scroll position,\n // which doLayout indirectly depends on\n this.addRtlSupport();\n this.logger.log('ready');\n this.gridOptionsWrapper.addLayoutElement(this.eRootWrapperBody);\n var gridPanelEl = this.gridPanel.getGui();\n this.addDestroyableEventListener(gridPanelEl, 'focusin', function () {\n utils_1._.addCssClass(gridPanelEl, 'ag-has-focus');\n });\n this.addDestroyableEventListener(gridPanelEl, 'focusout', function (e) {\n if (!gridPanelEl.contains(e.relatedTarget)) {\n utils_1._.removeCssClass(gridPanelEl, 'ag-has-focus');\n }\n });\n var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eGridDiv, this.onGridSizeChanged.bind(this));\n this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n };\n GridCore.prototype.onGridSizeChanged = function () {\n var event = {\n type: events_1.Events.EVENT_GRID_SIZE_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n clientWidth: this.eGridDiv.clientWidth,\n clientHeight: this.eGridDiv.clientHeight\n };\n this.eventService.dispatchEvent(event);\n };\n GridCore.prototype.addRtlSupport = function () {\n var cssClass = this.gridOptionsWrapper.isEnableRtl() ? 'ag-rtl' : 'ag-ltr';\n utils_1._.addCssClass(this.getGui(), cssClass);\n };\n GridCore.prototype.getRootGui = function () {\n return this.getGui();\n };\n GridCore.prototype.isSideBarVisible = function () {\n if (!this.sideBarComp) {\n return false;\n }\n return this.sideBarComp.isVisible();\n };\n GridCore.prototype.setSideBarVisible = function (show) {\n if (!this.sideBarComp) {\n if (show) {\n console.warn('ag-Grid: toolPanel is only available in ag-Grid Enterprise');\n }\n return;\n }\n this.sideBarComp.setVisible(show);\n };\n GridCore.prototype.closeToolPanel = function () {\n if (!this.sideBarComp) {\n console.warn('ag-Grid: toolPanel is only available in ag-Grid Enterprise');\n return;\n }\n this.sideBarComp.close();\n };\n GridCore.prototype.getSideBar = function () {\n return this.gridOptions.sideBar;\n };\n GridCore.prototype.refreshSideBar = function () {\n if (this.sideBarComp) {\n this.sideBarComp.refresh();\n }\n };\n GridCore.prototype.setSideBar = function (def) {\n this.eRootWrapperBody.removeChild(this.sideBarComp.getGui());\n this.gridOptions.sideBar = sideBar_1.SideBarDefParser.parse(def);\n this.sideBarComp.reset();\n this.eRootWrapperBody.appendChild(this.sideBarComp.getGui());\n };\n GridCore.prototype.getOpenedToolPanel = function () {\n if (!this.sideBarComp) {\n return null;\n }\n return this.sideBarComp.openedItem();\n };\n GridCore.prototype.openToolPanel = function (key) {\n if (!this.sideBarComp) {\n console.warn('ag-Grid: toolPanel is only available in ag-Grid Enterprise');\n return;\n }\n this.sideBarComp.openToolPanel(key);\n };\n GridCore.prototype.isToolPanelShowing = function () {\n return this.sideBarComp.isToolPanelShowing();\n };\n GridCore.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.logger.log('Grid DOM removed');\n };\n // Valid values for position are bottom, middle and top\n GridCore.prototype.ensureNodeVisible = function (comparator, position) {\n if (position === void 0) { position = 'top'; }\n if (this.doingVirtualPaging) {\n throw new Error('Cannot use ensureNodeVisible when doing virtual paging, as we cannot check rows that are not in memory');\n }\n // look for the node index we want to display\n var rowCount = this.rowModel.getPageLastRow() + 1;\n var comparatorIsAFunction = typeof comparator === 'function';\n var indexToSelect = -1;\n // go through all the nodes, find the one we want to show\n for (var i = 0; i < rowCount; i++) {\n var node = this.rowModel.getRow(i);\n if (comparatorIsAFunction) {\n if (comparator(node)) {\n indexToSelect = i;\n break;\n }\n }\n else {\n // check object equality against node and data\n if (comparator === node || comparator === node.data) {\n indexToSelect = i;\n break;\n }\n }\n }\n if (indexToSelect >= 0) {\n this.gridPanel.ensureIndexVisible(indexToSelect, position);\n }\n };\n GridCore.TEMPLATE_NORMAL = \"
\\n
\\n \\n
\\n \\n
\";\n GridCore.TEMPLATE_ENTERPRISE = \"
\\n \\n
\\n \\n \\n
\\n \\n \\n \\n
\";\n __decorate([\n context_1.Autowired('enterprise'),\n __metadata(\"design:type\", Boolean)\n ], GridCore.prototype, \"enterprise\", void 0);\n __decorate([\n context_1.Autowired('gridOptions'),\n __metadata(\"design:type\", Object)\n ], GridCore.prototype, \"gridOptions\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], GridCore.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], GridCore.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('frameworkFactory'),\n __metadata(\"design:type\", Object)\n ], GridCore.prototype, \"frameworkFactory\", void 0);\n __decorate([\n context_1.Autowired('resizeObserverService'),\n __metadata(\"design:type\", resizeObserverService_1.ResizeObserverService)\n ], GridCore.prototype, \"resizeObserverService\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], GridCore.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('rowRenderer'),\n __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n ], GridCore.prototype, \"rowRenderer\", void 0);\n __decorate([\n context_1.Autowired('filterManager'),\n __metadata(\"design:type\", filterManager_1.FilterManager)\n ], GridCore.prototype, \"filterManager\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], GridCore.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('eGridDiv'),\n __metadata(\"design:type\", HTMLElement)\n ], GridCore.prototype, \"eGridDiv\", void 0);\n __decorate([\n context_1.Autowired('$scope'),\n __metadata(\"design:type\", Object)\n ], GridCore.prototype, \"$scope\", void 0);\n __decorate([\n context_1.Autowired('quickFilterOnScope'),\n __metadata(\"design:type\", String)\n ], GridCore.prototype, \"quickFilterOnScope\", void 0);\n __decorate([\n context_1.Autowired('popupService'),\n __metadata(\"design:type\", popupService_1.PopupService)\n ], GridCore.prototype, \"popupService\", void 0);\n __decorate([\n context_1.Autowired('focusedCellController'),\n __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n ], GridCore.prototype, \"focusedCellController\", void 0);\n __decorate([\n context_1.Autowired('loggerFactory'),\n __metadata(\"design:type\", logger_1.LoggerFactory)\n ], GridCore.prototype, \"loggerFactory\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], GridCore.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], GridCore.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Optional('clipboardService'),\n __metadata(\"design:type\", Object)\n ], GridCore.prototype, \"clipboardService\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('gridPanel'),\n __metadata(\"design:type\", gridPanel_1.GridPanel)\n ], GridCore.prototype, \"gridPanel\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('sideBar'),\n __metadata(\"design:type\", Object)\n ], GridCore.prototype, \"sideBarComp\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('rootWrapperBody'),\n __metadata(\"design:type\", HTMLElement)\n ], GridCore.prototype, \"eRootWrapperBody\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], GridCore.prototype, \"init\", null);\n return GridCore;\n}(component_1.Component));\nexports.GridCore = GridCore;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar baseFilter_1 = require(\"./baseFilter\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar utils_1 = require(\"../utils\");\nvar TextFilter = /** @class */ (function (_super) {\n __extends(TextFilter, _super);\n function TextFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextFilter.prototype.getDefaultType = function () {\n return baseFilter_1.BaseFilter.CONTAINS;\n };\n TextFilter.prototype.customInit = function () {\n this.comparator = this.filterParams.textCustomComparator ? this.filterParams.textCustomComparator : TextFilter.DEFAULT_COMPARATOR;\n this.formatter =\n this.filterParams.textFormatter ? this.filterParams.textFormatter :\n this.filterParams.caseSensitive == true ? TextFilter.DEFAULT_FORMATTER :\n TextFilter.DEFAULT_LOWERCASE_FORMATTER;\n _super.prototype.customInit.call(this);\n };\n TextFilter.prototype.modelFromFloatingFilter = function (from) {\n return {\n type: this.selectedFilter,\n filter: from,\n filterType: 'text'\n };\n };\n TextFilter.prototype.getApplicableFilterTypes = function () {\n return [baseFilter_1.BaseFilter.EQUALS, baseFilter_1.BaseFilter.NOT_EQUAL, baseFilter_1.BaseFilter.STARTS_WITH, baseFilter_1.BaseFilter.ENDS_WITH,\n baseFilter_1.BaseFilter.CONTAINS, baseFilter_1.BaseFilter.NOT_CONTAINS];\n };\n TextFilter.prototype.bodyTemplate = function (type) {\n var translate = this.translate.bind(this);\n var fieldId = type == baseFilter_1.FilterConditionType.MAIN ? \"filterText\" : \"filterConditionText\";\n return \"
\\n
\\n \\n
\\n
\";\n };\n TextFilter.prototype.initialiseFilterBodyUi = function (type) {\n _super.prototype.initialiseFilterBodyUi.call(this, type);\n this.addFilterChangedListener(type);\n this.setFilter(this.filterConditionText, baseFilter_1.FilterConditionType.CONDITION);\n this.setFilterType(this.selectedFilterCondition, baseFilter_1.FilterConditionType.CONDITION);\n };\n TextFilter.prototype.addFilterChangedListener = function (type) {\n var _this = this;\n var eElement = type === baseFilter_1.FilterConditionType.MAIN ? this.eFilterTextField : this.eFilterConditionTextField;\n var debounceMs = this.getDebounceMs(this.filterParams);\n var toDebounce = utils_1._.debounce(function () { return _this.onFilterTextFieldChanged(type); }, debounceMs);\n this.addDestroyableEventListener(eElement, 'input', toDebounce);\n };\n TextFilter.prototype.refreshFilterBodyUi = function (type) {\n var filterType = type === baseFilter_1.FilterConditionType.MAIN ? this.selectedFilter : this.selectedFilterCondition;\n if (this.eFilterConditionTextField) {\n this.addFilterChangedListener(baseFilter_1.FilterConditionType.CONDITION);\n }\n // show / hide filter input, i.e. if custom filter has 'hideFilterInputField = true' or an empty filter\n var filterInput = type === baseFilter_1.FilterConditionType.MAIN ? this.eFilterTextField : this.eFilterConditionTextField;\n if (filterInput) {\n var showFilterInput = !this.doesFilterHaveHiddenInput(filterType) && filterType !== baseFilter_1.BaseFilter.EMPTY;\n utils_1._.setVisible(filterInput, showFilterInput);\n }\n };\n TextFilter.prototype.afterGuiAttached = function () {\n this.eFilterTextField.focus();\n };\n TextFilter.prototype.filterValues = function (type) {\n return type === baseFilter_1.FilterConditionType.MAIN ? this.filterText : this.filterConditionText;\n };\n TextFilter.prototype.individualFilterPasses = function (params, type) {\n var filterText = type == baseFilter_1.FilterConditionType.MAIN ? this.filterText : this.filterConditionText;\n var filter = type == baseFilter_1.FilterConditionType.MAIN ? this.selectedFilter : this.selectedFilterCondition;\n var customFilterOption = this.customFilterOptions[filter];\n if (customFilterOption) {\n // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden\n if (filterText != null || customFilterOption.hideFilterInput) {\n var cellValue = this.filterParams.valueGetter(params.node);\n var formattedCellValue = this.formatter(cellValue);\n return customFilterOption.test(filterText, formattedCellValue);\n }\n }\n if (!filterText) {\n return type === baseFilter_1.FilterConditionType.MAIN ? true : this.conditionValue === 'AND';\n }\n else {\n return this.checkIndividualFilter(params, filter, filterText);\n }\n };\n TextFilter.prototype.checkIndividualFilter = function (params, filterType, filterText) {\n var cellValue = this.filterParams.valueGetter(params.node);\n var filterTextFormatted = this.formatter(filterText);\n if (cellValue == null || cellValue === undefined) {\n return filterType === baseFilter_1.BaseFilter.NOT_EQUAL || filterType === baseFilter_1.BaseFilter.NOT_CONTAINS;\n }\n var valueFormatted = this.formatter(cellValue);\n return this.comparator(filterType, valueFormatted, filterTextFormatted);\n };\n TextFilter.prototype.onFilterTextFieldChanged = function (type) {\n var value = type === baseFilter_1.FilterConditionType.MAIN ? this.eFilterTextField.value : this.eFilterConditionTextField.value;\n var current = type === baseFilter_1.FilterConditionType.MAIN ? this.filterText : this.filterConditionText;\n var filterText = utils_1._.makeNull(value);\n if (filterText && filterText.trim() === '') {\n filterText = null;\n }\n if (current !== filterText) {\n var newLowerCase = filterText && this.filterParams.caseSensitive != true ? filterText.toLowerCase() :\n filterText;\n var previousLowerCase = current && this.filterParams.caseSensitive != true ? current.toLowerCase() :\n current;\n if (type === baseFilter_1.FilterConditionType.MAIN) {\n this.filterText = this.formatter(filterText);\n }\n else {\n this.filterConditionText = this.formatter(filterText);\n }\n if (previousLowerCase !== newLowerCase) {\n this.onFilterChanged();\n }\n }\n };\n TextFilter.prototype.setFilter = function (filter, type) {\n filter = utils_1._.makeNull(filter);\n if (type === baseFilter_1.FilterConditionType.MAIN) {\n if (filter) {\n this.filterText = this.formatter(filter);\n if (!this.eFilterTextField) {\n return;\n }\n this.eFilterTextField.value = filter;\n }\n else {\n this.filterText = null;\n if (!this.eFilterTextField) {\n return;\n }\n this.eFilterTextField.value = null;\n }\n }\n else {\n if (filter) {\n this.filterConditionText = this.formatter(filter);\n if (!this.eFilterConditionTextField) {\n return;\n }\n this.eFilterConditionTextField.value = filter;\n }\n else {\n this.filterConditionText = null;\n if (!this.eFilterConditionTextField) {\n return;\n }\n this.eFilterConditionTextField.value = null;\n }\n }\n };\n TextFilter.prototype.getFilter = function () {\n return this.filterText;\n };\n TextFilter.prototype.resetState = function (resetConditionFilterOnly) {\n if (resetConditionFilterOnly === void 0) { resetConditionFilterOnly = false; }\n if (!resetConditionFilterOnly) {\n this.setFilterType(this.defaultFilter, baseFilter_1.FilterConditionType.MAIN);\n this.setFilter(null, baseFilter_1.FilterConditionType.MAIN);\n }\n this.setFilterType(this.defaultFilter, baseFilter_1.FilterConditionType.CONDITION);\n this.setFilter(null, baseFilter_1.FilterConditionType.CONDITION);\n };\n TextFilter.prototype.serialize = function (type) {\n var filter = type === baseFilter_1.FilterConditionType.MAIN ? this.selectedFilter : this.selectedFilterCondition;\n var filterText = type === baseFilter_1.FilterConditionType.MAIN ? this.filterText : this.filterConditionText;\n return {\n type: filter ? filter : this.defaultFilter,\n filter: filterText,\n filterType: 'text'\n };\n };\n TextFilter.prototype.parse = function (model, type) {\n this.setFilterType(model.type, type);\n this.setFilter(model.filter, type);\n };\n TextFilter.prototype.setType = function (filterType, type) {\n this.setFilterType(filterType, type);\n };\n TextFilter.DEFAULT_FORMATTER = function (from) {\n return from;\n };\n TextFilter.DEFAULT_LOWERCASE_FORMATTER = function (from) {\n if (from == null) {\n return null;\n }\n return from.toString().toLowerCase();\n };\n TextFilter.DEFAULT_COMPARATOR = function (filter, value, filterText) {\n switch (filter) {\n case TextFilter.CONTAINS:\n return value.indexOf(filterText) >= 0;\n case TextFilter.NOT_CONTAINS:\n return value.indexOf(filterText) === -1;\n case TextFilter.EQUALS:\n return value === filterText;\n case TextFilter.NOT_EQUAL:\n return value != filterText;\n case TextFilter.STARTS_WITH:\n return value.indexOf(filterText) === 0;\n case TextFilter.ENDS_WITH:\n var index = value.lastIndexOf(filterText);\n return index >= 0 && index === (value.length - filterText.length);\n default:\n // should never happen\n console.warn('invalid filter type ' + filter);\n return false;\n }\n };\n __decorate([\n componentAnnotations_1.QuerySelector('#filterText'),\n __metadata(\"design:type\", HTMLInputElement)\n ], TextFilter.prototype, \"eFilterTextField\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#filterConditionText'),\n __metadata(\"design:type\", HTMLInputElement)\n ], TextFilter.prototype, \"eFilterConditionTextField\", void 0);\n return TextFilter;\n}(baseFilter_1.ComparableBaseFilter));\nexports.TextFilter = TextFilter;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar context_1 = require(\"../../context/context\");\nvar component_1 = require(\"../../widgets/component\");\nvar NoRowsOverlayComponent = /** @class */ (function (_super) {\n __extends(NoRowsOverlayComponent, _super);\n function NoRowsOverlayComponent() {\n return _super.call(this) || this;\n }\n NoRowsOverlayComponent.prototype.init = function (params) {\n var template = this.gridOptionsWrapper.getOverlayNoRowsTemplate() ?\n this.gridOptionsWrapper.getOverlayNoRowsTemplate() : NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var localisedTemplate = template.replace('[NO_ROWS_TO_SHOW]', localeTextFunc('noRowsToShow', 'No Rows To Show'));\n this.setTemplate(localisedTemplate);\n };\n NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE = '[NO_ROWS_TO_SHOW]';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], NoRowsOverlayComponent.prototype, \"gridOptionsWrapper\", void 0);\n return NoRowsOverlayComponent;\n}(component_1.Component));\nexports.NoRowsOverlayComponent = NoRowsOverlayComponent;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rowRenderer_1 = require(\"./rowRenderer\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar headerWrapperComp_1 = require(\"../headerRendering/header/headerWrapperComp\");\nvar AutoWidthCalculator = /** @class */ (function () {\n function AutoWidthCalculator() {\n }\n AutoWidthCalculator.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n AutoWidthCalculator.prototype.registerHeaderRootComp = function (headerRootComp) {\n this.headerRootComp = headerRootComp;\n };\n // this is the trick: we create a dummy container and clone all the cells\n // into the dummy, then check the dummy's width. then destroy the dummy\n // as we don't need it any more.\n // drawback: only the cells visible on the screen are considered\n AutoWidthCalculator.prototype.getPreferredWidthForColumn = function (column) {\n var eHeaderCell = this.getHeaderCellForColumn(column);\n // cell isn't visible\n if (!eHeaderCell) {\n return -1;\n }\n var eDummyContainer = document.createElement('span');\n // position fixed, so it isn't restricted to the boundaries of the parent\n eDummyContainer.style.position = 'fixed';\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n var eBodyContainer = this.gridPanel.getCenterContainer();\n eBodyContainer.appendChild(eDummyContainer);\n // get all the cells that are currently displayed (this only brings back\n // rendered cells, rows not rendered due to row visualisation will not be here)\n this.putRowCellsIntoDummyContainer(column, eDummyContainer);\n // also put header cell in\n // we only consider the lowest level cell, not the group cell. in 99% of the time, this\n // will be enough. if we consider groups, then it gets to complicated for what it's worth,\n // as the groups can span columns and this class only considers one column at a time.\n this.cloneItemIntoDummy(eHeaderCell, eDummyContainer);\n // at this point, all the clones are lined up vertically with natural widths. the dummy\n // container will have a width wide enough just to fit the largest.\n var dummyContainerWidth = eDummyContainer.offsetWidth;\n // we are finished with the dummy container, so get rid of it\n eBodyContainer.removeChild(eDummyContainer);\n // we add padding as I found sometimes the gui still put '...' after some of the texts. so the\n // user can configure the grid to add a few more pixels after the calculated width\n var autoSizePadding = this.gridOptionsWrapper.getAutoSizePadding();\n return dummyContainerWidth + autoSizePadding;\n };\n AutoWidthCalculator.prototype.getHeaderCellForColumn = function (column) {\n var comp = null;\n // find the rendered header cell\n this.headerRootComp.forEachHeaderElement(function (headerElement) {\n if (headerElement instanceof headerWrapperComp_1.HeaderWrapperComp) {\n var headerWrapperComp = headerElement;\n if (headerWrapperComp.getColumn() === column) {\n comp = headerWrapperComp;\n }\n }\n });\n return comp ? comp.getGui() : null;\n };\n AutoWidthCalculator.prototype.putRowCellsIntoDummyContainer = function (column, eDummyContainer) {\n var _this = this;\n var eCells = this.rowRenderer.getAllCellsForColumn(column);\n eCells.forEach(function (eCell) { return _this.cloneItemIntoDummy(eCell, eDummyContainer); });\n };\n AutoWidthCalculator.prototype.cloneItemIntoDummy = function (eCell, eDummyContainer) {\n // make a deep clone of the cell\n var eCellClone = eCell.cloneNode(true);\n // the original has a fixed width, we remove this to allow the natural width based on content\n eCellClone.style.width = '';\n // the original has position = absolute, we need to remove this so it's positioned normally\n eCellClone.style.position = 'static';\n eCellClone.style.left = '';\n // we put the cell into a containing div, as otherwise the cells would just line up\n // on the same line, standard flow layout, by putting them into divs, they are laid\n // out one per line\n var eCloneParent = document.createElement('div');\n // table-row, so that each cell is on a row. i also tried display='block', but this\n // didn't work in IE\n eCloneParent.style.display = 'table-row';\n // the twig on the branch, the branch on the tree, the tree in the hole,\n // the hole in the bog, the bog in the clone, the clone in the parent,\n // the parent in the dummy, and the dummy down in the vall-e-ooo, OOOOOOOOO! Oh row the rattling bog....\n eCloneParent.appendChild(eCellClone);\n eDummyContainer.appendChild(eCloneParent);\n };\n __decorate([\n context_1.Autowired('rowRenderer'),\n __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n ], AutoWidthCalculator.prototype, \"rowRenderer\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], AutoWidthCalculator.prototype, \"gridOptionsWrapper\", void 0);\n AutoWidthCalculator = __decorate([\n context_1.Bean('autoWidthCalculator')\n ], AutoWidthCalculator);\n return AutoWidthCalculator;\n}());\nexports.AutoWidthCalculator = AutoWidthCalculator;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar logger_1 = require(\"../logger\");\nvar columnUtils_1 = require(\"./columnUtils\");\nvar columnKeyCreator_1 = require(\"./columnKeyCreator\");\nvar originalColumnGroup_1 = require(\"../entities/originalColumnGroup\");\nvar column_1 = require(\"../entities/column\");\nvar context_1 = require(\"../context/context\");\nvar defaultColumnTypes_1 = require(\"../entities/defaultColumnTypes\");\nvar utils_1 = require(\"../utils\");\n// takes ColDefs and ColGroupDefs and turns them into Columns and OriginalGroups\nvar ColumnFactory = /** @class */ (function () {\n function ColumnFactory() {\n }\n ColumnFactory.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ColumnFactory');\n };\n ColumnFactory.prototype.createColumnTree = function (defs, primaryColumns, existingColumns) {\n // column key creator dishes out unique column id's in a deterministic way,\n // so if we have two grids (that could be master/slave) with same column definitions,\n // then this ensures the two grids use identical id's.\n var columnKeyCreator = new columnKeyCreator_1.ColumnKeyCreator();\n if (existingColumns) {\n var existingKeys = existingColumns.map(function (col) { return col.getId(); });\n columnKeyCreator.addExistingKeys(existingKeys);\n }\n // we take a copy of the columns as we are going to be removing from them\n var existingColsCopy = existingColumns ? existingColumns.slice() : null;\n // create am unbalanced tree that maps the provided definitions\n var unbalancedTree = this.recursivelyCreateColumns(defs, 0, primaryColumns, existingColsCopy, columnKeyCreator, null);\n var treeDept = this.findMaxDept(unbalancedTree, 0);\n this.logger.log('Number of levels for grouped columns is ' + treeDept);\n var res = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);\n var deptFirstCallback = function (child, parent) {\n if (child instanceof originalColumnGroup_1.OriginalColumnGroup) {\n child.setupExpandable();\n }\n // we set the original parents at the end, rather than when we go along, as balancing the tree\n // adds extra levels into the tree. so we can only set parents when balancing is done.\n child.setOriginalParent(parent);\n };\n this.columnUtils.depthFirstOriginalTreeSearch(null, res, deptFirstCallback);\n return {\n columnTree: res,\n treeDept: treeDept\n };\n };\n ColumnFactory.prototype.createForAutoGroups = function (autoGroupCols, gridBalancedTree) {\n var _this = this;\n var autoColBalancedTree = [];\n autoGroupCols.forEach(function (col) {\n var fakeTreeItem = _this.createAutoGroupTreeItem(gridBalancedTree, col);\n autoColBalancedTree.push(fakeTreeItem);\n });\n return autoColBalancedTree;\n };\n ColumnFactory.prototype.createAutoGroupTreeItem = function (balancedColumnTree, column) {\n var dept = this.findDepth(balancedColumnTree);\n // at the end, this will be the top of the tree item.\n var nextChild = column;\n for (var i = dept - 1; i >= 0; i--) {\n var autoGroup = new originalColumnGroup_1.OriginalColumnGroup(null, \"FAKE_PATH_\" + column.getId() + \"}_\" + i, true, i);\n this.context.wireBean(autoGroup);\n autoGroup.setChildren([nextChild]);\n nextChild.setOriginalParent(autoGroup);\n nextChild = autoGroup;\n }\n // at this point, the nextChild is the top most item in the tree\n return nextChild;\n };\n ColumnFactory.prototype.findDepth = function (balancedColumnTree) {\n var dept = 0;\n var pointer = balancedColumnTree;\n while (pointer && pointer[0] && pointer[0] instanceof originalColumnGroup_1.OriginalColumnGroup) {\n dept++;\n pointer = pointer[0].getChildren();\n }\n return dept;\n };\n ColumnFactory.prototype.balanceColumnTree = function (unbalancedTree, currentDept, columnDept, columnKeyCreator) {\n var result = [];\n // go through each child, for groups, recurse a level deeper,\n // for columns we need to pad\n for (var i = 0; i < unbalancedTree.length; i++) {\n var child = unbalancedTree[i];\n if (child instanceof originalColumnGroup_1.OriginalColumnGroup) {\n // child is a group, all we do is go to the next level of recursion\n var originalGroup = child;\n var newChildren = this.balanceColumnTree(originalGroup.getChildren(), currentDept + 1, columnDept, columnKeyCreator);\n originalGroup.setChildren(newChildren);\n result.push(originalGroup);\n }\n else {\n // child is a column - so here we add in the padded column groups if needed\n var firstPaddedGroup = void 0;\n var currentPaddedGroup = void 0;\n // this for loop will NOT run any loops if no padded column groups are needed\n for (var j = columnDept - 1; j >= currentDept; j--) {\n var newColId = columnKeyCreator.getUniqueKey(null, null);\n var colGroupDefMerged = this.createMergedColGroupDef(null);\n var paddedGroup = new originalColumnGroup_1.OriginalColumnGroup(colGroupDefMerged, newColId, true, currentDept);\n this.context.wireBean(paddedGroup);\n if (currentPaddedGroup) {\n currentPaddedGroup.setChildren([paddedGroup]);\n }\n currentPaddedGroup = paddedGroup;\n if (!firstPaddedGroup) {\n firstPaddedGroup = currentPaddedGroup;\n }\n }\n // likewise this if statement will not run if no padded groups\n if (firstPaddedGroup) {\n result.push(firstPaddedGroup);\n var hasGroups = unbalancedTree.some(function (child) { return child instanceof originalColumnGroup_1.OriginalColumnGroup; });\n if (hasGroups) {\n currentPaddedGroup.setChildren([child]);\n continue;\n }\n else {\n currentPaddedGroup.setChildren(unbalancedTree);\n break;\n }\n }\n result.push(child);\n }\n }\n return result;\n };\n ColumnFactory.prototype.findMaxDept = function (treeChildren, dept) {\n var maxDeptThisLevel = dept;\n for (var i = 0; i < treeChildren.length; i++) {\n var abstractColumn = treeChildren[i];\n if (abstractColumn instanceof originalColumnGroup_1.OriginalColumnGroup) {\n var originalGroup = abstractColumn;\n var newDept = this.findMaxDept(originalGroup.getChildren(), dept + 1);\n if (maxDeptThisLevel < newDept) {\n maxDeptThisLevel = newDept;\n }\n }\n }\n return maxDeptThisLevel;\n };\n ColumnFactory.prototype.recursivelyCreateColumns = function (defs, level, primaryColumns, existingColsCopy, columnKeyCreator, parent) {\n var _this = this;\n var result = [];\n if (!defs) {\n return result;\n }\n defs.forEach(function (def) {\n var newGroupOrColumn;\n if (_this.isColumnGroup(def)) {\n newGroupOrColumn = _this.createColumnGroup(primaryColumns, def, level, existingColsCopy, columnKeyCreator, parent);\n }\n else {\n newGroupOrColumn = _this.createColumn(primaryColumns, def, existingColsCopy, columnKeyCreator, parent);\n }\n result.push(newGroupOrColumn);\n });\n return result;\n };\n ColumnFactory.prototype.createColumnGroup = function (primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, parent) {\n var colGroupDefMerged = this.createMergedColGroupDef(colGroupDef);\n var groupId = columnKeyCreator.getUniqueKey(colGroupDefMerged.groupId, null);\n var originalGroup = new originalColumnGroup_1.OriginalColumnGroup(colGroupDefMerged, groupId, false, level);\n this.context.wireBean(originalGroup);\n var children = this.recursivelyCreateColumns(colGroupDefMerged.children, level + 1, primaryColumns, existingColumns, columnKeyCreator, originalGroup);\n originalGroup.setChildren(children);\n return originalGroup;\n };\n ColumnFactory.prototype.createMergedColGroupDef = function (colGroupDef) {\n var colGroupDefMerged = {};\n utils_1._.assign(colGroupDefMerged, this.gridOptionsWrapper.getDefaultColGroupDef());\n utils_1._.assign(colGroupDefMerged, colGroupDef);\n this.checkForDeprecatedItems(colGroupDefMerged);\n return colGroupDefMerged;\n };\n ColumnFactory.prototype.createColumn = function (primaryColumns, colDef, existingColsCopy, columnKeyCreator, parent) {\n var colDefMerged = this.mergeColDefs(colDef);\n this.checkForDeprecatedItems(colDefMerged);\n // see if column already exists\n var column = this.findExistingColumn(colDef, existingColsCopy);\n if (!column) {\n // no existing column, need to create one\n var colId = columnKeyCreator.getUniqueKey(colDefMerged.colId, colDefMerged.field);\n column = new column_1.Column(colDefMerged, colDef, colId, primaryColumns);\n this.context.wireBean(column);\n }\n else {\n column.setColDef(colDefMerged, colDef);\n }\n return column;\n };\n ColumnFactory.prototype.findExistingColumn = function (colDef, existingColsCopy) {\n var res = utils_1._.find(existingColsCopy, function (col) {\n var oldColDef = col.getUserProvidedColDef();\n if (!oldColDef) {\n return false;\n }\n // first check object references\n if (oldColDef === colDef) {\n return true;\n }\n // second check id's\n var oldColHadId = oldColDef.colId !== null && oldColDef.colId !== undefined;\n if (oldColHadId) {\n return oldColDef.colId === colDef.colId;\n }\n else {\n return false;\n }\n });\n // make sure we remove, so if user provided duplicate id, then we don't have more than\n // one column instance for colDef with common id\n if (res) {\n utils_1._.removeFromArray(existingColsCopy, res);\n }\n return res;\n };\n ColumnFactory.prototype.mergeColDefs = function (colDef) {\n // start with empty merged definition\n var colDefMerged = {};\n // merge properties from default column definitions\n utils_1._.assign(colDefMerged, this.gridOptionsWrapper.getDefaultColDef());\n // merge properties from column type properties\n if (colDef.type) {\n this.assignColumnTypes(colDef, colDefMerged);\n }\n // merge properties from column definitions\n utils_1._.assign(colDefMerged, colDef);\n return colDefMerged;\n };\n ColumnFactory.prototype.assignColumnTypes = function (colDef, colDefMerged) {\n var typeKeys;\n if (colDef.type instanceof Array) {\n var invalidArray = colDef.type.some(function (a) { return typeof a !== 'string'; });\n if (invalidArray) {\n console.warn(\"ag-grid: if colDef.type is supplied an array it should be of type 'string[]'\");\n }\n else {\n typeKeys = colDef.type;\n }\n }\n else if (typeof colDef.type === 'string') {\n typeKeys = colDef.type.split(',');\n }\n else {\n console.warn(\"ag-grid: colDef.type should be of type 'string' | 'string[]'\");\n return;\n }\n // merge user defined with default column types\n var allColumnTypes = utils_1._.assign({}, this.gridOptionsWrapper.getColumnTypes(), defaultColumnTypes_1.DefaultColumnTypes);\n typeKeys.forEach(function (t) {\n var typeColDef = allColumnTypes[t.trim()];\n if (typeColDef) {\n utils_1._.assign(colDefMerged, typeColDef);\n }\n else {\n console.warn(\"ag-grid: colDef.type '\" + t + \"' does not correspond to defined gridOptions.columnTypes\");\n }\n });\n };\n ColumnFactory.prototype.checkForDeprecatedItems = function (colDef) {\n if (colDef) {\n var colDefNoType = colDef; // take out the type, so we can access attributes not defined in the type\n if (colDefNoType.group !== undefined) {\n console.warn('ag-grid: colDef.group is invalid, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.headerGroup !== undefined) {\n console.warn('ag-grid: colDef.headerGroup is invalid, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.headerGroupShow !== undefined) {\n console.warn('ag-grid: colDef.headerGroupShow is invalid, should be columnGroupShow, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.suppressRowGroup !== undefined) {\n console.warn('ag-grid: colDef.suppressRowGroup is deprecated, please use colDef.type instead');\n }\n if (colDefNoType.suppressAggregation !== undefined) {\n console.warn('ag-grid: colDef.suppressAggregation is deprecated, please use colDef.type instead');\n }\n if (colDefNoType.suppressRowGroup || colDefNoType.suppressAggregation) {\n console.warn('ag-grid: colDef.suppressAggregation and colDef.suppressRowGroup are deprecated, use allowRowGroup, allowPivot and allowValue instead');\n }\n if (colDefNoType.displayName) {\n console.warn(\"ag-grid: Found displayName \" + colDefNoType.displayName + \", please use headerName instead, displayName is deprecated.\");\n colDefNoType.headerName = colDefNoType.displayName;\n }\n }\n };\n // if object has children, we assume it's a group\n ColumnFactory.prototype.isColumnGroup = function (abstractColDef) {\n return abstractColDef.children !== undefined;\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ColumnFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnUtils'),\n __metadata(\"design:type\", columnUtils_1.ColumnUtils)\n ], ColumnFactory.prototype, \"columnUtils\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], ColumnFactory.prototype, \"context\", void 0);\n __decorate([\n __param(0, context_1.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], ColumnFactory.prototype, \"setBeans\", null);\n ColumnFactory = __decorate([\n context_1.Bean('columnFactory')\n ], ColumnFactory);\n return ColumnFactory;\n}());\nexports.ColumnFactory = ColumnFactory;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar popupWindow_1 = require(\"./popupWindow\");\nvar context_1 = require(\"../context/context\");\nvar component_1 = require(\"./component\");\nvar componentAnnotations_1 = require(\"./componentAnnotations\");\nvar PopupMessageBox = /** @class */ (function (_super) {\n __extends(PopupMessageBox, _super);\n function PopupMessageBox(title, message) {\n var _this = _super.call(this) || this;\n _this.title = title;\n _this.message = message;\n return _this;\n }\n PopupMessageBox.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n this.setTitle(this.title);\n var messageBodyComp = new MessageBody();\n this.addFeature(this.getContext(), messageBodyComp);\n messageBodyComp.setMessage(this.message);\n this.setBody(messageBodyComp.getGui());\n this.addDestroyableEventListener(messageBodyComp, 'onBtOk', function () { return _this.closePopup(); });\n };\n return PopupMessageBox;\n}(popupWindow_1.PopupWindow));\nexports.PopupMessageBox = PopupMessageBox;\nvar MessageBody = /** @class */ (function (_super) {\n __extends(MessageBody, _super);\n function MessageBody() {\n return _super.call(this, MessageBody.TEMPLATE) || this;\n }\n MessageBody.prototype.setMessage = function (message) {\n this.eCenter.innerText = message;\n };\n MessageBody.prototype.postConstruct = function () {\n this.addDestroyableEventListener(this.eOk, 'click', this.onBtOk.bind(this));\n };\n MessageBody.prototype.onBtOk = function () {\n this.dispatchEvent({ type: 'onBtOk' });\n };\n MessageBody.TEMPLATE = \"
\\n
\\n
\\n \\n
\\n
\";\n __decorate([\n componentAnnotations_1.RefSelector('eCenter'),\n __metadata(\"design:type\", HTMLElement)\n ], MessageBody.prototype, \"eCenter\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eOk'),\n __metadata(\"design:type\", HTMLElement)\n ], MessageBody.prototype, \"eOk\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], MessageBody.prototype, \"postConstruct\", null);\n return MessageBody;\n}(component_1.Component));\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar userComponentRegistry_1 = require(\"./userComponentRegistry\");\nvar agComponentUtils_1 = require(\"./agComponentUtils\");\nvar componentMetadataProvider_1 = require(\"./componentMetadataProvider\");\nvar utils_1 = require(\"../../utils\");\nvar ComponentSource;\n(function (ComponentSource) {\n ComponentSource[ComponentSource[\"DEFAULT\"] = 0] = \"DEFAULT\";\n ComponentSource[ComponentSource[\"REGISTERED_BY_NAME\"] = 1] = \"REGISTERED_BY_NAME\";\n ComponentSource[ComponentSource[\"HARDCODED\"] = 2] = \"HARDCODED\";\n})(ComponentSource = exports.ComponentSource || (exports.ComponentSource = {}));\nvar UserComponentFactory = /** @class */ (function () {\n function UserComponentFactory() {\n }\n UserComponentFactory.prototype.newDateComponent = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, \"dateComponent\", \"agDateInput\");\n };\n UserComponentFactory.prototype.newHeaderComponent = function (params) {\n return this.createAndInitUserComponent(params.column.getColDef(), params, \"headerComponent\", \"agColumnHeader\");\n };\n UserComponentFactory.prototype.newHeaderGroupComponent = function (params) {\n return this.createAndInitUserComponent(params.columnGroup.getColGroupDef(), params, \"headerGroupComponent\", \"agColumnGroupHeader\");\n };\n UserComponentFactory.prototype.newFullWidthGroupRowInnerCellRenderer = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, \"groupRowInnerRenderer\", null, true);\n };\n // this one is unusual, as it can be LoadingCellRenderer, DetailCellRenderer, FullWidthCellRenderer or GroupRowRenderer.\n // so we have to pass the type in.\n UserComponentFactory.prototype.newFullWidthCellRenderer = function (params, cellRendererType, cellRendererName) {\n return this.createAndInitUserComponent(null, params, cellRendererType, cellRendererName);\n };\n UserComponentFactory.prototype.newCellRenderer = function (target, params) {\n return this.createAndInitUserComponent(target, params, \"cellRenderer\", null, true);\n };\n UserComponentFactory.prototype.newPinnedRowCellRenderer = function (target, params) {\n return this.createAndInitUserComponent(target, params, \"pinnedRowCellRenderer\", null, true);\n };\n UserComponentFactory.prototype.newCellEditor = function (colDef, params) {\n return this.createAndInitUserComponent(colDef, params, 'cellEditor', 'agCellEditor');\n };\n UserComponentFactory.prototype.newInnerCellRenderer = function (target, params) {\n return this.createAndInitUserComponent(target, params, \"innerRenderer\", null);\n };\n UserComponentFactory.prototype.newLoadingOverlayComponent = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, \"loadingOverlayComponent\", \"agLoadingOverlay\");\n };\n UserComponentFactory.prototype.newNoRowsOverlayComponent = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, \"noRowsOverlayComponent\", \"agNoRowsOverlay\");\n };\n UserComponentFactory.prototype.newTooltipComponent = function (params) {\n var colDef = params.column && params.column.getColDef();\n return this.createAndInitUserComponent(colDef, params, \"tooltipComponent\", 'agTooltipComponent');\n };\n UserComponentFactory.prototype.newFilterComponent = function (colDef, params, defaultFilter, modifyParamsCallback) {\n return this.createAndInitUserComponent(colDef, params, 'filter', defaultFilter, false, modifyParamsCallback);\n };\n UserComponentFactory.prototype.newFloatingFilterComponent = function (colDef, params, defaultFloatingFilter) {\n return this.createAndInitUserComponent(colDef, params, \"floatingFilterComponent\", defaultFloatingFilter, true);\n };\n UserComponentFactory.prototype.newToolPanelComponent = function (toolPanelDef, params) {\n return this.createAndInitUserComponent(toolPanelDef, params, 'toolPanel');\n };\n UserComponentFactory.prototype.newStatusPanelComponent = function (def, params) {\n return this.createAndInitUserComponent(def, params, 'statusPanel');\n };\n /**\n * This method creates a component given everything needed to guess what sort of component needs to be instantiated\n * It takes\n * @param definitionObject: This is the context for which this component needs to be created, it can be gridOptions\n * (global) or columnDef mostly.\n * @param paramsFromGrid: Params to be passed to the component and passed by ag-Grid. This will get merged with any params\n * specified by the user in the configuration\n * @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n * 'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n * @param defaultComponentName: The actual name of the component to instantiate, this is usually the same as propertyName, but in\n * some cases is not, like floatingFilter, if it is the same is not necessary to specify\n * @param optional: Handy method to tell if this should return a component ALWAYS. if that is the case, but there is no\n * component found, it throws an error, by default all components are MANDATORY\n * @param modifyParamsCallback: A chance to customise the params passed to the init method. It receives what the current\n * params are and the component that init is about to get called for\n */\n UserComponentFactory.prototype.createAndInitUserComponent = function (definitionObject, paramsFromGrid, propertyName, defaultComponentName, \n // optional items are: FloatingFilter, CellComp (for cellRenderer)\n optional, \n // used by FilterManager only\n modifyParamsCallback) {\n if (optional === void 0) { optional = false; }\n if (!definitionObject) {\n definitionObject = this.gridOptions;\n }\n // Create the component instance\n var componentAndParams = this.createComponentInstance(definitionObject, propertyName, paramsFromGrid, defaultComponentName, optional);\n if (!componentAndParams) {\n return null;\n }\n var componentInstance = componentAndParams.componentInstance;\n // Wire the component and call the init method with the correct params\n var params = this.createFinalParams(definitionObject, propertyName, paramsFromGrid, componentAndParams.paramsFromSelector);\n this.addReactHacks(params);\n // give caller chance to set any params that depend on the componentInstance (need here as the\n // componentInstance was not available when createUserComponent was called)\n var paramsAfterCallback = modifyParamsCallback ? modifyParamsCallback(params, componentInstance) : params;\n var deferredInit = this.initComponent(componentInstance, paramsAfterCallback);\n if (deferredInit == null) {\n return utils_1.Promise.resolve(componentInstance);\n }\n else {\n var asPromise = deferredInit;\n return asPromise.map(function (notRelevant) { return componentInstance; });\n }\n };\n UserComponentFactory.prototype.addReactHacks = function (params) {\n // a temporary fix for AG-1574\n // AG-1715 raised to do a wider ranging refactor to improve this\n var agGridReact = this.context.getBean('agGridReact');\n if (agGridReact) {\n params.agGridReact = utils_1._.cloneObject(agGridReact);\n }\n // AG-1716 - directly related to AG-1574 and AG-1715\n var frameworkComponentWrapper = this.context.getBean('frameworkComponentWrapper');\n if (frameworkComponentWrapper) {\n params.frameworkComponentWrapper = frameworkComponentWrapper;\n }\n };\n /**\n * This method creates a component given everything needed to guess what sort of component needs to be instantiated\n * It takes\n * @param clazz: The class to instantiate,\n * @param agGridParams: Params to be passed to the component and passed by ag-Grid. This will get merged with any params\n * specified by the user in the configuration\n * @param modifyParamsCallback: A chance to customise the params passed to the init method. It receives what the current\n * params are and the component that init is about to get called for\n */\n UserComponentFactory.prototype.createUserComponentFromConcreteClass = function (clazz, agGridParams) {\n var internalComponent = new clazz();\n this.initComponent(internalComponent, agGridParams);\n return internalComponent;\n };\n /**\n * This method returns the underlying representation of the component to be created. ie for Javascript the\n * underlying function where we should be calling new into. In case of the frameworks, the framework class\n * object that represents the component to be created.\n *\n * This method is handy for different reasons, for example if you want to check if a component has a particular\n * method implemented without having to create the component, just by inspecting the source component\n *\n * It takes\n * @param definitionObject: This is the context for which this component needs to be created, it can be gridOptions\n * (global) or columnDef mostly.\n * @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n * 'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n * @param params: Params to be passed to the dynamic component function in case it needs to be\n * invoked\n * @param defaultComponentName: The name of the component to load if there is no component specified\n */\n UserComponentFactory.prototype.lookupComponentClassDef = function (definitionObject, propertyName, params, defaultComponentName) {\n if (params === void 0) { params = null; }\n /**\n * There are five things that can happen when resolving a component.\n * a) HardcodedFwComponent: That holder[propertyName]Framework has associated a Framework native component\n * b) HardcodedJsComponent: That holder[propertyName] has associate a JS component\n * c) hardcodedJsFunction: That holder[propertyName] has associate a JS function\n * d) hardcodedNameComponent: That holder[propertyName] has associate a string that represents a component to load\n * e) That none of the three previous are specified, then we need to use the DefaultRegisteredComponent\n */\n var hardcodedNameComponent = null;\n var HardcodedJsComponent = null;\n var hardcodedJsFunction = null;\n var HardcodedFwComponent = null;\n var componentSelectorFunc;\n if (definitionObject != null) {\n var componentPropertyValue = definitionObject[propertyName];\n // for filters only, we allow 'true' for the component, which means default filter to be used\n var usingDefaultComponent = componentPropertyValue === true;\n if (componentPropertyValue != null && !usingDefaultComponent) {\n if (typeof componentPropertyValue === 'string') {\n hardcodedNameComponent = componentPropertyValue;\n }\n else if (typeof componentPropertyValue === 'boolean') {\n // never happens, as we test for usingDefaultComponent above,\n // however it's needed for the next block to compile\n }\n else if (this.agComponentUtils.doesImplementIComponent(componentPropertyValue)) {\n HardcodedJsComponent = componentPropertyValue;\n }\n else {\n hardcodedJsFunction = componentPropertyValue;\n }\n }\n HardcodedFwComponent = definitionObject[propertyName + \"Framework\"];\n componentSelectorFunc = definitionObject[propertyName + \"Selector\"];\n }\n /**\n * Since we allow many types of flavors for specifying the components, let's make sure this is not an illegal\n * combination\n */\n if ((HardcodedJsComponent && HardcodedFwComponent) ||\n (hardcodedNameComponent && HardcodedFwComponent) ||\n (hardcodedJsFunction && HardcodedFwComponent)) {\n throw Error(\"ag-grid: you are trying to specify: \" + propertyName + \" twice as a component.\");\n }\n if (HardcodedFwComponent && !this.frameworkComponentWrapper) {\n throw Error(\"ag-grid: you are specifying a framework component but you are not using a framework version of ag-grid for : \" + propertyName);\n }\n if (componentSelectorFunc && (hardcodedNameComponent || HardcodedJsComponent || hardcodedJsFunction || HardcodedFwComponent)) {\n throw Error(\"ag-grid: you can't specify both, the selector and the component of ag-grid for : \" + propertyName);\n }\n /**\n * At this stage we are guaranteed to either have,\n * DEPRECATED\n * - A unique HardcodedFwComponent\n * - A unique HardcodedJsComponent\n * - A unique hardcodedJsFunction\n * BY NAME- FAVOURED APPROACH\n * - A unique hardcodedNameComponent\n * - None of the previous, hence we revert to: RegisteredComponent\n */\n if (HardcodedFwComponent) {\n // console.warn(`ag-grid: Since version 12.1.0 specifying a component directly is deprecated, you should register the component by name`);\n // console.warn(`${HardcodedFwComponent}`);\n return {\n componentFromFramework: true,\n component: HardcodedFwComponent,\n source: ComponentSource.HARDCODED,\n paramsFromSelector: null\n };\n }\n if (HardcodedJsComponent) {\n // console.warn(`ag-grid: Since version 12.1.0 specifying a component directly is deprecated, you should register the component by name`);\n // console.warn(`${HardcodedJsComponent}`);\n return {\n componentFromFramework: false,\n component: HardcodedJsComponent,\n source: ComponentSource.HARDCODED,\n paramsFromSelector: null\n };\n }\n if (hardcodedJsFunction) {\n // console.warn(`ag-grid: Since version 12.1.0 specifying a function directly is deprecated, you should register the component by name`);\n // console.warn(`${hardcodedJsFunction}`);\n return this.agComponentUtils.adaptFunction(propertyName, hardcodedJsFunction, false, ComponentSource.HARDCODED);\n }\n var selectorResult = componentSelectorFunc ? componentSelectorFunc(params) : null;\n var componentNameToUse;\n if (selectorResult && selectorResult.component) {\n componentNameToUse = selectorResult.component;\n }\n else if (hardcodedNameComponent) {\n componentNameToUse = hardcodedNameComponent;\n }\n else {\n componentNameToUse = defaultComponentName;\n }\n if (!componentNameToUse) {\n return null;\n }\n var registeredCompClassDef = this.lookupFromRegisteredComponents(propertyName, componentNameToUse);\n return {\n componentFromFramework: registeredCompClassDef.componentFromFramework,\n component: registeredCompClassDef.component,\n source: registeredCompClassDef.source,\n paramsFromSelector: selectorResult ? selectorResult.params : null\n };\n };\n UserComponentFactory.prototype.lookupFromRegisteredComponents = function (propertyName, componentNameOpt) {\n var componentName = componentNameOpt != null ? componentNameOpt : propertyName;\n var registeredComponent = this.userComponentRegistry.retrieve(componentName);\n if (registeredComponent == null) {\n return null;\n }\n //If it is a FW it has to be registered as a component\n if (registeredComponent.componentFromFramework) {\n return {\n component: registeredComponent.component,\n componentFromFramework: true,\n source: ComponentSource.REGISTERED_BY_NAME,\n paramsFromSelector: null\n };\n }\n //If it is JS it may be a function or a component\n if (this.agComponentUtils.doesImplementIComponent(registeredComponent.component)) {\n return {\n component: registeredComponent.component,\n componentFromFramework: false,\n source: (registeredComponent.source == userComponentRegistry_1.RegisteredComponentSource.REGISTERED) ? ComponentSource.REGISTERED_BY_NAME : ComponentSource.DEFAULT,\n paramsFromSelector: null\n };\n }\n // This is a function\n return this.agComponentUtils.adaptFunction(propertyName, registeredComponent.component, registeredComponent.componentFromFramework, (registeredComponent.source == userComponentRegistry_1.RegisteredComponentSource.REGISTERED) ? ComponentSource.REGISTERED_BY_NAME : ComponentSource.DEFAULT);\n };\n /**\n * Useful to check what would be the resultant params for a given object\n * @param definitionObject: This is the context for which this component needs to be created, it can be gridOptions\n * (global) or columnDef mostly.\n * @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n * 'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n * @param paramsFromGrid: Params to be passed to the component and passed by ag-Grid. This will get merged with any params\n * specified by the user in the configuration\n * @returns {any} It merges the user agGridParams with the actual params specified by the user.\n */\n UserComponentFactory.prototype.createFinalParams = function (definitionObject, propertyName, paramsFromGrid, paramsFromSelector) {\n if (paramsFromSelector === void 0) { paramsFromSelector = null; }\n var res = {};\n utils_1._.mergeDeep(res, paramsFromGrid);\n var userParams = definitionObject ? definitionObject[propertyName + \"Params\"] : null;\n if (userParams != null) {\n if (typeof userParams === 'function') {\n utils_1._.mergeDeep(res, userParams(paramsFromGrid));\n }\n else if (typeof userParams === 'object') {\n utils_1._.mergeDeep(res, userParams);\n }\n }\n utils_1._.mergeDeep(res, paramsFromSelector);\n return res;\n };\n UserComponentFactory.prototype.createComponentInstance = function (holder, propertyName, paramsForSelector, defaultComponentName, optional) {\n var componentToUse = this.lookupComponentClassDef(holder, propertyName, paramsForSelector, defaultComponentName);\n var missing = !componentToUse || !componentToUse.component;\n if (missing) {\n if (!optional) {\n console.error(\"Error creating component \" + propertyName + \"=>\" + defaultComponentName);\n }\n return null;\n }\n var componentInstance;\n if (componentToUse.componentFromFramework) {\n // Using framework component\n var FrameworkComponentRaw = componentToUse.component;\n var thisComponentConfig = this.componentMetadataProvider.retrieve(propertyName);\n componentInstance = this.frameworkComponentWrapper.wrap(FrameworkComponentRaw, thisComponentConfig.mandatoryMethodList, thisComponentConfig.optionalMethodList, defaultComponentName);\n }\n else {\n // Using plain JavaScript component\n componentInstance = new componentToUse.component();\n }\n return { componentInstance: componentInstance, paramsFromSelector: componentToUse.paramsFromSelector };\n };\n UserComponentFactory.prototype.initComponent = function (component, finalParams) {\n this.context.wireBean(component);\n if (component.init == null) {\n return;\n }\n else {\n return component.init(finalParams);\n }\n };\n __decorate([\n context_1.Autowired(\"gridOptions\"),\n __metadata(\"design:type\", Object)\n ], UserComponentFactory.prototype, \"gridOptions\", void 0);\n __decorate([\n context_1.Autowired(\"gridOptionsWrapper\"),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], UserComponentFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired(\"context\"),\n __metadata(\"design:type\", context_1.Context)\n ], UserComponentFactory.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired(\"agComponentUtils\"),\n __metadata(\"design:type\", agComponentUtils_1.AgComponentUtils)\n ], UserComponentFactory.prototype, \"agComponentUtils\", void 0);\n __decorate([\n context_1.Autowired(\"componentMetadataProvider\"),\n __metadata(\"design:type\", componentMetadataProvider_1.ComponentMetadataProvider)\n ], UserComponentFactory.prototype, \"componentMetadataProvider\", void 0);\n __decorate([\n context_1.Autowired(\"userComponentRegistry\"),\n __metadata(\"design:type\", userComponentRegistry_1.UserComponentRegistry)\n ], UserComponentFactory.prototype, \"userComponentRegistry\", void 0);\n __decorate([\n context_1.Optional(\"frameworkComponentWrapper\"),\n __metadata(\"design:type\", Object)\n ], UserComponentFactory.prototype, \"frameworkComponentWrapper\", void 0);\n UserComponentFactory = __decorate([\n context_1.Bean('userComponentFactory')\n ], UserComponentFactory);\n return UserComponentFactory;\n}());\nexports.UserComponentFactory = UserComponentFactory;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar columnGroup_1 = require(\"./columnGroup\");\nvar column_1 = require(\"./column\");\nvar eventService_1 = require(\"../eventService\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar OriginalColumnGroup = /** @class */ (function () {\n function OriginalColumnGroup(colGroupDef, groupId, padding, level) {\n this.localEventService = new eventService_1.EventService();\n this.expandable = false;\n this.colGroupDef = colGroupDef;\n this.groupId = groupId;\n this.expanded = colGroupDef && !!colGroupDef.openByDefault;\n this.padding = padding;\n this.level = level;\n }\n OriginalColumnGroup.prototype.setOriginalParent = function (originalParent) {\n this.originalParent = this.originalParent;\n };\n OriginalColumnGroup.prototype.getOriginalParent = function () {\n return this.originalParent;\n };\n OriginalColumnGroup.prototype.getLevel = function () {\n return this.level;\n };\n OriginalColumnGroup.prototype.isVisible = function () {\n // return true if at least one child is visible\n if (this.children) {\n return this.children.some(function (child) { return child.isVisible(); });\n }\n return false;\n };\n OriginalColumnGroup.prototype.isPadding = function () {\n return this.padding;\n };\n OriginalColumnGroup.prototype.setExpanded = function (expanded) {\n this.expanded = expanded === undefined ? false : expanded;\n var event = {\n type: OriginalColumnGroup.EVENT_EXPANDED_CHANGED\n };\n this.localEventService.dispatchEvent(event);\n };\n OriginalColumnGroup.prototype.isExpandable = function () {\n return this.expandable;\n };\n OriginalColumnGroup.prototype.isExpanded = function () {\n return this.expanded;\n };\n OriginalColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n OriginalColumnGroup.prototype.getId = function () {\n return this.getGroupId();\n };\n OriginalColumnGroup.prototype.setChildren = function (children) {\n this.children = children;\n };\n OriginalColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n OriginalColumnGroup.prototype.getColGroupDef = function () {\n return this.colGroupDef;\n };\n OriginalColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n OriginalColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n if (!this.children) {\n return;\n }\n this.children.forEach(function (child) {\n if (child instanceof column_1.Column) {\n leafColumns.push(child);\n }\n else if (child instanceof OriginalColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n OriginalColumnGroup.prototype.getColumnGroupShow = function () {\n if (!this.padding) {\n return this.colGroupDef.columnGroupShow;\n }\n else {\n // if this is padding we have exactly only child. we then\n // take the value from the child and push it up, making\n // this group 'invisible'.\n return this.children[0].getColumnGroupShow();\n }\n };\n // need to check that this group has at least one col showing when both expanded and contracted.\n // if not, then we don't allow expanding and contracting on this group\n OriginalColumnGroup.prototype.setupExpandable = function () {\n var _this = this;\n this.setExpandable();\n // note - we should be removing this event listener\n this.getLeafColumns().forEach(function (col) { return col.addEventListener(column_1.Column.EVENT_VISIBLE_CHANGED, _this.onColumnVisibilityChanged.bind(_this)); });\n };\n OriginalColumnGroup.prototype.setExpandable = function () {\n if (this.isPadding()) {\n return;\n }\n // want to make sure the group doesn't disappear when it's open\n var atLeastOneShowingWhenOpen = false;\n // want to make sure the group doesn't disappear when it's closed\n var atLeastOneShowingWhenClosed = false;\n // want to make sure the group has something to show / hide\n var atLeastOneChangeable = false;\n var children = this.findChildren();\n for (var i = 0, j = children.length; i < j; i++) {\n var abstractColumn = children[i];\n if (!abstractColumn.isVisible()) {\n continue;\n }\n // if the abstractColumn is a grid generated group, there will be no colDef\n var headerGroupShow = abstractColumn.getColumnGroupShow();\n if (headerGroupShow === columnGroup_1.ColumnGroup.HEADER_GROUP_SHOW_OPEN) {\n atLeastOneShowingWhenOpen = true;\n atLeastOneChangeable = true;\n }\n else if (headerGroupShow === columnGroup_1.ColumnGroup.HEADER_GROUP_SHOW_CLOSED) {\n atLeastOneShowingWhenClosed = true;\n atLeastOneChangeable = true;\n }\n else {\n atLeastOneShowingWhenOpen = true;\n atLeastOneShowingWhenClosed = true;\n }\n }\n var expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;\n if (this.expandable !== expandable) {\n this.expandable = expandable;\n var event_1 = {\n type: OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED\n };\n this.localEventService.dispatchEvent(event_1);\n }\n };\n OriginalColumnGroup.prototype.findChildren = function () {\n var children = this.children;\n var firstChild = children[0];\n if (firstChild && (!firstChild.isPadding || !firstChild.isPadding())) {\n return children;\n }\n while (children.length === 1 && children[0] instanceof OriginalColumnGroup) {\n children = children[0].children;\n }\n return children;\n };\n OriginalColumnGroup.prototype.onColumnVisibilityChanged = function () {\n this.setExpandable();\n };\n OriginalColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n OriginalColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n OriginalColumnGroup.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED = 'expandableChanged';\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], OriginalColumnGroup.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], OriginalColumnGroup.prototype, \"gridApi\", void 0);\n return OriginalColumnGroup;\n}());\nexports.OriginalColumnGroup = OriginalColumnGroup;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar beanStub_1 = require(\"../../context/beanStub\");\nvar rowNodeBlock_1 = require(\"./rowNodeBlock\");\nvar utils_1 = require(\"../../utils\");\nvar RowNodeCache = /** @class */ (function (_super) {\n __extends(RowNodeCache, _super);\n function RowNodeCache(cacheParams) {\n var _this = _super.call(this) || this;\n _this.maxRowFound = false;\n _this.blocks = {};\n _this.blockCount = 0;\n _this.virtualRowCount = cacheParams.initialRowCount;\n _this.cacheParams = cacheParams;\n return _this;\n }\n RowNodeCache.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n this.forEachBlockInOrder(function (block) { return _this.destroyBlock(block); });\n };\n RowNodeCache.prototype.init = function () {\n var _this = this;\n this.active = true;\n this.addDestroyFunc(function () { return _this.active = false; });\n };\n RowNodeCache.prototype.isActive = function () {\n return this.active;\n };\n RowNodeCache.prototype.getVirtualRowCount = function () {\n return this.virtualRowCount;\n };\n RowNodeCache.prototype.hack_setVirtualRowCount = function (virtualRowCount) {\n this.virtualRowCount = virtualRowCount;\n };\n RowNodeCache.prototype.isMaxRowFound = function () {\n return this.maxRowFound;\n };\n // listener on EVENT_LOAD_COMPLETE\n RowNodeCache.prototype.onPageLoaded = function (event) {\n this.cacheParams.rowNodeBlockLoader.loadComplete();\n this.checkBlockToLoad();\n // if we are not active, then we ignore all events, otherwise we could end up getting the\n // grid to refresh even though we are no longer the active cache\n if (!this.isActive()) {\n return;\n }\n this.logger.log(\"onPageLoaded: page = \" + event.page.getBlockNumber() + \", lastRow = \" + event.lastRow);\n if (event.success) {\n this.checkVirtualRowCount(event.page, event.lastRow);\n }\n };\n RowNodeCache.prototype.purgeBlocksIfNeeded = function (blockToExclude) {\n var _this = this;\n // put all candidate blocks into a list for sorting\n var blocksForPurging = [];\n this.forEachBlockInOrder(function (block) {\n // we exclude checking for the page just created, as this has yet to be accessed and hence\n // the lastAccessed stamp will not be updated for the first time yet\n if (block === blockToExclude) {\n return;\n }\n blocksForPurging.push(block);\n });\n // note: need to verify that this sorts items in the right order\n blocksForPurging.sort(function (a, b) { return b.getLastAccessed() - a.getLastAccessed(); });\n // we remove (maxBlocksInCache - 1) as we already excluded the 'just created' page.\n // in other words, after the splice operation below, we have taken out the blocks\n // we want to keep, which means we are left with blocks that we can potentially purge\n var maxBlocksProvided = this.cacheParams.maxBlocksInCache > 0;\n var blocksToKeep = maxBlocksProvided ? this.cacheParams.maxBlocksInCache - 1 : null;\n var emptyBlocksToKeep = RowNodeCache.MAX_EMPTY_BLOCKS_TO_KEEP - 1;\n blocksForPurging.forEach(function (block, index) {\n var purgeBecauseBlockEmpty = block.getState() === rowNodeBlock_1.RowNodeBlock.STATE_DIRTY && index >= emptyBlocksToKeep;\n var purgeBecauseCacheFull = maxBlocksProvided ? index >= blocksToKeep : false;\n if (purgeBecauseBlockEmpty || purgeBecauseCacheFull) {\n // we never purge blocks if they are open, as purging them would mess up with\n // our indexes, it would be very messy to restore the purged block to it's\n // previous state if it had open children (and what if open children of open\n // children, jeeeesus, just thinking about it freaks me out) so best is have a\n // rule, if block is open, we never purge.\n if (block.isAnyNodeOpen(_this.virtualRowCount)) {\n return;\n }\n // at this point, block is not needed, and no open nodes, so burn baby burn\n _this.removeBlockFromCache(block);\n }\n });\n };\n RowNodeCache.prototype.postCreateBlock = function (newBlock) {\n newBlock.addEventListener(rowNodeBlock_1.RowNodeBlock.EVENT_LOAD_COMPLETE, this.onPageLoaded.bind(this));\n this.setBlock(newBlock.getBlockNumber(), newBlock);\n this.purgeBlocksIfNeeded(newBlock);\n this.checkBlockToLoad();\n };\n RowNodeCache.prototype.removeBlockFromCache = function (blockToRemove) {\n if (!blockToRemove) {\n return;\n }\n this.destroyBlock(blockToRemove);\n // we do not want to remove the 'loaded' event listener, as the\n // concurrent loads count needs to be updated when the load is complete\n // if the purged page is in loading state\n };\n // gets called after: 1) block loaded 2) block created 3) cache refresh\n RowNodeCache.prototype.checkBlockToLoad = function () {\n this.cacheParams.rowNodeBlockLoader.checkBlockToLoad();\n };\n RowNodeCache.prototype.checkVirtualRowCount = function (block, lastRow) {\n // if client provided a last row, we always use it, as it could change between server calls\n // if user deleted data and then called refresh on the grid.\n if (typeof lastRow === 'number' && lastRow >= 0) {\n this.virtualRowCount = lastRow;\n this.maxRowFound = true;\n this.onCacheUpdated();\n }\n else if (!this.maxRowFound) {\n // otherwise, see if we need to add some virtual rows\n var lastRowIndex = (block.getBlockNumber() + 1) * this.cacheParams.blockSize;\n var lastRowIndexPlusOverflow = lastRowIndex + this.cacheParams.overflowSize;\n if (this.virtualRowCount < lastRowIndexPlusOverflow) {\n this.virtualRowCount = lastRowIndexPlusOverflow;\n this.onCacheUpdated();\n }\n else if (this.cacheParams.dynamicRowHeight) {\n // the only other time is if dynamic row height, as loading rows\n // will change the height of the block, given the height of the rows\n // is only known after the row is loaded.\n this.onCacheUpdated();\n }\n }\n };\n RowNodeCache.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {\n this.virtualRowCount = rowCount;\n // if undefined is passed, we do not set this value, if one of {true,false}\n // is passed, we do set the value.\n if (utils_1._.exists(maxRowFound)) {\n this.maxRowFound = maxRowFound;\n }\n // if we are still searching, then the row count must not end at the end\n // of a particular page, otherwise the searching will not pop into the\n // next page\n if (!this.maxRowFound) {\n if (this.virtualRowCount % this.cacheParams.blockSize === 0) {\n this.virtualRowCount++;\n }\n }\n this.onCacheUpdated();\n };\n RowNodeCache.prototype.forEachNodeDeep = function (callback, sequence) {\n var _this = this;\n this.forEachBlockInOrder(function (block) {\n block.forEachNodeDeep(callback, sequence, _this.virtualRowCount);\n });\n };\n RowNodeCache.prototype.forEachBlockInOrder = function (callback) {\n var ids = this.getBlockIdsSorted();\n this.forEachBlockId(ids, callback);\n };\n RowNodeCache.prototype.forEachBlockInReverseOrder = function (callback) {\n var ids = this.getBlockIdsSorted().reverse();\n this.forEachBlockId(ids, callback);\n };\n RowNodeCache.prototype.forEachBlockId = function (ids, callback) {\n var _this = this;\n ids.forEach(function (id) {\n var block = _this.blocks[id];\n callback(block, id);\n });\n };\n RowNodeCache.prototype.getBlockIdsSorted = function () {\n // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n var numberComparator = function (a, b) { return a - b; }; // default comparator for array is string comparison\n var blockIds = Object.keys(this.blocks).map(function (idStr) { return parseInt(idStr, 10); }).sort(numberComparator);\n return blockIds;\n };\n RowNodeCache.prototype.getBlock = function (blockId) {\n return this.blocks[blockId];\n };\n RowNodeCache.prototype.setBlock = function (id, block) {\n this.blocks[id] = block;\n this.blockCount++;\n this.cacheParams.rowNodeBlockLoader.addBlock(block);\n };\n RowNodeCache.prototype.destroyBlock = function (block) {\n delete this.blocks[block.getBlockNumber()];\n block.destroy();\n this.blockCount--;\n this.cacheParams.rowNodeBlockLoader.removeBlock(block);\n };\n // gets called 1) row count changed 2) cache purged 3) items inserted\n RowNodeCache.prototype.onCacheUpdated = function () {\n if (this.isActive()) {\n // this results in both row models (infinite and server side) firing ModelUpdated,\n // however server side row model also updates the row indexes first\n var event_1 = {\n type: RowNodeCache.EVENT_CACHE_UPDATED\n };\n this.dispatchEvent(event_1);\n }\n };\n RowNodeCache.prototype.purgeCache = function () {\n var _this = this;\n this.forEachBlockInOrder(function (block) { return _this.removeBlockFromCache(block); });\n // re-initialise cache - this ensures a cache with no rows can reload when purged!\n this.virtualRowCount = this.cacheParams.initialRowCount;\n this.maxRowFound = false;\n this.onCacheUpdated();\n };\n RowNodeCache.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n var _this = this;\n var result = [];\n var lastBlockId = -1;\n var inActiveRange = false;\n var numberSequence = new utils_1.NumberSequence();\n // if only one node passed, we start the selection at the top\n if (utils_1._.missing(firstInRange)) {\n inActiveRange = true;\n }\n var foundGapInSelection = false;\n this.forEachBlockInOrder(function (block, id) {\n if (foundGapInSelection) {\n return;\n }\n if (inActiveRange && (lastBlockId + 1 !== id)) {\n foundGapInSelection = true;\n return;\n }\n lastBlockId = id;\n block.forEachNodeShallow(function (rowNode) {\n var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n if (inActiveRange || hitFirstOrLast) {\n result.push(rowNode);\n }\n if (hitFirstOrLast) {\n inActiveRange = !inActiveRange;\n }\n }, numberSequence, _this.virtualRowCount);\n });\n // inActiveRange will be still true if we never hit the second rowNode\n var invalidRange = foundGapInSelection || inActiveRange;\n return invalidRange ? [] : result;\n };\n RowNodeCache.EVENT_CACHE_UPDATED = 'cacheUpdated';\n // this property says how many empty blocks should be in a cache, eg if scrolls down fast and creates 10\n // blocks all for loading, the grid will only load the last 2 - it will assume the blocks the user quickly\n // scrolled over are not needed to be loaded.\n RowNodeCache.MAX_EMPTY_BLOCKS_TO_KEEP = 2;\n return RowNodeCache;\n}(beanStub_1.BeanStub));\nexports.RowNodeCache = RowNodeCache;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar component_1 = require(\"../../widgets/component\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar utils_1 = require(\"../../utils\");\nvar LoadingCellRenderer = /** @class */ (function (_super) {\n __extends(LoadingCellRenderer, _super);\n function LoadingCellRenderer() {\n return _super.call(this, LoadingCellRenderer.TEMPLATE) || this;\n }\n LoadingCellRenderer.prototype.init = function (params) {\n var eLoadingIcon = utils_1._.createIconNoSpan('groupLoading', this.gridOptionsWrapper, null);\n this.eLoadingIcon.appendChild(eLoadingIcon);\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eLoadingText.innerText = localeTextFunc('loadingOoo', 'Loading');\n };\n LoadingCellRenderer.prototype.refresh = function (params) {\n return false;\n };\n LoadingCellRenderer.TEMPLATE = \"
\\n \\n \\n
\";\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], LoadingCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eLoadingIcon'),\n __metadata(\"design:type\", HTMLElement)\n ], LoadingCellRenderer.prototype, \"eLoadingIcon\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eLoadingText'),\n __metadata(\"design:type\", HTMLElement)\n ], LoadingCellRenderer.prototype, \"eLoadingText\", void 0);\n return LoadingCellRenderer;\n}(component_1.Component));\nexports.LoadingCellRenderer = LoadingCellRenderer;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"./component\");\nvar componentAnnotations_1 = require(\"./componentAnnotations\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar utils_1 = require(\"../utils\");\nvar AgCheckbox = /** @class */ (function (_super) {\n __extends(AgCheckbox, _super);\n function AgCheckbox() {\n var _this = _super.call(this) || this;\n _this.selected = false;\n _this.readOnly = false;\n _this.passive = false;\n return _this;\n }\n AgCheckbox.prototype.preConstruct = function () {\n this.setTemplate(AgCheckbox.TEMPLATE);\n };\n AgCheckbox.prototype.postConstruct = function () {\n this.loadIcons();\n this.updateIcons();\n };\n AgCheckbox.prototype.setLabel = function (label) {\n this.eLabel.innerText = label;\n };\n AgCheckbox.prototype.loadIcons = function () {\n utils_1._.clearElement(this.eChecked);\n utils_1._.clearElement(this.eUnchecked);\n utils_1._.clearElement(this.eIndeterminate);\n if (this.readOnly) {\n this.eChecked.appendChild(utils_1._.createIconNoSpan('checkboxCheckedReadOnly', this.gridOptionsWrapper, null));\n this.eUnchecked.appendChild(utils_1._.createIconNoSpan('checkboxUncheckedReadOnly', this.gridOptionsWrapper, null));\n this.eIndeterminate.appendChild(utils_1._.createIconNoSpan('checkboxIndeterminateReadOnly', this.gridOptionsWrapper, null));\n }\n else {\n this.eChecked.appendChild(utils_1._.createIconNoSpan('checkboxChecked', this.gridOptionsWrapper, null));\n this.eUnchecked.appendChild(utils_1._.createIconNoSpan('checkboxUnchecked', this.gridOptionsWrapper, null));\n this.eIndeterminate.appendChild(utils_1._.createIconNoSpan('checkboxIndeterminate', this.gridOptionsWrapper, null));\n }\n };\n AgCheckbox.prototype.onClick = function (event) {\n // if we don't set the path, then won't work in Edge, as once the is removed from the dom,\n // it's not possible to calculate the path by following the parent's chain. in other browser (eg\n // chrome) there is event.path for this purpose, but missing in Edge.\n utils_1._.addAgGridEventPath(event);\n if (!this.readOnly) {\n this.toggle();\n }\n };\n AgCheckbox.prototype.getNextValue = function () {\n if (this.selected === undefined) {\n return true;\n }\n else {\n return !this.selected;\n }\n };\n AgCheckbox.prototype.setPassive = function (passive) {\n this.passive = passive;\n };\n AgCheckbox.prototype.setReadOnly = function (readOnly) {\n this.readOnly = readOnly;\n this.loadIcons();\n };\n AgCheckbox.prototype.isReadOnly = function () {\n return this.readOnly;\n };\n AgCheckbox.prototype.isSelected = function () {\n return this.selected;\n };\n AgCheckbox.prototype.toggle = function () {\n var nextValue = this.getNextValue();\n if (this.passive) {\n var event_1 = {\n type: AgCheckbox.EVENT_CHANGED,\n selected: nextValue\n };\n this.dispatchEvent(event_1);\n }\n else {\n this.setSelected(nextValue);\n }\n };\n AgCheckbox.prototype.setSelected = function (selected) {\n if (this.selected === selected) {\n return;\n }\n if (selected === true) {\n this.selected = true;\n }\n else if (selected === false) {\n this.selected = false;\n }\n else {\n this.selected = undefined;\n }\n this.updateIcons();\n var event = {\n type: AgCheckbox.EVENT_CHANGED,\n selected: this.selected\n };\n this.dispatchEvent(event);\n };\n AgCheckbox.prototype.updateIcons = function () {\n utils_1._.setVisible(this.eChecked, this.selected === true);\n utils_1._.setVisible(this.eUnchecked, this.selected === false);\n utils_1._.setVisible(this.eIndeterminate, this.selected === undefined);\n };\n AgCheckbox.EVENT_CHANGED = 'change';\n AgCheckbox.TEMPLATE = '' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], AgCheckbox.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('.ag-checkbox-checked'),\n __metadata(\"design:type\", HTMLElement)\n ], AgCheckbox.prototype, \"eChecked\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('.ag-checkbox-unchecked'),\n __metadata(\"design:type\", HTMLElement)\n ], AgCheckbox.prototype, \"eUnchecked\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('.ag-checkbox-indeterminate'),\n __metadata(\"design:type\", HTMLElement)\n ], AgCheckbox.prototype, \"eIndeterminate\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('.ag-checkbox-label'),\n __metadata(\"design:type\", HTMLElement)\n ], AgCheckbox.prototype, \"eLabel\", void 0);\n __decorate([\n context_1.PreConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], AgCheckbox.prototype, \"preConstruct\", null);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], AgCheckbox.prototype, \"postConstruct\", null);\n __decorate([\n componentAnnotations_1.Listener('click'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [MouseEvent]),\n __metadata(\"design:returntype\", void 0)\n ], AgCheckbox.prototype, \"onClick\", null);\n return AgCheckbox;\n}(component_1.Component));\nexports.AgCheckbox = AgCheckbox;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"./component\");\nvar componentAnnotations_1 = require(\"./componentAnnotations\");\nvar context_1 = require(\"../context/context\");\nvar popupService_1 = require(\"./popupService\");\nvar PopupWindow = /** @class */ (function (_super) {\n __extends(PopupWindow, _super);\n function PopupWindow() {\n return _super.call(this, PopupWindow.TEMPLATE) || this;\n }\n PopupWindow.prototype.postConstruct = function () {\n // need to show filter before positioning, as only after filter\n // is visible can we find out what the width of it is\n this.closePopup = this.popupService.addPopup(false, this.getGui(), false, this.destroy.bind(this));\n this.addDestroyableEventListener(this.eClose, 'click', this.onBtClose.bind(this));\n };\n PopupWindow.prototype.setBody = function (eBody) {\n this.eContentWrapper.appendChild(eBody);\n };\n PopupWindow.prototype.setTitle = function (title) {\n this.eTitle.innerText = title;\n };\n // called when user hits the 'x' in the top right\n PopupWindow.prototype.onBtClose = function () {\n this.closePopup();\n };\n PopupWindow.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.dispatchEvent({ type: PopupWindow.DESTROY_EVENT });\n };\n // NOTE - in time, the styles here will need to go to CSS files\n PopupWindow.TEMPLATE = \"
\\n
\\n X\\n New Chart\\n
\\n
\\n
\";\n PopupWindow.DESTROY_EVENT = 'destroy';\n __decorate([\n context_1.Autowired('popupService'),\n __metadata(\"design:type\", popupService_1.PopupService)\n ], PopupWindow.prototype, \"popupService\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eContentWrapper'),\n __metadata(\"design:type\", HTMLElement)\n ], PopupWindow.prototype, \"eContentWrapper\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eTitle'),\n __metadata(\"design:type\", HTMLElement)\n ], PopupWindow.prototype, \"eTitle\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eClose'),\n __metadata(\"design:type\", HTMLElement)\n ], PopupWindow.prototype, \"eClose\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], PopupWindow.prototype, \"postConstruct\", null);\n return PopupWindow;\n}(component_1.Component));\nexports.PopupWindow = PopupWindow;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"./component\");\nvar PopupComponent = /** @class */ (function (_super) {\n __extends(PopupComponent, _super);\n function PopupComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupComponent.prototype.isPopup = function () {\n return true;\n };\n return PopupComponent;\n}(component_1.Component));\nexports.PopupComponent = PopupComponent;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"./constants\");\nvar FUNCTION_STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\nvar FUNCTION_ARGUMENT_NAMES = /([^\\s,]+)/g;\nvar AG_GRID_STOP_PROPAGATION = '__ag_Grid_Stop_Propagation';\n// util class, only used when debugging, for printing time to console\nvar Timer = /** @class */ (function () {\n function Timer() {\n this.timestamp = new Date().getTime();\n }\n Timer.prototype.print = function (msg) {\n var duration = (new Date().getTime()) - this.timestamp;\n console.info(msg + \" = \" + duration);\n this.timestamp = new Date().getTime();\n };\n return Timer;\n}());\nexports.Timer = Timer;\n/** HTML Escapes. */\nvar HTML_ESCAPES = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nvar reUnescapedHtml = /[&<>\"']/g;\nvar Utils = /** @class */ (function () {\n function Utils() {\n }\n // https://ag-grid.com/forum/showthread.php?tid=4362\n // when in IE or Edge, when you are editing a cell, then click on another cell,\n // the other cell doesn't keep focus, so navigation keys, type to start edit etc\n // don't work. appears that when you update the dom in IE it looses focus\n Utils.doIeFocusHack = function (el) {\n if (exports._.isBrowserIE() || exports._.isBrowserEdge()) {\n if (exports._.missing(document.activeElement) || document.activeElement === document.body) {\n // console.log('missing focus');\n el.focus();\n }\n }\n };\n // if the key was passed before, then doesn't execute the func\n Utils.doOnce = function (func, key) {\n if (this.doOnceFlags[key]) {\n return;\n }\n func();\n this.doOnceFlags[key] = true;\n };\n // got from https://stackoverflow.com/questions/3944122/detect-left-mouse-button-press\n Utils.isLeftClick = function (mouseEvent) {\n if (\"buttons\" in mouseEvent) {\n return mouseEvent.buttons == 1;\n }\n var button = mouseEvent.which || mouseEvent.button;\n return button == 1;\n };\n // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n Utils.areEventsNear = function (e1, e2, pixelCount) {\n // by default, we wait 4 pixels before starting the drag\n if (pixelCount === 0) {\n return false;\n }\n var diffX = Math.abs(e1.clientX - e2.clientX);\n var diffY = Math.abs(e1.clientY - e2.clientY);\n return Math.max(diffX, diffY) <= pixelCount;\n };\n Utils.jsonEquals = function (val1, val2) {\n var val1Json = val1 ? JSON.stringify(val1) : null;\n var val2Json = val2 ? JSON.stringify(val2) : null;\n var res = val1Json === val2Json;\n return res;\n };\n Utils.shallowCompare = function (arr1, arr2) {\n // if both are missing, then they are the same\n if (this.missing(arr1) && this.missing(arr2)) {\n return true;\n }\n // if one is present, but other is missing, then then are different\n if (this.missing(arr1) || this.missing(arr2)) {\n return false;\n }\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (var i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n };\n Utils.getNameOfClass = function (TheClass) {\n var funcNameRegex = /function (.{1,})\\(/;\n var funcAsString = TheClass.toString();\n var results = (funcNameRegex).exec(funcAsString);\n return (results && results.length > 1) ? results[1] : \"\";\n };\n Utils.values = function (object) {\n var result = [];\n this.iterateObject(object, function (key, value) {\n result.push(value);\n });\n return result;\n };\n Utils.getValueUsingField = function (data, field, fieldContainsDots) {\n if (!field || !data) {\n return;\n }\n // if no '.', then it's not a deep value\n if (!fieldContainsDots) {\n return data[field];\n }\n else {\n // otherwise it is a deep value, so need to dig for it\n var fields = field.split('.');\n var currentObject = data;\n for (var i = 0; i < fields.length; i++) {\n currentObject = currentObject[fields[i]];\n if (this.missing(currentObject)) {\n return null;\n }\n }\n return currentObject;\n }\n };\n Utils.getAbsoluteHeight = function (el) {\n var styles = window.getComputedStyle(el);\n var margin = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n return Math.ceil(el.offsetHeight + margin);\n };\n Utils.getAbsoluteWidth = function (el) {\n var styles = window.getComputedStyle(el);\n var margin = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n return Math.ceil(el.offsetWidth + margin);\n };\n Utils.getScrollLeft = function (element, rtl) {\n var scrollLeft = element.scrollLeft;\n if (rtl) {\n // Absolute value - for FF that reports RTL scrolls in negative numbers\n scrollLeft = Math.abs(scrollLeft);\n // Get Chrome to return the same value as well\n if (this.isBrowserChrome()) {\n scrollLeft = element.scrollWidth - element.clientWidth - scrollLeft;\n }\n }\n return scrollLeft;\n };\n Utils.cleanNumber = function (value) {\n if (typeof value === 'string') {\n value = parseInt(value, 10);\n }\n if (typeof value === 'number') {\n value = Math.floor(value);\n }\n else {\n value = null;\n }\n return value;\n };\n Utils.setScrollLeft = function (element, value, rtl) {\n if (rtl) {\n // Chrome and Safari when doing RTL have the END position of the scroll as zero, not the start\n if (this.isBrowserSafari() || this.isBrowserChrome()) {\n value = element.scrollWidth - element.clientWidth - value;\n }\n // Firefox uses negative numbers when doing RTL scrolling\n if (this.isBrowserFirefox()) {\n value *= -1;\n }\n }\n element.scrollLeft = value;\n };\n Utils.iterateNamedNodeMap = function (map, callback) {\n if (!map) {\n return;\n }\n for (var i = 0; i < map.length; i++) {\n var attr = map[i];\n callback(attr.name, attr.value);\n }\n };\n Utils.iterateObject = function (object, callback) {\n if (!object || this.missing(object)) {\n return;\n }\n if (Array.isArray(object)) {\n object.forEach(function (value, index) {\n callback(index + '', value);\n });\n }\n else {\n var keys = Object.keys(object);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = object[key];\n callback(key, value);\n }\n }\n };\n Utils.cloneObject = function (object) {\n var copy = {};\n var keys = Object.keys(object);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = object[key];\n copy[key] = value;\n }\n return copy;\n };\n Utils.deepCloneObject = function (object) {\n return JSON.parse(JSON.stringify(object));\n };\n Utils.map = function (array, callback) {\n var result = [];\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n var mappedItem = callback(item, i);\n result.push(mappedItem);\n }\n return result;\n };\n Utils.mapObject = function (object, callback) {\n var result = [];\n Utils.iterateObject(object, function (key, value) {\n result.push(callback(value));\n });\n return result;\n };\n Utils.forEach = function (array, callback) {\n if (!array) {\n return;\n }\n for (var i = 0; i < array.length; i++) {\n var value = array[i];\n callback(value, i);\n }\n };\n Utils.filter = function (array, callback) {\n var result = [];\n array.forEach(function (item) {\n if (callback(item)) {\n result.push(item);\n }\n });\n return result;\n };\n Utils.getAllKeysInObjects = function (objects) {\n var allValues = {};\n objects.forEach(function (obj) {\n if (obj) {\n Object.keys(obj).forEach(function (key) { return allValues[key] = null; });\n }\n });\n return Object.keys(allValues);\n };\n Utils.mergeDeep = function (dest, source) {\n if (!this.exists(source)) {\n return;\n }\n this.iterateObject(source, function (key, newValue) {\n var oldValue = dest[key];\n if (oldValue === newValue) {\n return;\n }\n if (typeof oldValue === 'object' && typeof newValue === 'object') {\n Utils.mergeDeep(oldValue, newValue);\n }\n else {\n dest[key] = newValue;\n }\n });\n };\n Utils.assign = function (object) {\n var _this = this;\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n sources.forEach(function (source) {\n if (_this.exists(source)) {\n _this.iterateObject(source, function (key, value) {\n object[key] = value;\n });\n }\n });\n return object;\n };\n Utils.parseYyyyMmDdToDate = function (yyyyMmDd, separator) {\n try {\n if (!yyyyMmDd) {\n return null;\n }\n if (yyyyMmDd.indexOf(separator) === -1) {\n return null;\n }\n var fields = yyyyMmDd.split(separator);\n if (fields.length != 3) {\n return null;\n }\n return new Date(Number(fields[0]), Number(fields[1]) - 1, Number(fields[2]));\n }\n catch (e) {\n return null;\n }\n };\n Utils.serializeDateToYyyyMmDd = function (date, separator) {\n if (!date) {\n return null;\n }\n return date.getFullYear() + separator + Utils.pad(date.getMonth() + 1, 2) + separator + Utils.pad(date.getDate(), 2);\n };\n Utils.pad = function (num, totalStringSize) {\n var asString = num + \"\";\n while (asString.length < totalStringSize) {\n asString = \"0\" + asString;\n }\n return asString;\n };\n Utils.pushAll = function (target, source) {\n if (this.missing(source) || this.missing(target)) {\n return;\n }\n source.forEach(function (func) { return target.push(func); });\n };\n Utils.createArrayOfNumbers = function (first, last) {\n var result = [];\n for (var i = first; i <= last; i++) {\n result.push(i);\n }\n return result;\n };\n Utils.getFunctionParameters = function (func) {\n var fnStr = func.toString().replace(FUNCTION_STRIP_COMMENTS, '');\n var result = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(FUNCTION_ARGUMENT_NAMES);\n if (result === null) {\n return [];\n }\n else {\n return result;\n }\n };\n Utils.find = function (collection, predicate, value) {\n if (collection === null || collection === undefined) {\n return null;\n }\n if (!Array.isArray(collection)) {\n var objToArray = this.values(collection);\n return this.find(objToArray, predicate, value);\n }\n var collectionAsArray = collection;\n var firstMatchingItem = null;\n for (var i = 0; i < collectionAsArray.length; i++) {\n var item = collectionAsArray[i];\n if (typeof predicate === 'string') {\n if (item[predicate] === value) {\n firstMatchingItem = item;\n break;\n }\n }\n else {\n var callback = predicate;\n if (callback(item)) {\n firstMatchingItem = item;\n break;\n }\n }\n }\n return firstMatchingItem;\n };\n Utils.toStrings = function (array) {\n return this.map(array, function (item) {\n if (item === undefined || item === null || !item.toString) {\n return null;\n }\n else {\n return item.toString();\n }\n });\n };\n Utils.iterateArray = function (array, callback) {\n for (var index = 0; index < array.length; index++) {\n var value = array[index];\n callback(value, index);\n }\n };\n //Returns true if it is a DOM node\n //taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n Utils.isNode = function (o) {\n return (typeof Node === \"function\" ? o instanceof Node :\n o && typeof o === \"object\" && typeof o.nodeType === \"number\" && typeof o.nodeName === \"string\");\n };\n //Returns true if it is a DOM element\n //taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n Utils.isElement = function (o) {\n return (typeof HTMLElement === \"function\" ? o instanceof HTMLElement : //DOM2\n o && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName === \"string\");\n };\n Utils.isNodeOrElement = function (o) {\n return this.isNode(o) || this.isElement(o);\n };\n // makes a copy of a node list into a list\n Utils.copyNodeList = function (nodeList) {\n var childCount = nodeList ? nodeList.length : 0;\n var res = [];\n for (var i = 0; i < childCount; i++) {\n res.push(nodeList[i]);\n }\n return res;\n };\n Utils.isEventFromPrintableCharacter = function (event) {\n var pressedChar = String.fromCharCode(event.charCode);\n // newline is an exception, as it counts as a printable character, but we don't\n // want to start editing when it is pressed. without this check, if user is in chrome\n // and editing a cell, and they press ctrl+enter, the cell stops editing, and then\n // starts editing again with a blank value (two 'key down' events are fired). to\n // test this, remove the line below, edit a cell in chrome and hit ctrl+enter while editing.\n // https://ag-grid.atlassian.net/browse/AG-605\n if (this.isKeyPressed(event, constants_1.Constants.KEY_NEW_LINE)) {\n return false;\n }\n // no allowed printable chars have alt or ctrl key combinations\n if (event.altKey || event.ctrlKey) {\n return false;\n }\n if (exports._.exists(event.key)) {\n // modern browser will implement key, so we return if key is length 1, eg if it is 'a' for the\n // a key, or '2' for the '2' key. non-printable characters have names, eg 'Enter' or 'Backspace'.\n var printableCharacter = event.key.length === 1;\n // IE11 & Edge treat the numpad del key differently - with numlock on we get \"Del\" for key,\n // so this addition checks if its IE11/Edge and handles that specific case the same was as all other browsers\n var numpadDelWithNumlockOnForEdgeOrIe = Utils.isNumpadDelWithNumlockOnForEdgeOrIe(event);\n return printableCharacter || numpadDelWithNumlockOnForEdgeOrIe;\n }\n else {\n // otherwise, for older browsers, we test against a list of characters, which doesn't include\n // accents for non-English, but don't care much, as most users are on modern browsers\n return Utils.PRINTABLE_CHARACTERS.indexOf(pressedChar) >= 0;\n }\n };\n // allows user to tell the grid to skip specific keyboard events\n Utils.isUserSuppressingKeyboardEvent = function (gridOptionsWrapper, keyboardEvent, rowNode, column, editing) {\n var gridOptionsFunc = gridOptionsWrapper.getSuppressKeyboardEventFunc();\n var colDefFunc = column.getColDef().suppressKeyboardEvent;\n // if no callbacks provided by user, then do nothing\n if (!gridOptionsFunc && !colDefFunc) {\n return false;\n }\n var params = {\n event: keyboardEvent,\n editing: editing,\n column: column,\n api: gridOptionsWrapper.getApi(),\n node: rowNode,\n data: rowNode.data,\n colDef: column.getColDef(),\n context: gridOptionsWrapper.getContext(),\n columnApi: gridOptionsWrapper.getColumnApi()\n };\n // colDef get first preference on suppressing events\n if (colDefFunc) {\n var colDefFuncResult = colDefFunc(params);\n // if colDef func suppressed, then return now, no need to call gridOption func\n if (colDefFuncResult) {\n return true;\n }\n }\n if (gridOptionsFunc) {\n // if gridOption func, return the result\n return gridOptionsFunc(params);\n }\n else {\n // otherwise return false, don't suppress, as colDef didn't suppress and no func on gridOptions\n return false;\n }\n };\n Utils.getCellCompForEvent = function (gridOptionsWrapper, event) {\n var sourceElement = this.getTarget(event);\n while (sourceElement) {\n var renderedCell = gridOptionsWrapper.getDomData(sourceElement, 'cellComp');\n if (renderedCell) {\n return renderedCell;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n };\n //adds all type of change listeners to an element, intended to be a text field\n Utils.addChangeListener = function (element, listener) {\n element.addEventListener(\"changed\", listener);\n element.addEventListener(\"paste\", listener);\n element.addEventListener(\"input\", listener);\n // IE doesn't fire changed for special keys (eg delete, backspace), so need to\n // listen for this further ones\n element.addEventListener(\"keydown\", listener);\n element.addEventListener(\"keyup\", listener);\n };\n //if value is undefined, null or blank, returns null, otherwise returns the value\n Utils.makeNull = function (value) {\n var valueNoType = value;\n if (value === null || value === undefined || valueNoType === \"\") {\n return null;\n }\n else {\n return value;\n }\n };\n Utils.missing = function (value) {\n return !this.exists(value);\n };\n Utils.missingOrEmpty = function (value) {\n return !value || this.missing(value) || value.length === 0;\n };\n Utils.missingOrEmptyObject = function (value) {\n return this.missing(value) || Object.keys(value).length === 0;\n };\n Utils.exists = function (value, allowEmptyString) {\n if (allowEmptyString === void 0) { allowEmptyString = false; }\n return value != null && (value !== '' || allowEmptyString);\n };\n Utils.firstExistingValue = function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if (exports._.exists(value)) {\n return value;\n }\n }\n return null;\n };\n Utils.anyExists = function (values) {\n if (values) {\n for (var i = 0; i < values.length; i++) {\n if (this.exists(values[i])) {\n return true;\n }\n }\n }\n return false;\n };\n Utils.existsAndNotEmpty = function (value) {\n return value != null && this.exists(value) && value.length > 0;\n };\n Utils.clearElement = function (el) {\n while (el && el.firstChild) {\n el.removeChild(el.firstChild);\n }\n };\n Utils.removeElement = function (parent, cssSelector) {\n this.removeFromParent(parent.querySelector(cssSelector));\n };\n Utils.removeFromParent = function (node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n };\n Utils.isVisible = function (element) {\n return (element.offsetParent !== null);\n };\n /**\n * loads the template and returns it as an element. makes up for no simple way in\n * the dom api to load html directly, eg we cannot do this: document.createElement(template)\n */\n Utils.loadTemplate = function (template) {\n var tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = template;\n return tempDiv.firstChild;\n };\n Utils.appendHtml = function (eContainer, htmlTemplate) {\n if (eContainer.lastChild) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML\n // we put the items at the start, so new items appear underneath old items,\n // so when expanding/collapsing groups, the new rows don't go on top of the\n // rows below that are moving our of the way\n eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);\n }\n else {\n eContainer.innerHTML = htmlTemplate;\n }\n };\n Utils.addOrRemoveCssClass = function (element, className, addOrRemove) {\n if (addOrRemove) {\n this.addCssClass(element, className);\n }\n else {\n this.removeCssClass(element, className);\n }\n };\n Utils.callIfPresent = function (func) {\n if (func) {\n func();\n }\n };\n Utils.addCssClass = function (element, className) {\n var _this = this;\n if (!className || className.length === 0) {\n return;\n }\n if (className.indexOf(' ') >= 0) {\n className.split(' ').forEach(function (value) { return _this.addCssClass(element, value); });\n return;\n }\n if (element.classList) {\n if (!element.classList.contains(className)) {\n element.classList.add(className);\n }\n }\n else {\n if (element.className && element.className.length > 0) {\n var cssClasses = element.className.split(' ');\n if (cssClasses.indexOf(className) < 0) {\n cssClasses.push(className);\n element.setAttribute('class', cssClasses.join(' '));\n }\n }\n else {\n // do not use element.classList = className here, it will cause\n // a read-only assignment error on some browsers (IE/Edge).\n element.setAttribute('class', className);\n }\n }\n };\n Utils.containsClass = function (element, className) {\n if (element.classList) {\n // for modern browsers\n return element.classList.contains(className);\n }\n else if (element.className) {\n // for older browsers, check against the string of class names\n // if only one class, can check for exact match\n var onlyClass = element.className === className;\n // if many classes, check for class name, we have to pad with ' ' to stop other\n // class names that are a substring of this class\n var contains = element.className.indexOf(' ' + className + ' ') >= 0;\n // the padding above then breaks when it's the first or last class names\n var startsWithClass = element.className.indexOf(className + ' ') === 0;\n var endsWithClass = element.className.lastIndexOf(' ' + className) === (element.className.length - className.length - 1);\n return onlyClass || contains || startsWithClass || endsWithClass;\n }\n else {\n // if item is not a node\n return false;\n }\n };\n Utils.getElementAttribute = function (element, attributeName) {\n if (element.attributes) {\n if (element.attributes[attributeName]) {\n var attribute = element.attributes[attributeName];\n return attribute.value;\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n };\n Utils.offsetHeight = function (element) {\n return element && element.clientHeight ? element.clientHeight : 0;\n };\n Utils.offsetWidth = function (element) {\n return element && element.clientWidth ? element.clientWidth : 0;\n };\n Utils.sortNumberArray = function (numberArray) {\n numberArray.sort(function (a, b) { return a - b; });\n };\n Utils.removeCssClass = function (element, className) {\n if (element.classList) {\n if (element.classList.contains(className)) {\n element.classList.remove(className);\n }\n }\n else {\n if (element.className && element.className.length > 0) {\n var cssClasses = element.className.split(' ');\n if (cssClasses.indexOf(className) >= 0) {\n // remove all instances of the item, not just the first, in case it's in more than once\n while (cssClasses.indexOf(className) >= 0) {\n cssClasses.splice(cssClasses.indexOf(className), 1);\n }\n element.setAttribute('class', cssClasses.join(' '));\n }\n }\n }\n };\n Utils.removeRepeatsFromArray = function (array, object) {\n if (!array) {\n return;\n }\n for (var index = array.length - 2; index >= 0; index--) {\n var thisOneMatches = array[index] === object;\n var nextOneMatches = array[index + 1] === object;\n if (thisOneMatches && nextOneMatches) {\n array.splice(index + 1, 1);\n }\n }\n };\n Utils.removeFromArray = function (array, object) {\n if (array.indexOf(object) >= 0) {\n array.splice(array.indexOf(object), 1);\n }\n };\n Utils.removeAllFromArray = function (array, toRemove) {\n toRemove.forEach(function (item) {\n if (array.indexOf(item) >= 0) {\n array.splice(array.indexOf(item), 1);\n }\n });\n };\n Utils.insertIntoArray = function (array, object, toIndex) {\n array.splice(toIndex, 0, object);\n };\n Utils.insertArrayIntoArray = function (dest, src, toIndex) {\n if (this.missing(dest) || this.missing(src)) {\n return;\n }\n // put items in backwards, otherwise inserted items end up in reverse order\n for (var i = src.length - 1; i >= 0; i--) {\n var item = src[i];\n this.insertIntoArray(dest, item, toIndex);\n }\n };\n Utils.moveInArray = function (array, objectsToMove, toIndex) {\n var _this = this;\n // first take out it items from the array\n objectsToMove.forEach(function (obj) {\n _this.removeFromArray(array, obj);\n });\n // now add the objects, in same order as provided to us, that means we start at the end\n // as the objects will be pushed to the right as they are inserted\n objectsToMove.slice().reverse().forEach(function (obj) {\n _this.insertIntoArray(array, obj, toIndex);\n });\n };\n Utils.defaultComparator = function (valueA, valueB, accentedCompare) {\n if (accentedCompare === void 0) { accentedCompare = false; }\n var valueAMissing = valueA === null || valueA === undefined;\n var valueBMissing = valueB === null || valueB === undefined;\n // this is for aggregations sum and avg, where the result can be a number that is wrapped.\n // if we didn't do this, then the toString() value would be used, which would result in\n // the strings getting used instead of the numbers.\n if (valueA && valueA.toNumber) {\n valueA = valueA.toNumber();\n }\n if (valueB && valueB.toNumber) {\n valueB = valueB.toNumber();\n }\n if (valueAMissing && valueBMissing) {\n return 0;\n }\n if (valueAMissing) {\n return -1;\n }\n if (valueBMissing) {\n return 1;\n }\n if (typeof valueA === \"string\") {\n if (!accentedCompare) {\n return doQuickCompare(valueA, valueB);\n }\n else {\n try {\n // using local compare also allows chinese comparisons\n return valueA.localeCompare(valueB);\n }\n catch (e) {\n // if something wrong with localeCompare, eg not supported\n // by browser, then just continue with the quick one\n return doQuickCompare(valueA, valueB);\n }\n }\n }\n if (valueA < valueB) {\n return -1;\n }\n else if (valueA > valueB) {\n return 1;\n }\n else {\n return 0;\n }\n function doQuickCompare(a, b) {\n return (a > b ? 1 : (a < b ? -1 : 0));\n }\n };\n Utils.compareArrays = function (array1, array2) {\n if (this.missing(array1) && this.missing(array2)) {\n return true;\n }\n if ((this.missing(array1) || this.missing(array2)) ||\n (!array1 || !array2)) {\n return false;\n }\n if (array1.length !== array2.length) {\n return false;\n }\n for (var i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n };\n Utils.ensureDomOrder = function (eContainer, eChild, eChildBefore) {\n // if already in right order, do nothing\n if (eChildBefore && eChildBefore.nextSibling === eChild) {\n return;\n }\n if (eChildBefore) {\n if (eChildBefore.nextSibling) {\n // insert between the eRowBefore and the row after it\n eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n }\n else {\n // if nextSibling is missing, means other row is at end, so just append new row at the end\n eContainer.appendChild(eChild);\n }\n }\n else {\n // otherwise put at start\n if (eContainer.firstChild && eContainer.firstChild !== eChild) {\n // insert it at the first location\n eContainer.insertAdjacentElement('afterbegin', eChild);\n }\n }\n };\n Utils.insertWithDomOrder = function (eContainer, eChild, eChildBefore) {\n if (eChildBefore) {\n if (eChildBefore.nextSibling) {\n // insert between the eRowBefore and the row after it\n eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n }\n else {\n // if nextSibling is missing, means other row is at end, so just append new row at the end\n eContainer.appendChild(eChild);\n }\n }\n else {\n if (eContainer.firstChild) {\n // insert it at the first location\n eContainer.insertBefore(eChild, eContainer.firstChild);\n }\n else {\n // otherwise eContainer is empty, so just append it\n eContainer.appendChild(eChild);\n }\n }\n };\n Utils.insertTemplateWithDomOrder = function (eContainer, htmlTemplate, eChildBefore) {\n var res;\n if (eChildBefore) {\n // if previous element exists, just slot in after the previous element\n eChildBefore.insertAdjacentHTML('afterend', htmlTemplate);\n res = eChildBefore.nextSibling;\n }\n else {\n if (eContainer.firstChild) {\n // insert it at the first location\n eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);\n }\n else {\n // otherwise eContainer is empty, so just append it\n eContainer.innerHTML = htmlTemplate;\n }\n res = eContainer.firstChild;\n }\n return res;\n };\n Utils.every = function (items, callback) {\n if (!items || items.length === 0) {\n return true;\n }\n for (var i = 0; i < items.length; i++) {\n if (!callback(items[i])) {\n return false;\n }\n }\n return true;\n };\n Utils.toStringOrNull = function (value) {\n if (this.exists(value) && value.toString) {\n return value.toString();\n }\n else {\n return null;\n }\n };\n Utils.formatSize = function (size) {\n if (typeof size === \"number\") {\n return size + \"px\";\n }\n else {\n return size;\n }\n };\n Utils.formatNumberTwoDecimalPlacesAndCommas = function (value) {\n if (typeof value !== 'number') {\n return '';\n }\n // took this from: http://blog.tompawlak.org/number-currency-formatting-javascript\n return (Math.round(value * 100) / 100).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n };\n // the native method number.toLocaleString(undefined, {minimumFractionDigits: 0}) puts in decimal places in IE,\n // so we use this method instead\n Utils.formatNumberCommas = function (value) {\n if (typeof value !== 'number') {\n return '';\n }\n // took this from: http://blog.tompawlak.org/number-currency-formatting-javascript\n return value.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n };\n Utils.prependDC = function (parent, documentFragment) {\n if (this.exists(parent.firstChild)) {\n parent.insertBefore(documentFragment, parent.firstChild);\n }\n else {\n parent.appendChild(documentFragment);\n }\n };\n /**\n * If icon provided, use this (either a string, or a function callback).\n * if not, then use the default icon from the theme\n */\n Utils.createIcon = function (iconName, gridOptionsWrapper, column) {\n var iconContents = this.createIconNoSpan(iconName, gridOptionsWrapper, column);\n if (iconContents.className.indexOf('ag-icon') > -1) {\n return iconContents;\n }\n else {\n var eResult = document.createElement('span');\n eResult.appendChild(iconContents);\n return eResult;\n }\n };\n Utils.createIconNoSpan = function (iconName, gridOptionsWrapper, column) {\n var userProvidedIcon = null;\n // check col for icon first\n var icons = (column && column.getColDef().icons) ? column.getColDef().icons : null;\n if (icons) {\n userProvidedIcon = icons[iconName];\n }\n // it not in col, try grid options\n if (!userProvidedIcon && gridOptionsWrapper.getIcons()) {\n userProvidedIcon = gridOptionsWrapper.getIcons()[iconName];\n }\n // now if user provided, use it\n if (userProvidedIcon) {\n var rendererResult = void 0;\n if (typeof userProvidedIcon === 'function') {\n rendererResult = userProvidedIcon();\n }\n else if (typeof userProvidedIcon === 'string') {\n rendererResult = userProvidedIcon;\n }\n else {\n throw new Error('icon from grid options needs to be a string or a function');\n }\n if (typeof rendererResult === 'string') {\n return this.loadTemplate(rendererResult);\n }\n else if (this.isNodeOrElement(rendererResult)) {\n return rendererResult;\n }\n else {\n throw new Error('iconRenderer should return back a string or a dom object');\n }\n }\n else {\n var span = document.createElement('span');\n var cssClass = this.iconNameClassMap[iconName];\n if (!cssClass) {\n throw new Error(iconName + \" did not find class\");\n }\n span.setAttribute(\"class\", \"ag-icon ag-icon-\" + cssClass);\n span.setAttribute(\"unselectable\", \"on\");\n return span;\n }\n };\n Utils.addStylesToElement = function (eElement, styles) {\n var _this = this;\n if (!styles) {\n return;\n }\n Object.keys(styles).forEach(function (key) {\n var keyCamelCase = _this.hyphenToCamelCase(key);\n if (keyCamelCase) {\n eElement.style[keyCamelCase] = styles[key];\n }\n });\n };\n Utils.isHorizontalScrollShowing = function (element) {\n return element.clientWidth < element.scrollWidth;\n };\n Utils.isVerticalScrollShowing = function (element) {\n return element.clientHeight < element.scrollHeight;\n };\n Utils.getMaxDivHeight = function () {\n if (!document.body) {\n return -1;\n }\n var res = 1000000;\n // FF reports the height back but still renders blank after ~6M px\n var testUpTo = navigator.userAgent.toLowerCase().match(/firefox/) ? 6000000 : 1000000000;\n var div = this.loadTemplate(\"
\");\n document.body.appendChild(div);\n while (true) {\n var test = res * 2;\n div.style.height = test + 'px';\n if (test > testUpTo || div.clientHeight !== test) {\n break;\n }\n else {\n res = test;\n }\n }\n document.body.removeChild(div);\n return res;\n };\n Utils.getScrollbarWidth = function () {\n var outer = document.createElement(\"div\");\n outer.style.visibility = \"hidden\";\n outer.style.width = \"100px\";\n outer.style.msOverflowStyle = \"scrollbar\"; // needed for WinJS apps\n document.body.appendChild(outer);\n var widthNoScroll = outer.offsetWidth;\n // force scrollbars\n outer.style.overflow = \"scroll\";\n // add inner div\n var inner = document.createElement(\"div\");\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n var widthWithScroll = inner.offsetWidth;\n // remove divs\n if (outer.parentNode) {\n outer.parentNode.removeChild(outer);\n }\n return widthNoScroll - widthWithScroll;\n };\n Utils.hasOverflowScrolling = function () {\n var prefixes = ['webkit', 'moz', 'o', 'ms'];\n var div = document.createElement('div');\n var body = document.getElementsByTagName('body')[0];\n var found = false;\n var p;\n body.appendChild(div);\n div.setAttribute('style', prefixes.map(function (prefix) { return \"-\" + prefix + \"-overflow-scrolling: touch\"; }).concat('overflow-scrolling: touch').join(';'));\n var computedStyle = window.getComputedStyle(div);\n if (computedStyle.overflowScrolling === 'touch') {\n found = true;\n }\n if (!found) {\n for (var _i = 0, prefixes_1 = prefixes; _i < prefixes_1.length; _i++) {\n p = prefixes_1[_i];\n if (computedStyle[p + \"OverflowScrolling\"] === 'touch') {\n found = true;\n break;\n }\n }\n }\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n return found;\n };\n Utils.isKeyPressed = function (event, keyToCheck) {\n var pressedKey = event.which || event.keyCode;\n return pressedKey === keyToCheck;\n };\n Utils.setVisible = function (element, visible) {\n this.addOrRemoveCssClass(element, 'ag-hidden', !visible);\n };\n Utils.setHidden = function (element, hidden) {\n this.addOrRemoveCssClass(element, 'ag-invisible', hidden);\n };\n Utils.setFixedWidth = function (element, width) {\n width = this.formatSize(width);\n element.style.width = width;\n element.style.maxWidth = width;\n element.style.minWidth = width;\n };\n Utils.setFixedHeight = function (element, height) {\n height = this.formatSize(height);\n element.style.height = height;\n element.style.maxHeight = height;\n element.style.minHeight = height;\n };\n Utils.isBrowserIE = function () {\n if (this.isIE === undefined) {\n this.isIE = /*@cc_on!@*/ false || !!document.documentMode; // At least IE6\n }\n return this.isIE;\n };\n Utils.isBrowserEdge = function () {\n if (this.isEdge === undefined) {\n this.isEdge = !this.isBrowserIE() && !!window.StyleMedia;\n }\n return this.isEdge;\n };\n Utils.isBrowserSafari = function () {\n if (this.isSafari === undefined) {\n var anyWindow = window;\n // taken from https://github.com/ag-grid/ag-grid/issues/550\n this.isSafari = Object.prototype.toString.call(anyWindow.HTMLElement).indexOf('Constructor') > 0\n || (function (p) {\n return p ? p.toString() === \"[object SafariRemoteNotification]\" : false;\n })(!anyWindow.safari || anyWindow.safari.pushNotification);\n }\n return this.isSafari;\n };\n Utils.isBrowserChrome = function () {\n if (this.isChrome === undefined) {\n var win = window;\n this.isChrome = (!!win.chrome && (!!win.chrome.webstore || !!win.chrome.runtime)) ||\n (/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor));\n }\n return this.isChrome;\n };\n Utils.isBrowserFirefox = function () {\n if (this.isFirefox === undefined) {\n var win = window;\n this.isFirefox = typeof win.InstallTrigger !== 'undefined';\n }\n return this.isFirefox;\n };\n Utils.isUserAgentIPad = function () {\n if (this.isIPad === undefined) {\n // taken from https://davidwalsh.name/detect-ipad\n this.isIPad = navigator.userAgent.match(/iPad|iPhone/i) != null;\n }\n return this.isIPad;\n };\n // srcElement is only available in IE. In all other browsers it is target\n // http://stackoverflow.com/questions/5301643/how-can-i-make-event-srcelement-work-in-firefox-and-what-does-it-mean\n Utils.getTarget = function (event) {\n var eventNoType = event;\n return eventNoType.target || eventNoType.srcElement;\n };\n Utils.isElementChildOfClass = function (element, cls, maxNest) {\n var counter = 0;\n while (element) {\n if (this.containsClass(element, cls)) {\n return true;\n }\n element = element.parentElement;\n if (maxNest && ++counter > maxNest) {\n break;\n }\n }\n return false;\n };\n Utils.isElementInEventPath = function (element, event) {\n if (!event || !element) {\n return false;\n }\n var path = exports._.getEventPath(event);\n return path.indexOf(element) >= 0;\n };\n Utils.isFunction = function (val) {\n return !!(val && val.constructor && val.call && val.apply);\n };\n Utils.createEventPath = function (event) {\n var res = [];\n var pointer = exports._.getTarget(event);\n while (pointer) {\n res.push(pointer);\n pointer = pointer.parentElement;\n }\n return res;\n };\n // firefox doesn't have event.path set, or any alternative to it, so we hack\n // it in. this is needed as it's to late to work out the path when the item is\n // removed from the dom. used by MouseEventService, where it works out if a click\n // was from the current grid, or a detail grid (master / detail).\n Utils.addAgGridEventPath = function (event) {\n event.__agGridEventPath = this.getEventPath(event);\n };\n Utils.getEventPath = function (event) {\n // https://stackoverflow.com/questions/39245488/event-path-undefined-with-firefox-and-vue-js\n // https://developer.mozilla.org/en-US/docs/Web/API/Event\n var eventNoType = event;\n if (eventNoType.deepPath) {\n // IE supports deep path\n return eventNoType.deepPath();\n }\n else if (eventNoType.path) {\n // Chrome supports path\n return eventNoType.path;\n }\n else if (eventNoType.composedPath) {\n // Firefox supports composePath\n return eventNoType.composedPath();\n }\n else if (eventNoType.__agGridEventPath) {\n // Firefox supports composePath\n return eventNoType.__agGridEventPath;\n }\n else {\n // and finally, if none of the above worked,\n // we create the path ourselves\n return this.createEventPath(event);\n }\n };\n Utils.forEachSnapshotFirst = function (list, callback) {\n if (list) {\n var arrayCopy = list.slice(0);\n arrayCopy.forEach(callback);\n }\n };\n // taken from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code\n Utils.getBodyWidth = function () {\n if (document.body) {\n return document.body.clientWidth;\n }\n if (window.innerHeight) {\n return window.innerWidth;\n }\n if (document.documentElement && document.documentElement.clientWidth) {\n return document.documentElement.clientWidth;\n }\n return -1;\n };\n // taken from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code\n Utils.getBodyHeight = function () {\n if (document.body) {\n return document.body.clientHeight;\n }\n if (window.innerHeight) {\n return window.innerHeight;\n }\n if (document.documentElement && document.documentElement.clientHeight) {\n return document.documentElement.clientHeight;\n }\n return -1;\n };\n Utils.setCheckboxState = function (eCheckbox, state) {\n if (typeof state === 'boolean') {\n eCheckbox.checked = state;\n eCheckbox.indeterminate = false;\n }\n else {\n // isNodeSelected returns back undefined if it's a group and the children\n // are a mix of selected and unselected\n eCheckbox.indeterminate = true;\n }\n };\n Utils.traverseNodesWithKey = function (nodes, callback) {\n var keyParts = [];\n recursiveSearchNodes(nodes);\n function recursiveSearchNodes(currentNodes) {\n currentNodes.forEach(function (node) {\n // also checking for children for tree data\n if (node.group || node.hasChildren()) {\n keyParts.push(node.key);\n var key = keyParts.join('|');\n callback(node, key);\n recursiveSearchNodes(node.childrenAfterGroup);\n keyParts.pop();\n }\n });\n }\n };\n // from https://gist.github.com/youssman/745578062609e8acac9f\n Utils.camelCaseToHyphen = function (str) {\n if (str === null || str === undefined) {\n return null;\n }\n return str.replace(/([A-Z])/g, function (g) { return '-' + g[0].toLowerCase(); });\n };\n // from https://stackoverflow.com/questions/6660977/convert-hyphens-to-camel-case-camelcase\n Utils.hyphenToCamelCase = function (str) {\n if (str === null || str === undefined) {\n return null;\n }\n return str.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });\n };\n // pas in an object eg: {color: 'black', top: '25px'} and it returns \"color: black; top: 25px;\" for html\n Utils.cssStyleObjectToMarkup = function (stylesToUse) {\n var _this = this;\n if (!stylesToUse) {\n return '';\n }\n var resParts = [];\n this.iterateObject(stylesToUse, function (styleKey, styleValue) {\n var styleKeyDashed = _this.camelCaseToHyphen(styleKey);\n resParts.push(styleKeyDashed + \": \" + styleValue + \";\");\n });\n return resParts.join(' ');\n };\n /**\n * From http://stackoverflow.com/questions/9716468/is-there-any-function-like-isnumeric-in-javascript-to-validate-numbers\n */\n Utils.isNumeric = function (value) {\n if (value === '') {\n return false;\n }\n return !isNaN(parseFloat(value)) && isFinite(value);\n };\n Utils.escape = function (toEscape) {\n if (toEscape === null || toEscape === undefined || !toEscape.replace) {\n return toEscape;\n }\n return toEscape.replace(reUnescapedHtml, function (chr) { return HTML_ESCAPES[chr]; });\n };\n // Taken from here: https://github.com/facebook/fixed-data-table/blob/master/src/vendor_upstream/dom/normalizeWheel.js\n /**\n * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * As of today, there are 4 DOM event types you can listen to:\n *\n * 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n * 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n * 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n * 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n *\n * So what to do? The is the best:\n *\n * normalizeWheel.getEventType();\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas. This code will return an object with properties:\n *\n * spinX -- normalized spin speed (use for zoom) - x plane\n * spinY -- \" - y plane\n * pixelX -- normalized distance (to pixels) - x plane\n * pixelY -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages). Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds. Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n * - spin is trying to normalize how far the wheel was spun (or trackpad\n * dragged). This is super useful for zoom support where you want to\n * throw away the chunky scroll steps on the PC and make those equal to\n * the slow and smooth tiny steps on the Mac. Key data: This code tries to\n * resolve a single slow step on a wheel to 1.\n *\n * - pixel is normalizing the desired scroll delta in pixel units. You'll\n * get the crazy differences between browsers, but at least it'll be in\n * pixels!\n *\n * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n * should translate to positive value zooming IN, negative zooming OUT.\n * This matches the newer 'wheel' event.\n *\n * Why are there spinX, spinY (or pixels)?\n *\n * - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n * with a mouse. It results in side-scrolling in the browser by default.\n *\n * - spinY is what you expect -- it's the classic axis of a mouse wheel.\n *\n * - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n * probably is by browsers in conjunction with fancy 3D controllers .. but\n * you know.\n *\n * Implementation info:\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n *\n * On the trackpad:\n *\n * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n *\n * On other/older browsers.. it's more complicated as there can be multiple and\n * also missing delta values.\n *\n * The 'wheel' event is more standard:\n *\n * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n * deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n * backward compatibility with older events. Those other values help us\n * better normalize spin speed. Example of what the browsers provide:\n *\n * | event.wheelDelta | event.detail\n * ------------------+------------------+--------------\n * Safari v5/OS X | -120 | 0\n * Safari v5/Win7 | -120 | 0\n * Chrome v17/OS X | -120 | 0\n * Chrome v17/Win7 | -120 | 0\n * IE9/Win7 | -120 | undefined\n * Firefox v4/OS X | undefined | 1\n * Firefox v4/Win7 | undefined | 3\n *\n */\n Utils.normalizeWheel = function (event) {\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n // spinX, spinY\n var sX = 0;\n var sY = 0;\n // pixelX, pixelY\n var pX = 0;\n var pY = 0;\n // Legacy\n if ('detail' in event) {\n sY = event.detail;\n }\n if ('wheelDelta' in event) {\n sY = -event.wheelDelta / 120;\n }\n if ('wheelDeltaY' in event) {\n sY = -event.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in event) {\n sX = -event.wheelDeltaX / 120;\n }\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in event && event.axis === event.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in event) {\n pY = event.deltaY;\n }\n if ('deltaX' in event) {\n pX = event.deltaX;\n }\n if ((pX || pY) && event.deltaMode) {\n if (event.deltaMode == 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n }\n else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n };\n /**\n * https://stackoverflow.com/questions/24004791/can-someone-explain-the-debounce-function-in-javascript\n */\n Utils.debounce = function (func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n // 'private' variable for instance\n // The returned function will be able to reference this due to closure.\n // Each call to the returned function will share this common timer.\n var timeout;\n // Calling debounce returns a new anonymous function\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // reference the context and args for the setTimeout function\n var context = this;\n // Should the function be called now? If immediate is true\n // and not already in a timeout then the answer is: Yes\n var callNow = immediate && !timeout;\n // This is the basic debounce behaviour where you can call this\n // function several times, but it will only execute once\n // [before or after imposing a delay].\n // Each time the returned function is called, the timer starts over.\n window.clearTimeout(timeout);\n // Set the new timeout\n timeout = window.setTimeout(function () {\n // Inside the timeout function, clear the timeout variable\n // which will let the next execution run when in 'immediate' mode\n timeout = null;\n // Check if the function already ran with the immediate flag\n if (!immediate) {\n // Call the original function with apply\n // apply lets you define the 'this' object as well as the arguments\n // (both captured before setTimeout)\n func.apply(context, args);\n }\n }, wait);\n // Immediate mode and no wait timer? Execute the function..\n if (callNow) {\n func.apply(context, args);\n }\n };\n };\n // a user once raised an issue - they said that when you opened a popup (eg context menu)\n // and then clicked on a selection checkbox, the popup wasn't closed. this is because the\n // popup listens for clicks on the body, however ag-grid WAS stopping propagation on the\n // checkbox clicks (so the rows didn't pick them up as row selection selection clicks).\n // to get around this, we have a pattern to stop propagation for the purposes of ag-Grid,\n // but we still let the event pass back to teh body.\n Utils.stopPropagationForAgGrid = function (event) {\n event[AG_GRID_STOP_PROPAGATION] = true;\n };\n Utils.isStopPropagationForAgGrid = function (event) {\n return event[AG_GRID_STOP_PROPAGATION] === true;\n };\n Utils.executeInAWhile = function (funcs) {\n this.executeAfter(funcs, 400);\n };\n Utils.executeNextVMTurn = function (funcs) {\n this.executeAfter(funcs, 0);\n };\n Utils.executeAfter = function (funcs, millis) {\n if (funcs.length > 0) {\n window.setTimeout(function () {\n funcs.forEach(function (func) { return func(); });\n }, millis);\n }\n };\n Utils.referenceCompare = function (left, right) {\n if (left == null && right == null) {\n return true;\n }\n if (left == null && right) {\n return false;\n }\n if (left && right == null) {\n return false;\n }\n return left === right;\n };\n Utils.get = function (source, expression, defaultValue) {\n if (source == null) {\n return defaultValue;\n }\n if (expression.indexOf('.') > -1) {\n var fields = expression.split('.');\n var thisKey = fields[0];\n var nextValue = source[thisKey];\n if (nextValue != null) {\n return Utils.get(nextValue, fields.slice(1, fields.length).join('.'), defaultValue);\n }\n else {\n return defaultValue;\n }\n }\n else {\n var nextValue = source[expression];\n return nextValue != null ? nextValue : defaultValue;\n }\n };\n Utils.addSafePassiveEventListener = function (eElement, event, listener, options) {\n if (Utils.passiveEvents.indexOf(event) !== -1) {\n if (options === undefined) {\n options = {};\n }\n else if (typeof options === 'boolean') {\n options = { capture: options };\n }\n options.passive = true;\n }\n eElement.addEventListener(event, listener, options);\n };\n Utils.camelCaseToHumanText = function (camelCase) {\n if (!camelCase || camelCase == null) {\n return null;\n }\n // Who needs to learn how to code when you have stack overflow!\n // from: https://stackoverflow.com/questions/15369566/putting-space-in-camel-case-string-using-regular-expression\n var rex = /([A-Z])([A-Z])([a-z])|([a-z])([A-Z])/g;\n var words = camelCase.replace(rex, '$1$4 $2$3$5').replace('.', ' ').split(' ');\n return words.map(function (word) { return word.substring(0, 1).toUpperCase() + ((word.length > 1) ? word.substring(1, word.length) : ''); }).join(' ');\n };\n // displays a message to the browser. this is useful in iPad, where you can't easily see the console.\n // so the javascript code can use this to give feedback. this is NOT intended to be called in production.\n // it is intended the ag-Grid developer calls this to troubleshoot, but then takes out the calls before\n // checking in.\n Utils.message = function (msg) {\n var eMessage = document.createElement('div');\n eMessage.innerHTML = msg;\n var eBox = document.querySelector('#__ag__message');\n if (!eBox) {\n var template = \"
\";\n eBox = this.loadTemplate(template);\n if (document.body) {\n document.body.appendChild(eBox);\n }\n }\n eBox.insertBefore(eMessage, eBox.children[0]);\n // eBox.appendChild(eMessage);\n };\n // gets called by: a) ClientSideNodeManager and b) GroupStage to do sorting.\n // when in ClientSideNodeManager we always have indexes (as this sorts the items the\n // user provided) but when in GroupStage, the nodes can contain filler nodes that\n // don't have order id's\n Utils.sortRowNodesByOrder = function (rowNodes, rowNodeOrder) {\n if (!rowNodes) {\n return;\n }\n var comparator = function (nodeA, nodeB) {\n var positionA = rowNodeOrder[nodeA.id];\n var positionB = rowNodeOrder[nodeB.id];\n var aHasIndex = positionA !== undefined;\n var bHasIndex = positionB !== undefined;\n var bothNodesAreUserNodes = aHasIndex && bHasIndex;\n var bothNodesAreFillerNodes = !aHasIndex && !bHasIndex;\n if (bothNodesAreUserNodes) {\n // when comparing two nodes the user has provided, they always\n // have indexes\n return positionA - positionB;\n }\n else if (bothNodesAreFillerNodes) {\n // when comparing two filler nodes, we have no index to compare them\n // against, however we want this sorting to be deterministic, so that\n // the rows don't jump around as the user does delta updates. so we\n // want the same sort result. so we use the __objectId - which doesn't make sense\n // from a sorting point of view, but does give consistent behaviour between\n // calls. otherwise groups jump around as delta updates are done.\n // note: previously here we used nodeId, however this gave a strange order\n // as string ordering of numbers is wrong, so using id based on creation order\n // as least gives better looking order.\n return nodeA.__objectId - nodeB.__objectId;\n }\n else if (aHasIndex) {\n return 1;\n }\n return -1;\n };\n // const a = new Date().getTime();\n // check if the list first needs sorting\n var rowNodeA;\n var rowNodeB;\n var atLeastOneOutOfOrder = false;\n for (var i = 0; i < rowNodes.length - 1; i++) {\n rowNodeA = rowNodes[i];\n rowNodeB = rowNodes[i + 1];\n if (comparator(rowNodeA, rowNodeB) > 0) {\n atLeastOneOutOfOrder = true;\n break;\n }\n }\n // const b = new Date().getTime();\n if (atLeastOneOutOfOrder) {\n rowNodes.sort(comparator);\n }\n // const c = new Date().getTime();\n // console.log(`${this.count}: ${rowNodes.length} items, ${b-a}ms ${atLeastOneOutOfOrder} ${c-b}ms`);\n };\n Utils.fuzzyCheckStrings = function (inputValues, validValues, allSuggestions) {\n var _this = this;\n var fuzzyMatches = {};\n var invalidInputs = inputValues.filter(function (inputValue) {\n return !validValues.some(function (validValue) { return validValue === inputValue; });\n });\n if (invalidInputs.length > 0) {\n invalidInputs.forEach(function (invalidInput) {\n return fuzzyMatches[invalidInput] = _this.fuzzySuggestions(invalidInput, validValues, allSuggestions);\n });\n }\n return fuzzyMatches;\n };\n Utils.fuzzySuggestions = function (inputValue, validValues, allSuggestions) {\n var thisSuggestions = allSuggestions.slice(0);\n thisSuggestions.sort(function (suggestedValueLeft, suggestedValueRight) {\n var leftDifference = exports._.string_similarity(suggestedValueLeft.toLowerCase(), inputValue.toLowerCase());\n var rightDifference = exports._.string_similarity(suggestedValueRight.toLowerCase(), inputValue.toLowerCase());\n return leftDifference > rightDifference ? -1 :\n leftDifference === rightDifference ? 0 :\n 1;\n });\n return thisSuggestions;\n };\n //Algorithm to do fuzzy search\n //https://stackoverflow.com/questions/23305000/javascript-fuzzy-search-that-makes-sense\n Utils.get_bigrams = function (from) {\n var s = from.toLowerCase();\n var v = new Array(s.length - 1);\n var i;\n var j;\n var ref;\n for (i = j = 0, ref = v.length; j <= ref; i = j += 1) {\n v[i] = s.slice(i, i + 2);\n }\n return v;\n };\n Utils.isNumpadDelWithNumlockOnForEdgeOrIe = function (event) {\n if (Utils.isBrowserEdge() || Utils.isBrowserIE()) {\n return event.key === Utils.NUMPAD_DEL_NUMLOCK_ON_KEY &&\n event.charCode === Utils.NUMPAD_DEL_NUMLOCK_ON_CHARCODE;\n }\n return false;\n };\n // cell renderers are used in a few places. they bind to dom slightly differently to other cell renderes as they\n // can return back strings (instead of html elemnt) in the getGui() method. common code placed here to handle that.\n Utils.bindCellRendererToHtmlElement = function (cellRendererPromise, eTarget) {\n cellRendererPromise.then(function (cellRenderer) {\n var gui = cellRenderer.getGui();\n if (gui != null) {\n if (typeof gui == 'object') {\n eTarget.appendChild(gui);\n }\n else {\n eTarget.innerHTML = gui;\n }\n }\n });\n };\n Utils.PRINTABLE_CHARACTERS = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890!\"£$%^&*()_+-=[];\\'#,./\\\\|<>?:@~{}';\n Utils.NUMPAD_DEL_NUMLOCK_ON_KEY = 'Del';\n Utils.NUMPAD_DEL_NUMLOCK_ON_CHARCODE = 46;\n Utils.doOnceFlags = {};\n Utils.compose = function () {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return function (arg) { return fns.reduce(function (composed, f) { return f(composed); }, arg); };\n };\n Utils.decToHex = function (number, bytes) {\n var hex = '';\n for (var i = 0; i < bytes; i++) {\n hex += String.fromCharCode(number & 0xff);\n number >>>= 8;\n }\n return hex;\n };\n Utils.utf8_encode = function (s) {\n var utftext = '';\n s = s.replace(/\\r\\n/g, \"\\n\");\n for (var n = 0, len = s.length; n < len; n++) {\n var c = s.charCodeAt(n);\n if (c < 128) {\n utftext += String.fromCharCode(c);\n }\n else if ((c > 127) && (c < 2048)) {\n utftext += String.fromCharCode((c >> 6) | 192);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n else {\n utftext += String.fromCharCode((c >> 12) | 224);\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n }\n return utftext;\n };\n // static prepend(parent: HTMLElement, child: HTMLElement): void {\n // if (this.exists(parent.firstChild)) {\n // parent.insertBefore(child, parent.firstChild);\n // } else {\n // parent.appendChild(child);\n // }\n // }\n Utils.iconNameClassMap = {\n columnGroupOpened: 'expanded',\n columnGroupClosed: 'contracted',\n columnSelectClosed: 'tree-closed',\n columnSelectOpen: 'tree-open',\n columnMovePin: 'pin',\n columnMoveAdd: 'plus',\n columnMoveHide: 'eye-slash',\n columnMoveMove: 'arrows',\n columnMoveLeft: 'left',\n columnMoveRight: 'right',\n columnMoveGroup: 'group',\n columnMoveValue: 'aggregation',\n columnMovePivot: 'pivot',\n dropNotAllowed: 'not-allowed',\n groupContracted: 'expanded',\n groupExpanded: 'contracted',\n checkboxChecked: 'checkbox-checked',\n checkboxUnchecked: 'checkbox-unchecked',\n checkboxIndeterminate: 'checkbox-indeterminate',\n checkboxCheckedReadOnly: 'checkbox-checked-readonly',\n checkboxUncheckedReadOnly: 'checkbox-unchecked-readonly',\n checkboxIndeterminateReadOnly: 'checkbox-indeterminate-readonly',\n groupLoading: 'loading',\n menu: 'menu',\n filter: 'filter',\n columns: 'columns',\n menuPin: 'pin',\n menuValue: 'aggregation',\n menuAddRowGroup: 'group',\n menuRemoveRowGroup: 'group',\n clipboardCopy: 'copy',\n clipboardCut: 'cut',\n clipboardPaste: 'paste',\n pivotPanel: 'pivot',\n rowGroupPanel: 'group',\n valuePanel: 'aggregation',\n columnDrag: 'column-drag',\n rowDrag: 'row-drag',\n /** from @deprecated header, remove at some point */\n sortAscending: 'asc',\n sortDescending: 'desc',\n sortUnSort: 'none'\n };\n Utils.passiveEvents = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];\n Utils.string_similarity = function (str1, str2) {\n if (str1.length > 0 && str2.length > 0) {\n var pairs1 = Utils.get_bigrams(str1);\n var pairs2 = Utils.get_bigrams(str2);\n var union = pairs1.length + pairs2.length;\n var hit_count = 0;\n var j = void 0;\n var len = void 0;\n for (j = 0, len = pairs1.length; j < len; j++) {\n var x = pairs1[j];\n var k = void 0;\n var len1 = void 0;\n for (k = 0, len1 = pairs2.length; k < len1; k++) {\n var y = pairs2[k];\n if (x === y) {\n hit_count++;\n }\n }\n }\n if (hit_count > 0) {\n return (2.0 * hit_count) / union;\n }\n }\n return 0.0;\n };\n return Utils;\n}());\nexports.Utils = Utils;\nvar NumberSequence = /** @class */ (function () {\n function NumberSequence(initValue, step) {\n if (initValue === void 0) { initValue = 0; }\n if (step === void 0) { step = 1; }\n this.nextValue = initValue;\n this.step = step;\n }\n NumberSequence.prototype.next = function () {\n var valToReturn = this.nextValue;\n this.nextValue += this.step;\n return valToReturn;\n };\n NumberSequence.prototype.peek = function () {\n return this.nextValue;\n };\n NumberSequence.prototype.skip = function (count) {\n this.nextValue += count;\n };\n return NumberSequence;\n}());\nexports.NumberSequence = NumberSequence;\nexports._ = Utils;\nvar PromiseStatus;\n(function (PromiseStatus) {\n PromiseStatus[PromiseStatus[\"IN_PROGRESS\"] = 0] = \"IN_PROGRESS\";\n PromiseStatus[PromiseStatus[\"RESOLVED\"] = 1] = \"RESOLVED\";\n})(PromiseStatus = exports.PromiseStatus || (exports.PromiseStatus = {}));\nvar Promise = /** @class */ (function () {\n function Promise(callback) {\n this.status = PromiseStatus.IN_PROGRESS;\n this.resolution = null;\n this.listOfWaiters = [];\n callback(this.onDone.bind(this), this.onReject.bind(this));\n }\n Promise.all = function (toCombine) {\n return new Promise(function (resolve) {\n var combinedValues = [];\n var remainingToResolve = toCombine.length;\n toCombine.forEach(function (source, index) {\n source.then(function (sourceResolved) {\n remainingToResolve--;\n combinedValues[index] = sourceResolved;\n if (remainingToResolve == 0) {\n resolve(combinedValues);\n }\n });\n combinedValues.push(null); // spl todo: review with Alberto - why?\n });\n });\n };\n Promise.resolve = function (value) {\n return new Promise(function (resolve) { return resolve(value); });\n };\n Promise.external = function () {\n var capture;\n var promise = new Promise(function (resolve) {\n capture = resolve;\n });\n return {\n promise: promise,\n resolve: function (value) {\n capture(value);\n }\n };\n };\n Promise.prototype.then = function (func) {\n if (this.status === PromiseStatus.IN_PROGRESS) {\n this.listOfWaiters.push(func);\n }\n else {\n func(this.resolution);\n }\n };\n Promise.prototype.firstOneOnly = function (func) {\n if (this.status === PromiseStatus.IN_PROGRESS) {\n if (this.listOfWaiters.length === 0) {\n this.listOfWaiters.push(func);\n }\n }\n else {\n func(this.resolution);\n }\n };\n Promise.prototype.map = function (adapter) {\n var _this = this;\n return new Promise(function (resolve) {\n _this.then(function (unmapped) {\n resolve(adapter(unmapped));\n });\n });\n };\n Promise.prototype.resolveNow = function (ifNotResolvedValue, ifResolved) {\n if (this.status == PromiseStatus.IN_PROGRESS) {\n return ifNotResolvedValue;\n }\n return ifResolved(this.resolution);\n };\n Promise.prototype.onDone = function (value) {\n this.status = PromiseStatus.RESOLVED;\n this.resolution = value;\n this.listOfWaiters.forEach(function (waiter) { return waiter(value); });\n };\n Promise.prototype.onReject = function (params) {\n console.warn('TBI');\n };\n return Promise;\n}());\nexports.Promise = Promise;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar ScrollVisibleService = /** @class */ (function () {\n function ScrollVisibleService() {\n }\n ScrollVisibleService.prototype.setScrollsVisible = function (params) {\n var atLeastOneDifferent = this.horizontalScrollShowing !== params.horizontalScrollShowing ||\n this.verticalScrollShowing !== params.verticalScrollShowing;\n if (atLeastOneDifferent) {\n this.horizontalScrollShowing = params.horizontalScrollShowing;\n this.verticalScrollShowing = params.verticalScrollShowing;\n var event_1 = {\n type: events_1.Events.EVENT_SCROLL_VISIBILITY_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n // used by pagination service - to know page height\n ScrollVisibleService.prototype.isHorizontalScrollShowing = function () {\n return this.horizontalScrollShowing;\n };\n // used by header container\n ScrollVisibleService.prototype.isVerticalScrollShowing = function () {\n return this.verticalScrollShowing;\n };\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], ScrollVisibleService.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], ScrollVisibleService.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], ScrollVisibleService.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], ScrollVisibleService.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ScrollVisibleService.prototype, \"gridOptionsWrapper\", void 0);\n ScrollVisibleService = __decorate([\n context_1.Bean('scrollVisibleService')\n ], ScrollVisibleService);\n return ScrollVisibleService;\n}());\nexports.ScrollVisibleService = ScrollVisibleService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar changedPath_1 = require(\"../rowModels/clientSide/changedPath\");\nvar rowRenderer_1 = require(\"../rendering/rowRenderer\");\nvar eventService_1 = require(\"../eventService\");\nvar constants_1 = require(\"../constants\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar events_1 = require(\"../events\");\nvar ChangeDetectionService = /** @class */ (function (_super) {\n __extends(ChangeDetectionService, _super);\n function ChangeDetectionService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChangeDetectionService.prototype.init = function () {\n if (this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged.bind(this));\n };\n ChangeDetectionService.prototype.onCellValueChanged = function (event) {\n this.doChangeDetection(event.node, event.column);\n };\n ChangeDetectionService.prototype.doChangeDetection = function (rowNode, column) {\n if (this.gridOptionsWrapper.isSuppressChangeDetection()) {\n return;\n }\n // step 1 of change detection is to update the aggregated values\n if (this.clientSideRowModel && !rowNode.isRowPinned()) {\n var onlyChangedColumns = this.gridOptionsWrapper.isAggregateOnlyChangedColumns();\n var changedPath = new changedPath_1.ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n changedPath.addParentNode(rowNode.parent, [column]);\n this.clientSideRowModel.doAggregate(changedPath);\n }\n // step 2 of change detection is to refresh the cells\n this.rowRenderer.refreshCells();\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ChangeDetectionService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], ChangeDetectionService.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('rowRenderer'),\n __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n ], ChangeDetectionService.prototype, \"rowRenderer\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], ChangeDetectionService.prototype, \"eventService\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ChangeDetectionService.prototype, \"init\", null);\n ChangeDetectionService = __decorate([\n context_1.Bean('changeDetectionService')\n ], ChangeDetectionService);\n return ChangeDetectionService;\n}(beanStub_1.BeanStub));\nexports.ChangeDetectionService = ChangeDetectionService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar selectionController_1 = require(\"../selectionController\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar context_1 = require(\"../context/context\");\nvar constants_1 = require(\"../constants\");\nvar valueCache_1 = require(\"../valueService/valueCache\");\nvar gridApi_1 = require(\"../gridApi\");\nvar utils_1 = require(\"../utils\");\nvar RowNode = /** @class */ (function () {\n function RowNode() {\n /** Children mapped by the pivot columns */\n this.childrenMapped = {};\n /** True by default - can be overridden via gridOptions.isRowSelectable(rowNode) */\n this.selectable = true;\n /** Used by sorting service - to give deterministic sort to groups. Previously we\n * just id for this, however id is a string and had slower sorting compared to numbers. */\n this.__objectId = RowNode.OBJECT_ID_SEQUENCE++;\n /** True when nodes with the same id are being removed and added as part of the same batch transaction */\n this.alreadyRendered = false;\n this.selected = false;\n }\n RowNode.prototype.setData = function (data) {\n var oldData = this.data;\n this.data = data;\n this.valueCache.onDataChanged();\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n // when we are doing master / detail, the detail node is lazy created, but then kept around.\n // so if we show / hide the detail, the same detail rowNode is used. so we need to keep the data\n // in sync, otherwise expand/collapse of the detail would still show the old values.\n RowNode.prototype.updateDataOnDetailNode = function () {\n if (this.detailNode) {\n this.detailNode.data = this.data;\n }\n };\n RowNode.prototype.createDataChangedEvent = function (newData, oldData, update) {\n return {\n type: RowNode.EVENT_DATA_CHANGED,\n node: this,\n oldData: oldData,\n newData: newData,\n update: update\n };\n };\n RowNode.prototype.createLocalRowEvent = function (type) {\n return {\n type: type,\n node: this\n };\n };\n // similar to setRowData, however it is expected that the data is the same data item. this\n // is intended to be used with Redux type stores, where the whole data can be changed. we are\n // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the\n // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving\n // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).\n RowNode.prototype.updateData = function (data) {\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n this.updateDataOnDetailNode();\n var event = this.createDataChangedEvent(data, oldData, true);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.getRowIndexString = function () {\n if (this.rowPinned === constants_1.Constants.PINNED_TOP) {\n return 't-' + this.rowIndex;\n }\n else if (this.rowPinned === constants_1.Constants.PINNED_BOTTOM) {\n return 'b-' + this.rowIndex;\n }\n else {\n return this.rowIndex.toString();\n }\n };\n RowNode.prototype.createDaemonNode = function () {\n var oldNode = new RowNode();\n this.context.wireBean(oldNode);\n // just copy the id and data, this is enough for the node to be used\n // in the selection controller (the selection controller is the only\n // place where daemon nodes can live).\n oldNode.id = this.id;\n oldNode.data = this.data;\n oldNode.daemon = true;\n oldNode.selected = this.selected;\n oldNode.level = this.level;\n return oldNode;\n };\n RowNode.prototype.setDataAndId = function (data, id) {\n var oldNode = utils_1._.exists(this.id) ? this.createDaemonNode() : null;\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.setId(id);\n this.selectionController.syncInRowNode(this, oldNode);\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.checkRowSelectable = function () {\n var isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n var shouldInvokeIsRowSelectable = isRowSelectableFunc && utils_1._.exists(this);\n this.setRowSelectable(shouldInvokeIsRowSelectable ? isRowSelectableFunc(this) : true);\n };\n RowNode.prototype.setRowSelectable = function (newVal) {\n if (this.selectable !== newVal) {\n this.selectable = newVal;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_SELECTABLE_CHANGED));\n }\n }\n };\n RowNode.prototype.setId = function (id) {\n // see if user is providing the id's\n var getRowNodeId = this.gridOptionsWrapper.getRowNodeIdFunc();\n if (getRowNodeId) {\n // if user is providing the id's, then we set the id only after the data has been set.\n // this is important for virtual pagination and viewport, where empty rows exist.\n if (this.data) {\n this.id = getRowNodeId(this.data);\n }\n else {\n // this can happen if user has set blank into the rowNode after the row previously\n // having data. this happens in virtual page row model, when data is delete and\n // the page is refreshed.\n this.id = undefined;\n }\n }\n else {\n this.id = id;\n }\n };\n RowNode.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.rowTop && pixel < (this.rowTop + this.rowHeight);\n };\n RowNode.prototype.clearRowTop = function () {\n this.oldRowTop = this.rowTop;\n this.setRowTop(null);\n };\n RowNode.prototype.setFirstChild = function (firstChild) {\n if (this.firstChild === firstChild) {\n return;\n }\n this.firstChild = firstChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_FIRST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setLastChild = function (lastChild) {\n if (this.lastChild === lastChild) {\n return;\n }\n this.lastChild = lastChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_LAST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setChildIndex = function (childIndex) {\n if (this.childIndex === childIndex) {\n return;\n }\n this.childIndex = childIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_CHILD_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setRowTop = function (rowTop) {\n if (this.rowTop === rowTop) {\n return;\n }\n this.rowTop = rowTop;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_TOP_CHANGED));\n }\n };\n RowNode.prototype.setDragging = function (dragging) {\n if (this.dragging === dragging) {\n return;\n }\n this.dragging = dragging;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DRAGGING_CHANGED));\n }\n };\n RowNode.prototype.setAllChildrenCount = function (allChildrenCount) {\n if (this.allChildrenCount === allChildrenCount) {\n return;\n }\n this.allChildrenCount = allChildrenCount;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED));\n }\n };\n RowNode.prototype.setRowHeight = function (rowHeight, estimated) {\n if (estimated === void 0) { estimated = false; }\n this.rowHeight = rowHeight;\n this.rowHeightEstimated = estimated;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HEIGHT_CHANGED));\n }\n };\n RowNode.prototype.setRowIndex = function (rowIndex) {\n this.rowIndex = rowIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setUiLevel = function (uiLevel) {\n if (this.uiLevel === uiLevel) {\n return;\n }\n this.uiLevel = uiLevel;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_UI_LEVEL_CHANGED));\n }\n };\n RowNode.prototype.setExpanded = function (expanded) {\n if (this.expanded === expanded) {\n return;\n }\n this.expanded = expanded;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_EXPANDED_CHANGED));\n }\n var event = this.createGlobalRowEvent(events_1.Events.EVENT_ROW_GROUP_OPENED);\n this.mainEventService.dispatchEvent(event);\n if (this.gridOptionsWrapper.isGroupIncludeFooter()) {\n this.gridApi.redrawRows({ rowNodes: [this] });\n }\n };\n RowNode.prototype.createGlobalRowEvent = function (type) {\n var event = {\n type: type,\n node: this,\n data: this.data,\n rowIndex: this.rowIndex,\n rowPinned: this.rowPinned,\n context: this.gridOptionsWrapper.getContext(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n return event;\n };\n RowNode.prototype.dispatchLocalEvent = function (event) {\n if (this.eventService) {\n this.eventService.dispatchEvent(event);\n }\n };\n // we also allow editing the value via the editors. when it is done via\n // the editors, no 'cell changed' event gets fired, as it's assumed that\n // the cell knows about the change given it's in charge of the editing.\n // this method is for the client to call, so the cell listens for the change\n // event, and also flashes the cell when the change occurs.\n RowNode.prototype.setDataValue = function (colKey, newValue) {\n var column = this.columnController.getPrimaryColumn(colKey);\n this.valueService.setValue(this, column, newValue);\n this.dispatchCellChangedEvent(column, newValue);\n };\n RowNode.prototype.setGroupValue = function (colKey, newValue) {\n var column = this.columnController.getGridColumn(colKey);\n if (utils_1._.missing(this.groupData)) {\n this.groupData = {};\n }\n this.groupData[column.getColId()] = newValue;\n this.dispatchCellChangedEvent(column, newValue);\n };\n // sets the data for an aggregation\n RowNode.prototype.setAggData = function (newAggData) {\n var _this = this;\n // find out all keys that could potentially change\n var colIds = utils_1._.getAllKeysInObjects([this.aggData, newAggData]);\n this.aggData = newAggData;\n // if no event service, nobody has registered for events, so no need fire event\n if (this.eventService) {\n colIds.forEach(function (colId) {\n var column = _this.columnController.getGridColumn(colId);\n var value = _this.aggData ? _this.aggData[colId] : undefined;\n _this.dispatchCellChangedEvent(column, value);\n });\n }\n };\n RowNode.prototype.hasChildren = function () {\n // we need to return true when this.group=true, as this is used by server side row model\n // (as children are lazy loaded and stored in a cache anyway). otherwise we return true\n // if children exist.\n return this.group || (this.childrenAfterGroup && this.childrenAfterGroup.length > 0);\n };\n RowNode.prototype.isEmptyFillerNode = function () {\n return this.group && utils_1._.missingOrEmpty(this.childrenAfterGroup);\n };\n RowNode.prototype.dispatchCellChangedEvent = function (column, newValue) {\n var cellChangedEvent = {\n type: RowNode.EVENT_CELL_CHANGED,\n node: this,\n column: column,\n newValue: newValue\n };\n this.dispatchLocalEvent(cellChangedEvent);\n };\n RowNode.prototype.resetQuickFilterAggregateText = function () {\n this.quickFilterAggregateText = null;\n };\n RowNode.prototype.isExpandable = function () {\n return this.hasChildren() || this.master;\n };\n RowNode.prototype.isSelected = function () {\n // for footers, we just return what our sibling selected state is, as cannot select a footer\n if (this.footer) {\n return this.sibling.isSelected();\n }\n return this.selected;\n };\n RowNode.prototype.depthFirstSearch = function (callback) {\n if (this.childrenAfterGroup) {\n this.childrenAfterGroup.forEach(function (child) { return child.depthFirstSearch(callback); });\n }\n callback(this);\n };\n // + rowController.updateGroupsInSelection()\n // + selectionController.calculatedSelectedForAllGroupNodes()\n RowNode.prototype.calculateSelectedFromChildren = function () {\n var atLeastOneSelected = false;\n var atLeastOneDeSelected = false;\n var atLeastOneMixed = false;\n var newSelectedValue;\n if (this.childrenAfterGroup) {\n for (var i = 0; i < this.childrenAfterGroup.length; i++) {\n var child = this.childrenAfterGroup[i];\n // skip non-selectable nodes to prevent inconsistent selection values\n if (!child.selectable) {\n continue;\n }\n var childState = child.isSelected();\n switch (childState) {\n case true:\n atLeastOneSelected = true;\n break;\n case false:\n atLeastOneDeSelected = true;\n break;\n default:\n atLeastOneMixed = true;\n break;\n }\n }\n }\n if (atLeastOneMixed) {\n newSelectedValue = undefined;\n }\n else if (atLeastOneSelected && !atLeastOneDeSelected) {\n newSelectedValue = true;\n }\n else if (!atLeastOneSelected && atLeastOneDeSelected) {\n newSelectedValue = false;\n }\n else {\n newSelectedValue = undefined;\n }\n this.selectThisNode(newSelectedValue);\n };\n RowNode.prototype.setSelectedInitialValue = function (selected) {\n this.selected = selected;\n };\n RowNode.prototype.setSelected = function (newValue, clearSelection, suppressFinishActions) {\n if (clearSelection === void 0) { clearSelection = false; }\n if (suppressFinishActions === void 0) { suppressFinishActions = false; }\n this.setSelectedParams({\n newValue: newValue,\n clearSelection: clearSelection,\n suppressFinishActions: suppressFinishActions,\n rangeSelect: false\n });\n };\n RowNode.prototype.isRowPinned = function () {\n return this.rowPinned === constants_1.Constants.PINNED_TOP || this.rowPinned === constants_1.Constants.PINNED_BOTTOM;\n };\n // to make calling code more readable, this is the same method as setSelected except it takes names parameters\n RowNode.prototype.setSelectedParams = function (params) {\n var groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n var newValue = params.newValue === true;\n var clearSelection = params.clearSelection === true;\n var suppressFinishActions = params.suppressFinishActions === true;\n var rangeSelect = params.rangeSelect === true;\n // groupSelectsFiltered only makes sense when group selects children\n var groupSelectsFiltered = groupSelectsChildren && (params.groupSelectsFiltered === true);\n if (this.id === undefined) {\n console.warn('ag-Grid: cannot select node until id for node is known');\n return 0;\n }\n if (this.rowPinned) {\n console.warn('ag-Grid: cannot select pinned rows');\n return 0;\n }\n // if we are a footer, we don't do selection, just pass the info\n // to the sibling (the parent of the group)\n if (this.footer) {\n var count = this.sibling.setSelectedParams(params);\n return count;\n }\n if (rangeSelect) {\n var newRowClicked = this.selectionController.getLastSelectedNode() !== this;\n var allowMultiSelect = this.gridOptionsWrapper.isRowSelectionMulti();\n if (newRowClicked && allowMultiSelect) {\n return this.doRowRangeSelection();\n }\n }\n var updatedCount = 0;\n // when groupSelectsFiltered, then this node may end up intermediate despite\n // trying to set it to true / false. this group will be calculated further on\n // down when we call calculatedSelectedForAllGroupNodes(). we need to skip it\n // here, otherwise the updatedCount would include it.\n var skipThisNode = groupSelectsFiltered && this.group;\n if (!skipThisNode) {\n var thisNodeWasSelected = this.selectThisNode(newValue);\n if (thisNodeWasSelected) {\n updatedCount++;\n }\n }\n if (groupSelectsChildren && this.group) {\n updatedCount += this.selectChildNodes(newValue, groupSelectsFiltered);\n }\n // clear other nodes if not doing multi select\n if (!suppressFinishActions) {\n var clearOtherNodes = newValue && (clearSelection || !this.gridOptionsWrapper.isRowSelectionMulti());\n if (clearOtherNodes) {\n updatedCount += this.selectionController.clearOtherNodes(this);\n }\n // only if we selected something, then update groups and fire events\n if (updatedCount > 0) {\n this.selectionController.updateGroupsFromChildrenSelections();\n // this is the very end of the 'action node', so we are finished all the updates,\n // include any parent / child changes that this method caused\n var event_1 = {\n type: events_1.Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.mainEventService.dispatchEvent(event_1);\n }\n // so if user next does shift-select, we know where to start the selection from\n if (newValue) {\n this.selectionController.setLastSelectedNode(this);\n }\n }\n return updatedCount;\n };\n // selects all rows between this node and the last selected node (or the top if this is the first selection).\n // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by\n // holding down 'shift'.\n RowNode.prototype.doRowRangeSelection = function () {\n var updatedCount = 0;\n var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n var lastSelectedNode = this.selectionController.getLastSelectedNode();\n var nodesToSelect = this.rowModel.getNodesInRangeForSelection(this, lastSelectedNode);\n nodesToSelect.forEach(function (rowNode) {\n if (rowNode.group && groupsSelectChildren) {\n return;\n }\n var nodeWasSelected = rowNode.selectThisNode(true);\n if (nodeWasSelected) {\n updatedCount++;\n }\n });\n this.selectionController.updateGroupsFromChildrenSelections();\n var event = {\n type: events_1.Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.mainEventService.dispatchEvent(event);\n return updatedCount;\n };\n RowNode.prototype.isParentOfNode = function (potentialParent) {\n var parentNode = this.parent;\n while (parentNode) {\n if (parentNode === potentialParent) {\n return true;\n }\n parentNode = parentNode.parent;\n }\n return false;\n };\n RowNode.prototype.selectThisNode = function (newValue) {\n if (!this.selectable || this.selected === newValue) {\n return false;\n }\n this.selected = newValue;\n if (this.eventService) {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_SELECTED));\n }\n var event = this.createGlobalRowEvent(events_1.Events.EVENT_ROW_SELECTED);\n this.mainEventService.dispatchEvent(event);\n return true;\n };\n RowNode.prototype.selectChildNodes = function (newValue, groupSelectsFiltered) {\n var children = groupSelectsFiltered ? this.childrenAfterFilter : this.childrenAfterGroup;\n var updatedCount = 0;\n if (utils_1._.missing(children)) {\n return;\n }\n for (var i = 0; i < children.length; i++) {\n updatedCount += children[i].setSelectedParams({\n newValue: newValue,\n clearSelection: false,\n suppressFinishActions: true,\n groupSelectsFiltered: groupSelectsFiltered\n });\n }\n return updatedCount;\n };\n RowNode.prototype.addEventListener = function (eventType, listener) {\n if (!this.eventService) {\n this.eventService = new eventService_1.EventService();\n }\n this.eventService.addEventListener(eventType, listener);\n };\n RowNode.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n RowNode.prototype.onMouseEnter = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_ENTER));\n };\n RowNode.prototype.onMouseLeave = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_LEAVE));\n };\n RowNode.prototype.getFirstChildOfFirstChild = function (rowGroupColumn) {\n var currentRowNode = this;\n // if we are hiding groups, then if we are the first child, of the first child,\n // all the way up to the column we are interested in, then we show the group cell.\n var isCandidate = true;\n var foundFirstChildPath = false;\n var nodeToSwapIn;\n while (isCandidate && !foundFirstChildPath) {\n var parentRowNode = currentRowNode.parent;\n var firstChild = utils_1._.exists(parentRowNode) && currentRowNode.firstChild;\n if (firstChild) {\n if (parentRowNode.rowGroupColumn === rowGroupColumn) {\n foundFirstChildPath = true;\n nodeToSwapIn = parentRowNode;\n }\n }\n else {\n isCandidate = false;\n }\n currentRowNode = parentRowNode;\n }\n return foundFirstChildPath ? nodeToSwapIn : null;\n };\n RowNode.OBJECT_ID_SEQUENCE = 0;\n RowNode.EVENT_ROW_SELECTED = 'rowSelected';\n RowNode.EVENT_DATA_CHANGED = 'dataChanged';\n RowNode.EVENT_CELL_CHANGED = 'cellChanged';\n RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED = 'allChildrenCountChanged';\n RowNode.EVENT_MOUSE_ENTER = 'mouseEnter';\n RowNode.EVENT_MOUSE_LEAVE = 'mouseLeave';\n RowNode.EVENT_HEIGHT_CHANGED = 'heightChanged';\n RowNode.EVENT_TOP_CHANGED = 'topChanged';\n RowNode.EVENT_FIRST_CHILD_CHANGED = 'firstChildChanged';\n RowNode.EVENT_LAST_CHILD_CHANGED = 'lastChildChanged';\n RowNode.EVENT_CHILD_INDEX_CHANGED = 'childIndexChanged';\n RowNode.EVENT_ROW_INDEX_CHANGED = 'rowIndexChanged';\n RowNode.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n RowNode.EVENT_SELECTABLE_CHANGED = 'selectableChanged';\n RowNode.EVENT_UI_LEVEL_CHANGED = 'uiLevelChanged';\n RowNode.EVENT_DRAGGING_CHANGED = 'draggingChanged';\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], RowNode.prototype, \"mainEventService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], RowNode.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('selectionController'),\n __metadata(\"design:type\", selectionController_1.SelectionController)\n ], RowNode.prototype, \"selectionController\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], RowNode.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('valueService'),\n __metadata(\"design:type\", valueService_1.ValueService)\n ], RowNode.prototype, \"valueService\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], RowNode.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], RowNode.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired('valueCache'),\n __metadata(\"design:type\", valueCache_1.ValueCache)\n ], RowNode.prototype, \"valueCache\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], RowNode.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], RowNode.prototype, \"gridApi\", void 0);\n return RowNode;\n}());\nexports.RowNode = RowNode;\n","import Http from \"../services/Providers/Http\";\r\n\r\nconst ENDPOINTS = {\r\n GET_PRODUCTS: \"/api/staff/getProducts\",\r\n GET_PAYMETHODS: \"/api/staff/getPaymethods\",\r\n CREATE_SETTINGGROUP: \"/api/staff/createSettingGroup\",\r\n UPDATE_SETTINGGROUP: \"/api/staff/updateSettingGroup\",\r\n REMOVE_SETTINGGROUP: \"/api/staff/removeSettingGroup\",\r\n ACTIVE_SETTINGGROUP: \"/api/staff/activeSettingGroup\",\r\n GET_STATS: \"/api/staff/stats\",\r\n};\r\n\r\nexport default {\r\n getMyProducts: (payload, params) => {\r\n return Http.get(ENDPOINTS.GET_PRODUCTS, params, null, payload);\r\n },\r\n getPaymethods: (payload, params) => {\r\n return Http.get(ENDPOINTS.GET_PAYMETHODS, params, null, payload);\r\n },\r\n createSettingGroup: (body, payload, params) => {\r\n return Http.post(ENDPOINTS.CREATE_SETTINGGROUP, body, params, null, payload);\r\n },\r\n updateSettingGroup: (body, payload, params) => {\r\n return Http.post(ENDPOINTS.UPDATE_SETTINGGROUP, body, params, null, payload);\r\n },\r\n removeSettingGroup: (body, payload, params) => {\r\n return Http.post(ENDPOINTS.REMOVE_SETTINGGROUP, body, params, null, payload);\r\n },\r\n activeSettingGroup: (body, payload, params) => {\r\n return Http.post(ENDPOINTS.ACTIVE_SETTINGGROUP, body, params, null, payload);\r\n },\r\n getStats: (payload, params) => {\r\n return Http.get(ENDPOINTS.GET_STATS, params, null, payload);\r\n },\r\n}; ","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar context_1 = require(\"../context/context\");\nvar focusedCellController_1 = require(\"../focusedCellController\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar eventService_1 = require(\"../eventService\");\nvar eventKeys_1 = require(\"../eventKeys\");\nvar constants_1 = require(\"../constants\");\nvar RowDragFeature = /** @class */ (function () {\n function RowDragFeature(eContainer, gridPanel) {\n this.eContainer = eContainer;\n this.gridPanel = gridPanel;\n }\n RowDragFeature.prototype.postConstruct = function () {\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.clientSideRowModel = this.rowModel;\n }\n };\n RowDragFeature.prototype.getContainer = function () {\n return this.eContainer;\n };\n RowDragFeature.prototype.isInterestedIn = function (type) {\n return type === dragAndDropService_1.DragSourceType.RowDrag;\n };\n RowDragFeature.prototype.getIconName = function () {\n return dragAndDropService_1.DragAndDropService.ICON_MOVE;\n };\n RowDragFeature.prototype.onDragEnter = function (draggingEvent) {\n // when entering, we fire the enter event, then in onEnterOrDragging,\n // we also fire the move event. so we get both events when entering.\n this.dispatchEvent(eventKeys_1.Events.EVENT_ROW_DRAG_ENTER, draggingEvent);\n this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_MOVE);\n draggingEvent.dragItem.rowNode.setDragging(true);\n this.onEnterOrDragging(draggingEvent);\n };\n RowDragFeature.prototype.onDragging = function (draggingEvent) {\n this.onEnterOrDragging(draggingEvent);\n };\n RowDragFeature.prototype.onEnterOrDragging = function (draggingEvent) {\n // this event is fired for enter and move\n this.dispatchEvent(eventKeys_1.Events.EVENT_ROW_DRAG_MOVE, draggingEvent);\n this.lastDraggingEvent = draggingEvent;\n var pixel = this.normaliseForScroll(draggingEvent.y);\n var managedDrag = this.gridOptionsWrapper.isRowDragManaged();\n if (managedDrag) {\n this.doManagedDrag(draggingEvent, pixel);\n }\n this.checkCenterForScrolling(pixel);\n };\n RowDragFeature.prototype.doManagedDrag = function (draggingEvent, pixel) {\n var rowNode = draggingEvent.dragItem.rowNode;\n var rowWasMoved = this.clientSideRowModel.ensureRowAtPixel(rowNode, pixel);\n if (rowWasMoved) {\n this.focusedCellController.clearFocusedCell();\n if (this.rangeController) {\n this.rangeController.clearSelection();\n }\n }\n };\n RowDragFeature.prototype.normaliseForScroll = function (pixel) {\n var gridPanelHasScrolls = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_NORMAL;\n if (gridPanelHasScrolls) {\n var pixelRange = this.gridPanel.getVScrollPosition();\n return pixel + pixelRange.top;\n }\n else {\n return pixel;\n }\n };\n RowDragFeature.prototype.checkCenterForScrolling = function (pixel) {\n // scroll if the mouse is within 50px of the grid edge\n var pixelRange = this.gridPanel.getVScrollPosition();\n // console.log(`pixelRange = (${pixelRange.top}, ${pixelRange.bottom})`);\n this.needToMoveUp = pixel < (pixelRange.top + 50);\n this.needToMoveDown = pixel > (pixelRange.bottom - 50);\n // console.log(`needToMoveUp = ${this.needToMoveUp} = pixel < (pixelRange.top + 50) = ${pixel} < (${pixelRange.top} + 50)`);\n // console.log(`needToMoveDown = ${this.needToMoveDown} = pixel < (pixelRange.top + 50) = ${pixel} < (${pixelRange.top} + 50)`);\n if (this.needToMoveUp || this.needToMoveDown) {\n this.ensureIntervalStarted();\n }\n else {\n this.ensureIntervalCleared();\n }\n };\n RowDragFeature.prototype.ensureIntervalStarted = function () {\n if (!this.movingIntervalId) {\n this.intervalCount = 0;\n this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);\n }\n };\n RowDragFeature.prototype.ensureIntervalCleared = function () {\n if (this.moveInterval) {\n window.clearInterval(this.movingIntervalId);\n this.movingIntervalId = null;\n }\n };\n RowDragFeature.prototype.moveInterval = function () {\n // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow\n // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.\n var pixelsToMove;\n this.intervalCount++;\n pixelsToMove = 10 + (this.intervalCount * 5);\n if (pixelsToMove > 100) {\n pixelsToMove = 100;\n }\n var pixelsMoved;\n if (this.needToMoveDown) {\n pixelsMoved = this.gridPanel.scrollVertically(pixelsToMove);\n }\n else if (this.needToMoveUp) {\n pixelsMoved = this.gridPanel.scrollVertically(-pixelsToMove);\n }\n if (pixelsMoved !== 0) {\n this.onDragging(this.lastDraggingEvent);\n }\n };\n // i tried using generics here with this:\n // public createEvent(type: string, clazz: {new(): T; }, draggingEvent: DraggingEvent) {\n // but it didn't work - i think it's because it only works with classes, and not interfaces, (the events are interfaces)\n RowDragFeature.prototype.dispatchEvent = function (type, draggingEvent) {\n var yNormalised = this.normaliseForScroll(draggingEvent.y);\n var overIndex = -1;\n var overNode = null;\n var mouseIsPastLastRow = yNormalised > this.rowModel.getCurrentPageHeight();\n if (!mouseIsPastLastRow) {\n overIndex = this.rowModel.getRowIndexAtPixel(yNormalised);\n overNode = this.rowModel.getRow(overIndex);\n }\n var vDirectionString;\n switch (draggingEvent.vDirection) {\n case dragAndDropService_1.VDirection.Down:\n vDirectionString = 'down';\n break;\n case dragAndDropService_1.VDirection.Up:\n vDirectionString = 'up';\n break;\n default:\n vDirectionString = null;\n break;\n }\n var event = {\n type: type,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n event: draggingEvent.event,\n node: draggingEvent.dragItem.rowNode,\n overIndex: overIndex,\n overNode: overNode,\n y: yNormalised,\n vDirection: vDirectionString\n };\n this.eventService.dispatchEvent(event);\n };\n RowDragFeature.prototype.onDragLeave = function (draggingEvent) {\n this.dispatchEvent(eventKeys_1.Events.EVENT_ROW_DRAG_LEAVE, draggingEvent);\n this.stopDragging(draggingEvent);\n };\n RowDragFeature.prototype.onDragStop = function (draggingEvent) {\n this.dispatchEvent(eventKeys_1.Events.EVENT_ROW_DRAG_END, draggingEvent);\n this.stopDragging(draggingEvent);\n };\n RowDragFeature.prototype.stopDragging = function (draggingEvent) {\n this.ensureIntervalCleared();\n draggingEvent.dragItem.rowNode.setDragging(false);\n };\n __decorate([\n context_1.Autowired('dragAndDropService'),\n __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n ], RowDragFeature.prototype, \"dragAndDropService\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], RowDragFeature.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('focusedCellController'),\n __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n ], RowDragFeature.prototype, \"focusedCellController\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], RowDragFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Optional('rangeController'),\n __metadata(\"design:type\", Object)\n ], RowDragFeature.prototype, \"rangeController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], RowDragFeature.prototype, \"eventService\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], RowDragFeature.prototype, \"postConstruct\", null);\n return RowDragFeature;\n}());\nexports.RowDragFeature = RowDragFeature;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BaseComponentWrapper = /** @class */ (function () {\n function BaseComponentWrapper() {\n }\n BaseComponentWrapper.prototype.wrap = function (OriginalConstructor, mandatoryMethodList, optionalMethodList, componentName) {\n var _this = this;\n if (optionalMethodList === void 0) { optionalMethodList = []; }\n var wrapper = this.createWrapper(OriginalConstructor, componentName);\n mandatoryMethodList.forEach((function (methodName) {\n _this.createMethod(wrapper, methodName, true);\n }));\n optionalMethodList.forEach((function (methodName) {\n _this.createMethod(wrapper, methodName, false);\n }));\n return wrapper;\n };\n BaseComponentWrapper.prototype.createMethod = function (wrapper, methodName, mandatory) {\n wrapper.addMethod(methodName, this.createMethodProxy(wrapper, methodName, mandatory));\n };\n BaseComponentWrapper.prototype.createMethodProxy = function (wrapper, methodName, mandatory) {\n return function () {\n if (wrapper.hasMethod(methodName)) {\n return wrapper.callMethod(methodName, arguments);\n }\n if (mandatory) {\n console.warn('ag-Grid: Framework component is missing the method ' + methodName + '()');\n }\n return null;\n };\n };\n return BaseComponentWrapper;\n}());\nexports.BaseComponentWrapper = BaseComponentWrapper;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridRow_1 = require(\"./gridRow\");\nvar utils_1 = require(\"../utils\");\nvar GridCell = /** @class */ (function () {\n function GridCell(gridCellDef) {\n this.rowIndex = gridCellDef.rowIndex;\n this.column = gridCellDef.column;\n this.floating = utils_1._.makeNull(gridCellDef.floating);\n }\n GridCell.prototype.getGridCellDef = function () {\n return {\n rowIndex: this.rowIndex,\n column: this.column,\n floating: this.floating\n };\n };\n GridCell.prototype.getGridRow = function () {\n return new gridRow_1.GridRow(this.rowIndex, this.floating);\n };\n GridCell.prototype.toString = function () {\n return \"rowIndex = \" + this.rowIndex + \", floating = \" + this.floating + \", column = \" + (this.column ? this.column.getId() : null);\n };\n GridCell.prototype.createId = function () {\n return this.rowIndex + \".\" + this.floating + \".\" + this.column.getId();\n };\n GridCell.prototype.equals = function (other) {\n var colsMatch = this.column === other.column;\n var floatingMatch = this.floating === other.floating;\n var indexMatch = this.rowIndex === other.rowIndex;\n return colsMatch && floatingMatch && indexMatch;\n };\n return GridCell;\n}());\nexports.GridCell = GridCell;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar textCellEditor_1 = require(\"./textCellEditor\");\nvar PopupTextCellEditor = /** @class */ (function (_super) {\n __extends(PopupTextCellEditor, _super);\n function PopupTextCellEditor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupTextCellEditor.prototype.isPopup = function () {\n return true;\n };\n return PopupTextCellEditor;\n}(textCellEditor_1.TextCellEditor));\nexports.PopupTextCellEditor = PopupTextCellEditor;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar utils_1 = require(\"../../utils\");\nvar ARROW_UP = '\\u2191';\nvar ARROW_DOWN = '\\u2193';\nvar AnimateShowChangeCellRenderer = /** @class */ (function (_super) {\n __extends(AnimateShowChangeCellRenderer, _super);\n function AnimateShowChangeCellRenderer() {\n var _this = _super.call(this, AnimateShowChangeCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n return _this;\n }\n AnimateShowChangeCellRenderer.prototype.init = function (params) {\n // this.params = params;\n this.eValue = this.queryForHtmlElement('.ag-value-change-value');\n this.eDelta = this.queryForHtmlElement('.ag-value-change-delta');\n this.refresh(params);\n };\n AnimateShowChangeCellRenderer.prototype.showDelta = function (params, delta) {\n var absDelta = Math.abs(delta);\n var valueFormatted = params.formatValue(absDelta);\n var valueToUse = utils_1._.exists(valueFormatted) ? valueFormatted : absDelta;\n var deltaUp = (delta >= 0);\n if (deltaUp) {\n this.eDelta.innerHTML = ARROW_UP + valueToUse;\n }\n else {\n // because negative, use ABS to remove sign\n this.eDelta.innerHTML = ARROW_DOWN + valueToUse;\n }\n // class makes it green (in ag-fresh)\n utils_1._.addOrRemoveCssClass(this.eDelta, 'ag-value-change-delta-up', deltaUp);\n // class makes it red (in ag-fresh)\n utils_1._.addOrRemoveCssClass(this.eDelta, 'ag-value-change-delta-down', !deltaUp);\n };\n AnimateShowChangeCellRenderer.prototype.setTimerToRemoveDelta = function () {\n var _this = this;\n // the refreshCount makes sure that if the value updates again while\n // the below timer is waiting, then the below timer will realise it\n // is not the most recent and will not try to remove the delta value.\n this.refreshCount++;\n var refreshCountCopy = this.refreshCount;\n window.setTimeout(function () {\n if (refreshCountCopy === _this.refreshCount) {\n _this.hideDeltaValue();\n }\n }, 2000);\n };\n AnimateShowChangeCellRenderer.prototype.hideDeltaValue = function () {\n utils_1._.removeCssClass(this.eValue, 'ag-value-change-value-highlight');\n utils_1._.clearElement(this.eDelta);\n };\n AnimateShowChangeCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (value === this.lastValue) {\n return;\n }\n if (utils_1._.exists(params.valueFormatted)) {\n this.eValue.innerHTML = params.valueFormatted;\n }\n else if (utils_1._.exists(params.value)) {\n this.eValue.innerHTML = value;\n }\n else {\n utils_1._.clearElement(this.eValue);\n }\n if (typeof value === 'number' && typeof this.lastValue === 'number') {\n var delta = value - this.lastValue;\n this.showDelta(params, delta);\n }\n // highlight the current value, but only if it's not new, otherwise it\n // would get highlighted first time the value is shown\n if (this.lastValue) {\n utils_1._.addCssClass(this.eValue, 'ag-value-change-value-highlight');\n }\n this.setTimerToRemoveDelta();\n this.lastValue = value;\n return true;\n };\n AnimateShowChangeCellRenderer.TEMPLATE = '' +\n '' +\n '' +\n '';\n return AnimateShowChangeCellRenderer;\n}(component_1.Component));\nexports.AnimateShowChangeCellRenderer = AnimateShowChangeCellRenderer;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar BodyDropPivotTarget = /** @class */ (function () {\n function BodyDropPivotTarget(pinned) {\n this.columnsToAggregate = [];\n this.columnsToGroup = [];\n this.columnsToPivot = [];\n this.pinned = pinned;\n }\n /** Callback for when drag enters */\n BodyDropPivotTarget.prototype.onDragEnter = function (draggingEvent) {\n var _this = this;\n this.clearColumnsList();\n // in pivot mode, we don't accept any drops if functions are read only\n if (this.gridOptionsWrapper.isFunctionsReadOnly()) {\n return;\n }\n var dragColumns = draggingEvent.dragItem.columns;\n dragColumns.forEach(function (column) {\n // we don't allow adding secondary columns\n if (!column.isPrimary()) {\n return;\n }\n if (column.isAnyFunctionActive()) {\n return;\n }\n if (column.isAllowValue()) {\n _this.columnsToAggregate.push(column);\n }\n else if (column.isAllowRowGroup()) {\n _this.columnsToGroup.push(column);\n }\n else if (column.isAllowRowGroup()) {\n _this.columnsToPivot.push(column);\n }\n });\n };\n BodyDropPivotTarget.prototype.getIconName = function () {\n var totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;\n if (totalColumns > 0) {\n return this.pinned ? dragAndDropService_1.DragAndDropService.ICON_PINNED : dragAndDropService_1.DragAndDropService.ICON_MOVE;\n }\n else {\n return null;\n }\n };\n /** Callback for when drag leaves */\n BodyDropPivotTarget.prototype.onDragLeave = function (draggingEvent) {\n // if we are taking columns out of the center, then we remove them from the report\n this.clearColumnsList();\n };\n BodyDropPivotTarget.prototype.clearColumnsList = function () {\n this.columnsToAggregate.length = 0;\n this.columnsToGroup.length = 0;\n this.columnsToPivot.length = 0;\n };\n /** Callback for when dragging */\n BodyDropPivotTarget.prototype.onDragging = function (draggingEvent) {\n };\n /** Callback for when drag stops */\n BodyDropPivotTarget.prototype.onDragStop = function (draggingEvent) {\n if (this.columnsToAggregate.length > 0) {\n this.columnController.addValueColumns(this.columnsToAggregate, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToGroup.length > 0) {\n this.columnController.addRowGroupColumns(this.columnsToGroup, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToPivot.length > 0) {\n this.columnController.addPivotColumns(this.columnsToPivot, \"toolPanelDragAndDrop\");\n }\n };\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], BodyDropPivotTarget.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], BodyDropPivotTarget.prototype, \"gridOptionsWrapper\", void 0);\n return BodyDropPivotTarget;\n}());\nexports.BodyDropPivotTarget = BodyDropPivotTarget;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar selectionController_1 = require(\"./selectionController\");\nvar columnApi_1 = require(\"./columnController/columnApi\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar rowRenderer_1 = require(\"./rendering/rowRenderer\");\nvar headerRootComp_1 = require(\"./headerRendering/headerRootComp\");\nvar filterManager_1 = require(\"./filter/filterManager\");\nvar valueService_1 = require(\"./valueService/valueService\");\nvar eventService_1 = require(\"./eventService\");\nvar gridPanel_1 = require(\"./gridPanel/gridPanel\");\nvar gridApi_1 = require(\"./gridApi\");\nvar columnFactory_1 = require(\"./columnController/columnFactory\");\nvar displayedGroupCreator_1 = require(\"./columnController/displayedGroupCreator\");\nvar expressionService_1 = require(\"./valueService/expressionService\");\nvar templateService_1 = require(\"./templateService\");\nvar popupService_1 = require(\"./widgets/popupService\");\nvar logger_1 = require(\"./logger\");\nvar columnUtils_1 = require(\"./columnController/columnUtils\");\nvar autoWidthCalculator_1 = require(\"./rendering/autoWidthCalculator\");\nvar horizontalResizeService_1 = require(\"./headerRendering/horizontalResizeService\");\nvar context_1 = require(\"./context/context\");\nvar csvCreator_1 = require(\"./exporter/csvCreator\");\nvar gridCore_1 = require(\"./gridCore\");\nvar standardMenu_1 = require(\"./headerRendering/standardMenu\");\nvar dragAndDropService_1 = require(\"./dragAndDrop/dragAndDropService\");\nvar dragService_1 = require(\"./dragAndDrop/dragService\");\nvar sortController_1 = require(\"./sortController\");\nvar focusedCellController_1 = require(\"./focusedCellController\");\nvar mouseEventService_1 = require(\"./gridPanel/mouseEventService\");\nvar cellNavigationService_1 = require(\"./cellNavigationService\");\nvar filterStage_1 = require(\"./rowModels/clientSide/filterStage\");\nvar sortStage_1 = require(\"./rowModels/clientSide/sortStage\");\nvar flattenStage_1 = require(\"./rowModels/clientSide/flattenStage\");\nvar events_1 = require(\"./events\");\nvar infiniteRowModel_1 = require(\"./rowModels/infinite/infiniteRowModel\");\nvar clientSideRowModel_1 = require(\"./rowModels/clientSide/clientSideRowModel\");\nvar cellRendererFactory_1 = require(\"./rendering/cellRendererFactory\");\nvar valueFormatterService_1 = require(\"./rendering/valueFormatterService\");\nvar agCheckbox_1 = require(\"./widgets/agCheckbox\");\nvar baseFrameworkFactory_1 = require(\"./baseFrameworkFactory\");\nvar scrollVisibleService_1 = require(\"./gridPanel/scrollVisibleService\");\nvar downloader_1 = require(\"./exporter/downloader\");\nvar xmlFactory_1 = require(\"./exporter/xmlFactory\");\nvar gridSerializer_1 = require(\"./exporter/gridSerializer\");\nvar stylingService_1 = require(\"./styling/stylingService\");\nvar columnHoverService_1 = require(\"./rendering/columnHoverService\");\nvar columnAnimationService_1 = require(\"./rendering/columnAnimationService\");\nvar sortService_1 = require(\"./rowNodes/sortService\");\nvar filterService_1 = require(\"./rowNodes/filterService\");\nvar autoGroupColService_1 = require(\"./columnController/autoGroupColService\");\nvar paginationProxy_1 = require(\"./rowModels/paginationProxy\");\nvar immutableService_1 = require(\"./rowModels/clientSide/immutableService\");\nvar constants_1 = require(\"./constants\");\nvar valueCache_1 = require(\"./valueService/valueCache\");\nvar changeDetectionService_1 = require(\"./valueService/changeDetectionService\");\nvar alignedGridsService_1 = require(\"./alignedGridsService\");\nvar pinnedRowModel_1 = require(\"./rowModels/pinnedRowModel\");\nvar userComponentFactory_1 = require(\"./components/framework/userComponentFactory\");\nvar userComponentRegistry_1 = require(\"./components/framework/userComponentRegistry\");\nvar agComponentUtils_1 = require(\"./components/framework/agComponentUtils\");\nvar componentMetadataProvider_1 = require(\"./components/framework/componentMetadataProvider\");\nvar beans_1 = require(\"./rendering/beans\");\nvar environment_1 = require(\"./environment\");\nvar animationFrameService_1 = require(\"./misc/animationFrameService\");\nvar navigationService_1 = require(\"./gridPanel/navigationService\");\nvar maxDivHeightScaler_1 = require(\"./rendering/maxDivHeightScaler\");\nvar selectableService_1 = require(\"./rowNodes/selectableService\");\nvar autoHeightCalculator_1 = require(\"./rendering/autoHeightCalculator\");\nvar paginationComp_1 = require(\"./rowModels/pagination/paginationComp\");\nvar resizeObserverService_1 = require(\"./misc/resizeObserverService\");\nvar zipContainer_1 = require(\"./exporter/files/zip/zipContainer\");\nvar utils_1 = require(\"./utils\");\nvar tooltipManager_1 = require(\"./widgets/tooltipManager\");\nvar overlayWrapperComponent_1 = require(\"./rendering/overlays/overlayWrapperComponent\");\nvar Grid = /** @class */ (function () {\n function Grid(eGridDiv, gridOptions, params) {\n if (!eGridDiv) {\n console.error('ag-Grid: no div element provided to the grid');\n }\n if (!gridOptions) {\n console.error('ag-Grid: no gridOptions provided to the grid');\n }\n this.gridOptions = gridOptions;\n var rowModelClass = this.getRowModelClass(gridOptions);\n var enterprise = utils_1._.exists(Grid.enterpriseBeans);\n var frameworkFactory = params ? params.frameworkFactory : null;\n if (utils_1._.missing(frameworkFactory)) {\n frameworkFactory = new baseFrameworkFactory_1.BaseFrameworkFactory();\n }\n var overrideBeans = [];\n if (Grid.enterpriseBeans) {\n overrideBeans = overrideBeans.concat(Grid.enterpriseBeans);\n }\n if (Grid.frameworkBeans) {\n overrideBeans = overrideBeans.concat(Grid.frameworkBeans);\n }\n var seed = {\n enterprise: enterprise,\n gridOptions: gridOptions,\n eGridDiv: eGridDiv,\n $scope: params ? params.$scope : null,\n $compile: params ? params.$compile : null,\n quickFilterOnScope: params ? params.quickFilterOnScope : null,\n globalEventListener: params ? params.globalEventListener : null,\n frameworkFactory: frameworkFactory\n };\n if (params && params.seedBeanInstances) {\n utils_1._.assign(seed, params.seedBeanInstances);\n }\n var components = [\n { componentName: 'AgCheckbox', theClass: agCheckbox_1.AgCheckbox },\n { componentName: 'AgGridComp', theClass: gridPanel_1.GridPanel },\n { componentName: 'AgHeaderRoot', theClass: headerRootComp_1.HeaderRootComp },\n { componentName: 'AgPagination', theClass: paginationComp_1.PaginationComp },\n { componentName: 'AgOverlayWrapper', theClass: overlayWrapperComponent_1.OverlayWrapperComponent }\n ];\n if (Grid.enterpriseComponents) {\n components = components.concat(Grid.enterpriseComponents);\n }\n var contextParams = {\n overrideBeans: overrideBeans,\n seed: seed,\n //Careful with the order of the beans here, there are dependencies between them that need to be kept\n beans: [\n // this should only contain SERVICES, it should NEVER contain COMPONENTS\n rowModelClass, beans_1.Beans, paginationProxy_1.PaginationAutoPageSizeService, gridApi_1.GridApi, userComponentRegistry_1.UserComponentRegistry, agComponentUtils_1.AgComponentUtils,\n componentMetadataProvider_1.ComponentMetadataProvider, resizeObserverService_1.ResizeObserverService, userComponentRegistry_1.UserComponentRegistry, userComponentFactory_1.UserComponentFactory,\n maxDivHeightScaler_1.MaxDivHeightScaler, autoHeightCalculator_1.AutoHeightCalculator, cellRendererFactory_1.CellRendererFactory, horizontalResizeService_1.HorizontalResizeService,\n pinnedRowModel_1.PinnedRowModel, dragService_1.DragService, displayedGroupCreator_1.DisplayedGroupCreator, eventService_1.EventService, gridOptionsWrapper_1.GridOptionsWrapper, popupService_1.PopupService,\n selectionController_1.SelectionController, filterManager_1.FilterManager, columnController_1.ColumnController, paginationProxy_1.PaginationProxy, rowRenderer_1.RowRenderer, expressionService_1.ExpressionService,\n columnFactory_1.ColumnFactory, csvCreator_1.CsvCreator, downloader_1.Downloader, xmlFactory_1.XmlFactory, gridSerializer_1.GridSerializer, templateService_1.TemplateService, alignedGridsService_1.AlignedGridsService,\n navigationService_1.NavigationService, popupService_1.PopupService, valueCache_1.ValueCache, valueService_1.ValueService, logger_1.LoggerFactory, columnUtils_1.ColumnUtils, autoWidthCalculator_1.AutoWidthCalculator,\n standardMenu_1.StandardMenuFactory, dragAndDropService_1.DragAndDropService, columnApi_1.ColumnApi, focusedCellController_1.FocusedCellController, mouseEventService_1.MouseEventService, environment_1.Environment,\n cellNavigationService_1.CellNavigationService, filterStage_1.FilterStage, sortStage_1.SortStage, flattenStage_1.FlattenStage, filterService_1.FilterService,\n valueFormatterService_1.ValueFormatterService, stylingService_1.StylingService, scrollVisibleService_1.ScrollVisibleService, sortController_1.SortController,\n columnHoverService_1.ColumnHoverService, columnAnimationService_1.ColumnAnimationService, sortService_1.SortService, selectableService_1.SelectableService, autoGroupColService_1.AutoGroupColService,\n immutableService_1.ImmutableService, changeDetectionService_1.ChangeDetectionService, animationFrameService_1.AnimationFrameService, tooltipManager_1.TooltipManager, zipContainer_1.ZipContainer\n ],\n components: components,\n enterpriseDefaultComponents: Grid.enterpriseDefaultComponents,\n debug: !!gridOptions.debug\n };\n this.logger = new logger_1.Logger('ag-Grid', function () { return gridOptions.debug; });\n var contextLogger = new logger_1.Logger('Context', function () { return contextParams.debug; });\n this.context = new context_1.Context(contextParams, contextLogger);\n var gridCore = new gridCore_1.GridCore();\n this.context.wireBean(gridCore);\n this.setColumnsAndData();\n this.dispatchGridReadyEvent(gridOptions);\n this.logger.log(\"initialised successfully, enterprise = \" + enterprise);\n }\n Grid.setEnterpriseBeans = function (enterpriseBeans, rowModelClasses) {\n this.enterpriseBeans = enterpriseBeans;\n // the enterprise can inject additional row models. this is how it injects the viewportRowModel\n utils_1._.iterateObject(rowModelClasses, function (key, value) { return Grid.RowModelClasses[key] = value; });\n };\n Grid.setEnterpriseComponents = function (components) {\n this.enterpriseComponents = components;\n };\n Grid.setFrameworkBeans = function (frameworkBeans) {\n this.frameworkBeans = frameworkBeans;\n };\n Grid.setEnterpriseDefaultComponents = function (enterpriseDefaultComponents) {\n this.enterpriseDefaultComponents = enterpriseDefaultComponents;\n };\n Grid.prototype.setColumnsAndData = function () {\n var gridOptionsWrapper = this.context.getBean('gridOptionsWrapper');\n var columnController = this.context.getBean('columnController');\n var rowModel = this.context.getBean('rowModel');\n var columnDefs = gridOptionsWrapper.getColumnDefs();\n var rowData = gridOptionsWrapper.getRowData();\n var nothingToSet = utils_1._.missing(columnDefs) && utils_1._.missing(rowData);\n if (nothingToSet) {\n return;\n }\n if (utils_1._.exists(columnDefs)) {\n columnController.setColumnDefs(columnDefs, \"gridInitializing\");\n }\n if (utils_1._.exists(rowData) && rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n var clientSideRowModel = rowModel;\n clientSideRowModel.setRowData(rowData);\n }\n };\n Grid.prototype.dispatchGridReadyEvent = function (gridOptions) {\n var eventService = this.context.getBean('eventService');\n var readyEvent = {\n type: events_1.Events.EVENT_GRID_READY,\n api: gridOptions.api,\n columnApi: gridOptions.columnApi\n };\n eventService.dispatchEvent(readyEvent);\n };\n Grid.prototype.getRowModelClass = function (gridOptions) {\n var rowModelType = gridOptions.rowModelType;\n //TODO: temporary measure before 'enterprise' is completely removed (similar handling in gridOptionsWrapper is also required)\n rowModelType = rowModelType === 'enterprise' ? constants_1.Constants.ROW_MODEL_TYPE_SERVER_SIDE : rowModelType;\n if (utils_1._.exists(rowModelType)) {\n var rowModelClass = Grid.RowModelClasses[rowModelType];\n if (utils_1._.exists(rowModelClass)) {\n return rowModelClass;\n }\n else {\n if (rowModelType === 'normal') {\n console.warn(\"ag-Grid: normal rowModel deprecated. Should now be called client side row model instead.\");\n return clientSideRowModel_1.ClientSideRowModel;\n }\n console.error('ag-Grid: could not find matching row model for rowModelType ' + rowModelType);\n if (rowModelType === constants_1.Constants.ROW_MODEL_TYPE_VIEWPORT) {\n console.error('ag-Grid: rowModelType viewport is only available in ag-Grid Enterprise');\n }\n if (rowModelType === constants_1.Constants.ROW_MODEL_TYPE_SERVER_SIDE) {\n console.error('ag-Grid: rowModelType server side is only available in ag-Grid Enterprise');\n }\n }\n }\n return clientSideRowModel_1.ClientSideRowModel;\n };\n Grid.prototype.destroy = function () {\n this.gridOptions.api.destroy();\n };\n // the default is ClientSideRowModel, which is also used for pagination.\n // the enterprise adds viewport to this list.\n Grid.RowModelClasses = {\n infinite: infiniteRowModel_1.InfiniteRowModel,\n clientSide: clientSideRowModel_1.ClientSideRowModel\n };\n return Grid;\n}());\nexports.Grid = Grid;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar logger_1 = require(\"./logger\");\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar utils_1 = require(\"./utils\");\nvar EventService = /** @class */ (function () {\n function EventService() {\n this.allSyncListeners = {};\n this.allAsyncListeners = {};\n this.globalSyncListeners = [];\n this.globalAsyncListeners = [];\n this.asyncFunctionsQueue = [];\n this.scheduled = false;\n this.firedEvents = {};\n }\n EventService_1 = EventService;\n // because this class is used both inside the context and outside the context, we do not\n // use autowired attributes, as that would be confusing, as sometimes the attributes\n // would be wired, and sometimes not.\n //\n // the global event servers used by ag-Grid is autowired by the context once, and this\n // setBeans method gets called once.\n //\n // the times when this class is used outside of the context (eg RowNode has an instance of this\n // class) then it is not a bean, and this setBeans method is not called.\n EventService.prototype.setBeans = function (loggerFactory, gridOptionsWrapper, globalEventListener) {\n if (globalEventListener === void 0) { globalEventListener = null; }\n this.logger = loggerFactory.create('EventService');\n if (globalEventListener) {\n var async = gridOptionsWrapper.useAsyncEvents();\n this.addGlobalListener(globalEventListener, async);\n }\n };\n EventService.prototype.getListenerList = function (eventType, async) {\n var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n var listenerList = listenerMap[eventType];\n if (!listenerList) {\n listenerList = [];\n listenerMap[eventType] = listenerList;\n }\n return listenerList;\n };\n EventService.prototype.addEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n var listenerList = this.getListenerList(eventType, async);\n if (listenerList.indexOf(listener) < 0) {\n listenerList.push(listener);\n }\n };\n // for some events, it's important that the model gets to hear about them before the view,\n // as the model may need to update before the view works on the info. if you register\n // via this method, you get notified before the view parts\n EventService.prototype.addModalPriorityEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n this.addEventListener(eventType + EventService_1.PRIORITY, listener, async);\n };\n EventService.prototype.addGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n if (async) {\n this.globalAsyncListeners.push(listener);\n }\n else {\n this.globalSyncListeners.push(listener);\n }\n };\n EventService.prototype.removeEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n var listenerList = this.getListenerList(eventType, async);\n utils_1._.removeFromArray(listenerList, listener);\n };\n EventService.prototype.removeGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n if (async) {\n utils_1._.removeFromArray(this.globalAsyncListeners, listener);\n }\n else {\n utils_1._.removeFromArray(this.globalSyncListeners, listener);\n }\n };\n // why do we pass the type here? the type is in ColumnChangeEvent, so unless the\n // type is not in other types of events???\n EventService.prototype.dispatchEvent = function (event) {\n // console.log(`dispatching ${eventType}: ${event}`);\n this.dispatchToListeners(event, true);\n this.dispatchToListeners(event, false);\n this.firedEvents[event.type] = true;\n };\n EventService.prototype.dispatchEventOnce = function (event) {\n if (!this.firedEvents[event.type]) {\n this.dispatchEvent(event);\n }\n };\n EventService.prototype.dispatchToListeners = function (event, async) {\n var _this = this;\n var globalListeners = async ? this.globalAsyncListeners : this.globalSyncListeners;\n var eventType = event.type;\n // this allows the columnController to get events before anyone else\n var p1ListenerList = this.getListenerList(eventType + EventService_1.PRIORITY, async);\n utils_1._.forEachSnapshotFirst(p1ListenerList, function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(event); });\n }\n else {\n listener(event);\n }\n });\n var listenerList = this.getListenerList(eventType, async);\n utils_1._.forEachSnapshotFirst(listenerList, function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(event); });\n }\n else {\n listener(event);\n }\n });\n utils_1._.forEachSnapshotFirst(globalListeners, function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(eventType, event); });\n }\n else {\n listener(eventType, event);\n }\n });\n };\n // this gets called inside the grid's thread, for each event that it\n // wants to set async. the grid then batches the events into one setTimeout()\n // because setTimeout() is an expensive operation. ideally we would have\n // each event in it's own setTimeout(), but we batch for performance.\n EventService.prototype.dispatchAsync = function (func) {\n // add to the queue for executing later in the next VM turn\n this.asyncFunctionsQueue.push(func);\n // check if timeout is already scheduled. the first time the grid calls\n // this within it's thread turn, this should be false, so it will schedule\n // the 'flush queue' method the first time it comes here. then the flag is\n // set to 'true' so it will know it's already scheduled for subsequent calls.\n if (!this.scheduled) {\n // if not scheduled, schedule one\n window.setTimeout(this.flushAsyncQueue.bind(this), 0);\n // mark that it is scheduled\n this.scheduled = true;\n }\n };\n // this happens in the next VM turn only, and empties the queue of events\n EventService.prototype.flushAsyncQueue = function () {\n this.scheduled = false;\n // we take a copy, because the event listener could be using\n // the grid, which would cause more events, which would be potentially\n // added to the queue, so safe to take a copy, the new events will\n // get executed in a later VM turn rather than risk updating the\n // queue as we are flushing it.\n var queueCopy = this.asyncFunctionsQueue.slice();\n this.asyncFunctionsQueue = [];\n // execute the queue\n queueCopy.forEach(function (func) { return func(); });\n };\n var EventService_1;\n // this is an old idea niall had, should really take it out, was to do with ordering who gets to process\n // events first, to give model and service objects preference over the view\n EventService.PRIORITY = '-P1';\n __decorate([\n __param(0, context_2.Qualifier('loggerFactory')),\n __param(1, context_2.Qualifier('gridOptionsWrapper')),\n __param(2, context_2.Qualifier('globalEventListener')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory,\n gridOptionsWrapper_1.GridOptionsWrapper,\n Function]),\n __metadata(\"design:returntype\", void 0)\n ], EventService.prototype, \"setBeans\", null);\n EventService = EventService_1 = __decorate([\n context_1.Bean('eventService')\n ], EventService);\n return EventService;\n}());\nexports.EventService = EventService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar sortController_1 = require(\"../sortController\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar utils_1 = require(\"../utils\");\nvar SortService = /** @class */ (function () {\n function SortService() {\n }\n SortService.prototype.init = function () {\n this.postSortFunc = this.gridOptionsWrapper.getPostSortFunc();\n };\n SortService.prototype.sort = function (sortOptions, sortActive, deltaSort, dirtyLeafNodes, changedPath, noAggregations) {\n var _this = this;\n var callback = function (rowNode) {\n // we clear out the 'pull down open parents' first, as the values mix up the sorting\n _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterFilter, true);\n // Javascript sort is non deterministic when all the array items are equals, ie Comparator always returns 0,\n // so to ensure the array keeps its order, add an additional sorting condition manually, in this case we\n // are going to inspect the original array position. This is what sortedRowNodes is for.\n if (sortActive) {\n var sortedRowNodes = deltaSort ?\n _this.doDeltaSort(rowNode, sortOptions, dirtyLeafNodes, changedPath, noAggregations)\n : _this.doFullSort(rowNode, sortOptions);\n rowNode.childrenAfterSort = sortedRowNodes.map(function (sorted) { return sorted.rowNode; });\n }\n else {\n rowNode.childrenAfterSort = rowNode.childrenAfterFilter.slice(0);\n }\n _this.updateChildIndexes(rowNode);\n if (_this.postSortFunc) {\n _this.postSortFunc(rowNode.childrenAfterSort);\n }\n };\n changedPath.forEachChangedNodeDepthFirst(callback);\n this.updateGroupDataForHiddenOpenParents(changedPath);\n };\n SortService.prototype.doFullSort = function (rowNode, sortOptions) {\n var sortedRowNodes = rowNode.childrenAfterFilter\n .map(this.mapNodeToSortedNode.bind(this));\n sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n return sortedRowNodes;\n };\n SortService.prototype.mapNodeToSortedNode = function (rowNode, pos) {\n return { currentPos: pos, rowNode: rowNode };\n };\n SortService.prototype.doDeltaSort = function (rowNode, sortOptions, dirtyLeafNodes, changedPath, noAggregations) {\n // clean nodes will be a list of all row nodes that remain in the set\n // and ordered. we start with the old sorted set and take out any nodes\n // that were removed or changed (but not added, added doesn't make sense,\n // if a node was added, there is no way it could be here from last time).\n var cleanNodes = rowNode.childrenAfterSort\n .filter(function (rowNode) {\n // take out all nodes that were changed as part of the current transaction.\n // a changed node could a) be in a different sort position or b) may\n // no longer be in this set as the changed node may not pass filtering,\n // or be in a different group.\n var passesDirtyNodesCheck = !dirtyLeafNodes[rowNode.id];\n // also remove group nodes in the changed path, as they can have different aggregate\n // values which could impact the sort order.\n // note: changed path is not active if a) no value columns or b) no transactions. it is never\n // (b) in deltaSort as we only do deltaSort for transactions. for (a) if no value columns, then\n // there is no value in the group that could of changed (ie no aggregate values)\n var passesChangedPathCheck = noAggregations || changedPath.canSkip(rowNode);\n return passesDirtyNodesCheck && passesChangedPathCheck;\n })\n .map(this.mapNodeToSortedNode.bind(this));\n // for fast access below, we map them\n var cleanNodesMapped = {};\n cleanNodes.forEach(function (sortedRowNode) { return cleanNodesMapped[sortedRowNode.rowNode.id] = sortedRowNode.rowNode; });\n // these are all nodes that need to be placed\n var changedNodes = rowNode.childrenAfterFilter\n // ignore nodes in the clean list\n .filter(function (rowNode) { return !cleanNodesMapped[rowNode.id]; })\n .map(this.mapNodeToSortedNode.bind(this));\n // sort changed nodes. note that we don't need to sort cleanNodes as they are\n // already sorted from last time.\n changedNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n if (changedNodes.length === 0) {\n return cleanNodes;\n }\n else if (cleanNodes.length === 0) {\n return changedNodes;\n }\n else {\n return this.mergeSortedArrays(sortOptions, cleanNodes, changedNodes);\n }\n };\n // Merge two sorted arrays into each other\n SortService.prototype.mergeSortedArrays = function (sortOptions, arr1, arr2) {\n var res = [];\n var i = 0;\n var j = 0;\n // Traverse both array, adding them in order\n while (i < arr1.length && j < arr2.length) {\n // Check if current element of first\n // array is smaller than current element\n // of second array. If yes, store first\n // array element and increment first array\n // index. Otherwise do same with second array\n var compareResult = this.compareRowNodes(sortOptions, arr1[i], arr2[j]);\n if (compareResult < 0) {\n res.push(arr1[i++]);\n }\n else {\n res.push(arr2[j++]);\n }\n }\n // add remaining from arr1\n while (i < arr1.length) {\n res.push(arr1[i++]);\n }\n // add remaining from arr2\n while (j < arr2.length) {\n res.push(arr2[j++]);\n }\n return res;\n };\n SortService.prototype.compareRowNodes = function (sortOptions, sortedNodeA, sortedNodeB) {\n var nodeA = sortedNodeA.rowNode;\n var nodeB = sortedNodeB.rowNode;\n // Iterate columns, return the first that doesn't match\n for (var i = 0, len = sortOptions.length; i < len; i++) {\n var sortOption = sortOptions[i];\n // let compared = compare(nodeA, nodeB, sortOption.column, sortOption.inverter === -1);\n var isInverted = sortOption.inverter === -1;\n var valueA = this.getValue(nodeA, sortOption.column);\n var valueB = this.getValue(nodeB, sortOption.column);\n var comparatorResult = void 0;\n if (sortOption.column.getColDef().comparator) {\n //if comparator provided, use it\n comparatorResult = sortOption.column.getColDef().comparator(valueA, valueB, nodeA, nodeB, isInverted);\n }\n else {\n //otherwise do our own comparison\n comparatorResult = utils_1._.defaultComparator(valueA, valueB, this.gridOptionsWrapper.isAccentedSort());\n }\n if (comparatorResult !== 0) {\n return comparatorResult * sortOption.inverter;\n }\n }\n // All matched, we make is so that the original sort order is kept:\n return sortedNodeA.currentPos - sortedNodeB.currentPos;\n };\n SortService.prototype.getValue = function (nodeA, column) {\n return this.valueService.getValue(column, nodeA);\n };\n SortService.prototype.updateChildIndexes = function (rowNode) {\n if (utils_1._.missing(rowNode.childrenAfterSort)) {\n return;\n }\n var listToSort = rowNode.childrenAfterSort;\n for (var i = 0; i < listToSort.length; i++) {\n var child = listToSort[i];\n var firstChild = i === 0;\n var lastChild = i === rowNode.childrenAfterSort.length - 1;\n child.setFirstChild(firstChild);\n child.setLastChild(lastChild);\n child.setChildIndex(i);\n }\n };\n SortService.prototype.updateGroupDataForHiddenOpenParents = function (changedPath) {\n var _this = this;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n // recurse breadth first over group nodes after sort to 'pull down' group data to child groups\n var callback = function (rowNode) {\n _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterSort, false);\n rowNode.childrenAfterSort.forEach(function (child) {\n if (child.hasChildren()) {\n callback(child);\n }\n });\n };\n changedPath.executeFromRootNode(function (rowNode) { return callback(rowNode); });\n };\n SortService.prototype.pullDownGroupDataForHideOpenParents = function (rowNodes, clearOperation) {\n var _this = this;\n if (utils_1._.missing(rowNodes)) {\n return;\n }\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n rowNodes.forEach(function (childRowNode) {\n var groupDisplayCols = _this.columnController.getGroupDisplayColumns();\n groupDisplayCols.forEach(function (groupDisplayCol) {\n var showRowGroup = groupDisplayCol.getColDef().showRowGroup;\n if (typeof showRowGroup !== 'string') {\n console.error('ag-Grid: groupHideOpenParents only works when specifying specific columns for colDef.showRowGroup');\n return;\n }\n var displayingGroupKey = showRowGroup;\n var rowGroupColumn = _this.columnController.getPrimaryColumn(displayingGroupKey);\n var thisRowNodeMatches = rowGroupColumn === childRowNode.rowGroupColumn;\n if (thisRowNodeMatches) {\n return;\n }\n if (clearOperation) {\n // if doing a clear operation, we clear down the value for every possible group column\n childRowNode.setGroupValue(groupDisplayCol.getId(), null);\n }\n else {\n // if doing a set operation, we set only where the pull down is to occur\n var parentToStealFrom = childRowNode.getFirstChildOfFirstChild(rowGroupColumn);\n if (parentToStealFrom) {\n childRowNode.setGroupValue(groupDisplayCol.getId(), parentToStealFrom.key);\n }\n }\n });\n });\n };\n __decorate([\n context_1.Autowired('sortController'),\n __metadata(\"design:type\", sortController_1.SortController)\n ], SortService.prototype, \"sortController\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], SortService.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('valueService'),\n __metadata(\"design:type\", valueService_1.ValueService)\n ], SortService.prototype, \"valueService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], SortService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], SortService.prototype, \"init\", null);\n SortService = __decorate([\n context_1.Bean('sortService')\n ], SortService);\n return SortService;\n}());\nexports.SortService = SortService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar column_1 = require(\"../entities/column\");\nvar rowNode_1 = require(\"../entities/rowNode\");\nvar constants_1 = require(\"../constants\");\nvar events_1 = require(\"../events\");\nvar gridCell_1 = require(\"../entities/gridCell\");\nvar component_1 = require(\"../widgets/component\");\nvar checkboxSelectionComponent_1 = require(\"./checkboxSelectionComponent\");\nvar rowDragComp_1 = require(\"./rowDragComp\");\nvar popupEditorWrapper_1 = require(\"./cellEditors/popupEditorWrapper\");\nvar utils_1 = require(\"../utils\");\nvar CellComp = /** @class */ (function (_super) {\n __extends(CellComp, _super);\n function CellComp(scope, beans, column, rowNode, rowComp, autoHeightCell, printLayout) {\n var _this = _super.call(this) || this;\n _this.editingCell = false;\n _this.suppressRefreshCell = false;\n _this.scope = null;\n // every time we go into edit mode, or back again, this gets incremented.\n // it's the components way of dealing with the async nature of framework components,\n // so if a framework component takes a while to be created, we know if the object\n // is still relevant when creating is finished. eg we could click edit / un-edit 20\n // times before the first React edit component comes back - we should discard\n // the first 19.\n _this.cellEditorVersion = 0;\n _this.cellRendererVersion = 0;\n _this.scope = scope;\n _this.beans = beans;\n _this.column = column;\n _this.rowNode = rowNode;\n _this.rowComp = rowComp;\n _this.autoHeightCell = autoHeightCell;\n _this.printLayout = printLayout;\n _this.createGridCellVo();\n _this.rangeSelectionEnabled = beans.enterprise && beans.gridOptionsWrapper.isEnableRangeSelection();\n _this.cellFocused = _this.beans.focusedCellController.isCellFocused(_this.gridCell);\n _this.firstRightPinned = _this.column.isFirstRightPinned();\n _this.lastLeftPinned = _this.column.isLastLeftPinned();\n if (_this.rangeSelectionEnabled) {\n _this.rangeCount = _this.beans.rangeController.getCellRangeCount(_this.gridCell);\n }\n _this.getValueAndFormat();\n _this.setUsingWrapper();\n _this.chooseCellRenderer();\n _this.setupColSpan();\n _this.rowSpan = _this.column.getRowSpan(_this.rowNode);\n return _this;\n }\n CellComp.prototype.getCreateTemplate = function () {\n var unselectable = !this.beans.gridOptionsWrapper.isEnableCellTextSelection() ? 'unselectable=\"on\"' : '';\n var templateParts = [];\n var col = this.column;\n var width = this.getCellWidth();\n var left = this.modifyLeftForPrintLayout(col.getLeft());\n var valueToRender = this.getInitialValueToRender();\n var valueSanitised = utils_1._.get(this.column, 'colDef.template', null) ? valueToRender : utils_1._.escape(valueToRender);\n this.tooltip = this.getToolTip();\n var tooltipSanitised = utils_1._.escape(this.tooltip);\n var colIdSanitised = utils_1._.escape(col.getId());\n var wrapperStartTemplate = '';\n var wrapperEndTemplate = '';\n var stylesFromColDef = this.preProcessStylesFromColDef();\n var cssClasses = this.getInitialCssClasses();\n var stylesForRowSpanning = this.getStylesForRowSpanning();\n if (this.usingWrapper) {\n wrapperStartTemplate = \"\";\n wrapperEndTemplate = '';\n }\n templateParts.push(\"\");\n templateParts.push(wrapperStartTemplate);\n if (utils_1._.exists(valueSanitised, true)) {\n templateParts.push(valueSanitised);\n }\n templateParts.push(wrapperEndTemplate);\n templateParts.push(\"
\");\n return templateParts.join('');\n };\n CellComp.prototype.getStylesForRowSpanning = function () {\n if (this.rowSpan === 1) {\n return '';\n }\n var singleRowHeight = this.beans.gridOptionsWrapper.getRowHeightAsNumber();\n var totalRowHeight = singleRowHeight * this.rowSpan;\n return \"height: \" + totalRowHeight + \"px; z-index: 1;\";\n };\n CellComp.prototype.afterAttached = function () {\n var querySelector = \"[comp-id=\\\"\" + this.getCompId() + \"\\\"]\";\n var eGui = this.eParentRow.querySelector(querySelector);\n this.setGui(eGui);\n // all of these have dependencies on the eGui, so only do them after eGui is set\n this.addDomData();\n this.populateTemplate();\n this.attachCellRenderer();\n this.angular1Compile();\n this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_CELL_FOCUSED, this.onCellFocused.bind(this));\n this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_FLASH_CELLS, this.onFlashCells.bind(this));\n this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_COLUMN_HOVER_CHANGED, this.onColumnHover.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_CELL_CHANGED, this.onCellChanged.bind(this));\n this.addDestroyableEventListener(this.column, column_1.Column.EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));\n this.addDestroyableEventListener(this.column, column_1.Column.EVENT_WIDTH_CHANGED, this.onWidthChanged.bind(this));\n this.addDestroyableEventListener(this.column, column_1.Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, this.onFirstRightPinnedChanged.bind(this));\n this.addDestroyableEventListener(this.column, column_1.Column.EVENT_LAST_LEFT_PINNED_CHANGED, this.onLastLeftPinnedChanged.bind(this));\n // only for printLayout - because we are rendering all the cells in the same row, regardless of pinned state,\n // then changing the width of the containers will impact left position. eg the center cols all have their\n // left position adjusted by the width of the left pinned column, so if the pinned left column width changes,\n // all the center cols need to be shifted to accommodate this. when in normal layout, the pinned cols are\n // in different containers so doesn't impact.\n if (this.printLayout) {\n this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onLeftChanged.bind(this));\n }\n // if not doing enterprise, then range selection service would be missing\n // so need to check before trying to use it\n if (this.rangeSelectionEnabled) {\n this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_RANGE_SELECTION_CHANGED, this.onRangeSelectionChanged.bind(this));\n }\n if (this.tooltip && !this.beans.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.beans.tooltipManager.registerTooltip(this);\n }\n };\n CellComp.prototype.onColumnHover = function () {\n var isHovered = this.beans.columnHoverService.isHovered(this.column);\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-column-hover', isHovered);\n };\n CellComp.prototype.onCellChanged = function (event) {\n var eventImpactsThisCell = event.column === this.column;\n if (eventImpactsThisCell) {\n this.refreshCell({});\n }\n };\n CellComp.prototype.getCellLeft = function () {\n var mostLeftCol;\n if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n mostLeftCol = this.colsSpanning[this.colsSpanning.length - 1];\n }\n else {\n mostLeftCol = this.column;\n }\n return mostLeftCol.getLeft();\n };\n CellComp.prototype.getCellWidth = function () {\n if (!this.colsSpanning) {\n return this.column.getActualWidth();\n }\n var result = 0;\n this.colsSpanning.forEach(function (col) { return result += col.getActualWidth(); });\n return result;\n };\n CellComp.prototype.onFlashCells = function (event) {\n var cellId = this.gridCell.createId();\n var shouldFlash = event.cells[cellId];\n if (shouldFlash) {\n this.animateCell('highlight');\n }\n };\n CellComp.prototype.setupColSpan = function () {\n // if no col span is active, then we don't set it up, as it would be wasteful of CPU\n if (utils_1._.missing(this.getComponentHolder().colSpan)) {\n return;\n }\n // because we are col spanning, a reorder of the cols can change what cols we are spanning over\n this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayColumnsChanged.bind(this));\n // because we are spanning over multiple cols, we check for width any time any cols width changes.\n // this is expensive - really we should be explicitly checking only the cols we are spanning over\n // instead of every col, however it would be tricky code to track the cols we are spanning over, so\n // because hardly anyone will be using colSpan, am favouring this easier way for more maintainable code.\n this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onWidthChanged.bind(this));\n this.colsSpanning = this.getColSpanningList();\n };\n CellComp.prototype.getColSpanningList = function () {\n var colSpan = this.column.getColSpan(this.rowNode);\n var colsSpanning = [];\n // if just one col, the col span is just the column we are in\n if (colSpan === 1) {\n colsSpanning.push(this.column);\n }\n else {\n var pointer = this.column;\n var pinned = this.column.getPinned();\n for (var i = 0; pointer && i < colSpan; i++) {\n colsSpanning.push(pointer);\n pointer = this.beans.columnController.getDisplayedColAfter(pointer);\n if (!pointer || utils_1._.missing(pointer)) {\n break;\n }\n // we do not allow col spanning to span outside of pinned areas\n if (pinned !== pointer.getPinned()) {\n break;\n }\n }\n }\n return colsSpanning;\n };\n CellComp.prototype.onDisplayColumnsChanged = function () {\n var colsSpanning = this.getColSpanningList();\n if (!utils_1._.compareArrays(this.colsSpanning, colsSpanning)) {\n this.colsSpanning = colsSpanning;\n this.onWidthChanged();\n this.onLeftChanged(); // left changes when doing RTL\n }\n };\n CellComp.prototype.getInitialCssClasses = function () {\n var cssClasses = [\"ag-cell\", \"ag-cell-not-inline-editing\"];\n // if we are putting the cell into a dummy container, to work out it's height,\n // then we don't put the height css in, as we want cell to fit height in that case.\n if (!this.autoHeightCell) {\n cssClasses.push('ag-cell-with-height');\n }\n var doingFocusCss = !this.beans.gridOptionsWrapper.isSuppressCellSelection();\n if (doingFocusCss && this.cellFocused) {\n // otherwise the class depends on the focus state\n cssClasses.push('ag-cell-focus');\n }\n if (this.firstRightPinned) {\n cssClasses.push('ag-cell-first-right-pinned');\n }\n if (this.lastLeftPinned) {\n cssClasses.push('ag-cell-last-left-pinned');\n }\n if (this.beans.columnHoverService.isHovered(this.column)) {\n cssClasses.push('ag-column-hover');\n }\n utils_1._.pushAll(cssClasses, this.preProcessClassesFromColDef());\n utils_1._.pushAll(cssClasses, this.preProcessCellClassRules());\n utils_1._.pushAll(cssClasses, this.getRangeClasses());\n // if using the wrapper, this class goes on the wrapper instead\n if (!this.usingWrapper) {\n cssClasses.push('ag-cell-value');\n }\n return cssClasses;\n };\n CellComp.prototype.getInitialValueToRender = function () {\n // if using a cellRenderer, then render the html from the cell renderer if it exists\n if (this.usingCellRenderer) {\n if (typeof this.cellRendererGui === 'string') {\n return this.cellRendererGui;\n }\n else {\n return '';\n }\n }\n var colDef = this.getComponentHolder();\n if (colDef.template) {\n // template is really only used for angular 1 - as people using ng1 are used to providing templates with\n // bindings in it. in ng2, people will hopefully want to provide components, not templates.\n return colDef.template;\n }\n else if (colDef.templateUrl) {\n // likewise for templateUrl - it's for ng1 really - when we move away from ng1, we can take these out.\n // niall was pro angular 1 when writing template and templateUrl, if writing from scratch now, would\n // not do these, but would follow a pattern that was friendly towards components, not templates.\n var template = this.beans.templateService.getTemplate(colDef.templateUrl, this.refreshCell.bind(this, true));\n if (template) {\n return template;\n }\n else {\n return '';\n }\n }\n else {\n return this.getValueToUse();\n }\n };\n CellComp.prototype.getRenderedRow = function () {\n return this.rowComp;\n };\n CellComp.prototype.isSuppressNavigable = function () {\n return this.column.isSuppressNavigable(this.rowNode);\n };\n CellComp.prototype.getCellRenderer = function () {\n return this.cellRenderer;\n };\n CellComp.prototype.getCellEditor = function () {\n return this.cellEditor;\n };\n // + stop editing {forceRefresh: true, suppressFlash: true}\n // + event cellChanged {}\n // + cellRenderer.params.refresh() {} -> method passes 'as is' to the cellRenderer, so params could be anything\n // + rowComp: event dataChanged {animate: update, newData: !update}\n // + rowComp: api refreshCells() {animate: true/false}\n // + rowRenderer: api softRefreshView() {}\n CellComp.prototype.refreshCell = function (params) {\n if (this.editingCell) {\n return;\n }\n // if we are in the middle of 'stopEditing', then we don't refresh here, as refresh gets called explicitly\n if (this.suppressRefreshCell) {\n return;\n }\n var colDef = this.getComponentHolder();\n var newData = params && params.newData;\n var suppressFlash = (params && params.suppressFlash) || colDef.suppressCellFlash;\n var forceRefresh = params && params.forceRefresh;\n var oldValue = this.value;\n this.getValueAndFormat();\n // for simple values only (not pojo's), see if the value is the same, and if it is, skip the refresh.\n // when never allow skipping after an edit, as after editing, we need to put the GUI back to the way\n // if was before the edit.\n var valuesDifferent = !this.valuesAreEqual(oldValue, this.value);\n var dataNeedsUpdating = forceRefresh || valuesDifferent;\n if (dataNeedsUpdating) {\n // if it's 'new data', then we don't refresh the cellRenderer, even if refresh method is available.\n // this is because if the whole data is new (ie we are showing stock price 'BBA' now and not 'SSD')\n // then we are not showing a movement in the stock price, rather we are showing different stock.\n var cellRendererRefreshed = newData ? false : this.attemptCellRendererRefresh();\n // we do the replace if not doing refresh, or if refresh was unsuccessful.\n // the refresh can be unsuccessful if we are using a framework (eg ng2 or react) and the framework\n // wrapper has the refresh method, but the underlying component doesn't\n if (!cellRendererRefreshed) {\n this.replaceContentsAfterRefresh();\n }\n var flashCell = !suppressFlash &&\n (this.beans.gridOptionsWrapper.isEnableCellChangeFlash() || colDef.enableCellChangeFlash);\n if (flashCell) {\n this.flashCell();\n }\n // need to check rules. note, we ignore colDef classes and styles, these are assumed to be static\n this.postProcessStylesFromColDef();\n this.postProcessClassesFromColDef();\n }\n // we can't readily determine if the data in an angularjs template has changed, so here we just update\n // and recompile (if applicable)\n this.updateAngular1ScopeAndCompile();\n this.refreshToolTip();\n // we do cellClassRules even if the value has not changed, so that users who have rules that\n // look at other parts of the row (where the other part of the row might of changed) will work.\n this.postProcessCellClassRules();\n };\n // user can also call this via API\n CellComp.prototype.flashCell = function () {\n this.animateCell('data-changed');\n };\n CellComp.prototype.animateCell = function (cssName) {\n var fullName = 'ag-cell-' + cssName;\n var animationFullName = 'ag-cell-' + cssName + '-animation';\n var element = this.getGui();\n // we want to highlight the cells, without any animation\n utils_1._.addCssClass(element, fullName);\n utils_1._.removeCssClass(element, animationFullName);\n // then once that is applied, we remove the highlight with animation\n window.setTimeout(function () {\n utils_1._.removeCssClass(element, fullName);\n utils_1._.addCssClass(element, animationFullName);\n window.setTimeout(function () {\n // and then to leave things as we got them, we remove the animation\n utils_1._.removeCssClass(element, animationFullName);\n }, 1000);\n }, 500);\n };\n CellComp.prototype.replaceContentsAfterRefresh = function () {\n // otherwise we rip out the cell and replace it\n utils_1._.clearElement(this.eParentOfValue);\n // remove old renderer component if it exists\n if (this.cellRenderer && this.cellRenderer.destroy) {\n this.cellRenderer.destroy();\n }\n this.cellRenderer = null;\n this.cellRendererGui = null;\n // populate\n this.putDataIntoCellAfterRefresh();\n this.updateAngular1ScopeAndCompile();\n };\n CellComp.prototype.updateAngular1ScopeAndCompile = function () {\n if (this.beans.gridOptionsWrapper.isAngularCompileRows() && this.scope) {\n this.scope.data = __assign({}, this.rowNode.data);\n this.angular1Compile();\n }\n };\n CellComp.prototype.angular1Compile = function () {\n // if angular compiling, then need to also compile the cell again (angular compiling sucks, please wait...)\n if (this.beans.gridOptionsWrapper.isAngularCompileRows()) {\n var eGui = this.getGui();\n // only compile the node if it hasn't already been done\n // this prevents \"orphaned\" node leaks\n if (!eGui.classList.contains('ng-scope') || eGui.childElementCount === 0) {\n var compiledElement_1 = this.beans.$compile(eGui)(this.scope);\n this.addDestroyFunc(function () {\n compiledElement_1.remove();\n });\n }\n }\n };\n CellComp.prototype.postProcessStylesFromColDef = function () {\n var stylesToUse = this.processStylesFromColDef();\n if (stylesToUse) {\n utils_1._.addStylesToElement(this.getGui(), stylesToUse);\n }\n };\n CellComp.prototype.preProcessStylesFromColDef = function () {\n var stylesToUse = this.processStylesFromColDef();\n return utils_1._.cssStyleObjectToMarkup(stylesToUse);\n };\n CellComp.prototype.processStylesFromColDef = function () {\n var colDef = this.getComponentHolder();\n if (colDef.cellStyle) {\n var cssToUse = void 0;\n if (typeof colDef.cellStyle === 'function') {\n var cellStyleParams = {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n column: this.column,\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi()\n };\n var cellStyleFunc = colDef.cellStyle;\n cssToUse = cellStyleFunc(cellStyleParams);\n }\n else {\n cssToUse = colDef.cellStyle;\n }\n return cssToUse;\n }\n };\n CellComp.prototype.postProcessClassesFromColDef = function () {\n var _this = this;\n this.processClassesFromColDef(function (className) { return utils_1._.addCssClass(_this.getGui(), className); });\n };\n CellComp.prototype.preProcessClassesFromColDef = function () {\n var res = [];\n this.processClassesFromColDef(function (className) { return res.push(className); });\n return res;\n };\n CellComp.prototype.processClassesFromColDef = function (onApplicableClass) {\n var colDef = this.getComponentHolder();\n this.beans.stylingService.processStaticCellClasses(colDef, {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n rowIndex: this.rowNode.rowIndex,\n $scope: this.scope,\n api: this.beans.gridOptionsWrapper.getApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass);\n };\n CellComp.prototype.putDataIntoCellAfterRefresh = function () {\n // template gets preference, then cellRenderer, then do it ourselves\n var colDef = this.getComponentHolder();\n if (colDef.template) {\n // template is really only used for angular 1 - as people using ng1 are used to providing templates with\n // bindings in it. in ng2, people will hopefully want to provide components, not templates.\n this.eParentOfValue.innerHTML = colDef.template;\n }\n else if (colDef.templateUrl) {\n // likewise for templateUrl - it's for ng1 really - when we move away from ng1, we can take these out.\n // niall was pro angular 1 when writing template and templateUrl, if writing from scratch now, would\n // not do these, but would follow a pattern that was friendly towards components, not templates.\n var template = this.beans.templateService.getTemplate(colDef.templateUrl, this.refreshCell.bind(this, true));\n if (template) {\n this.eParentOfValue.innerHTML = template;\n }\n }\n else {\n // we can switch from using a cell renderer back to the default if a user\n // is using cellRendererSelect\n if (this.usingCellRenderer) {\n if (!this.attachCellRenderer()) {\n this.usingCellRenderer = false;\n }\n }\n if (!this.usingCellRenderer) {\n var valueToUse = this.getValueToUse();\n if (valueToUse !== null && valueToUse !== undefined) {\n this.eParentOfValue.innerHTML = utils_1._.escape(valueToUse);\n }\n }\n }\n };\n CellComp.prototype.attemptCellRendererRefresh = function () {\n if (utils_1._.missing(this.cellRenderer) || !this.cellRenderer || utils_1._.missing(this.cellRenderer.refresh)) {\n return false;\n }\n // if the cell renderer has a refresh method, we call this instead of doing a refresh\n var params = this.createCellRendererParams();\n // take any custom params off of the user\n var finalParams = this.beans.userComponentFactory.createFinalParams(this.getComponentHolder(), this.cellRendererType, params);\n var result = this.cellRenderer.refresh(finalParams);\n // NOTE on undefined: previous version of the cellRenderer.refresh() interface\n // returned nothing, if the method existed, we assumed it refreshed. so for\n // backwards compatibility, we assume if method exists and returns nothing,\n // that it was successful.\n return result === true || result === undefined;\n };\n CellComp.prototype.refreshToolTip = function () {\n var newTooltip = this.getToolTip();\n if (this.tooltip !== newTooltip) {\n this.tooltip = newTooltip;\n if (!this.beans.gridOptionsWrapper.isEnableBrowserTooltips()) {\n return;\n }\n if (utils_1._.exists(newTooltip)) {\n var tooltipSanitised = utils_1._.escape(this.tooltip);\n this.eParentOfValue.setAttribute('title', tooltipSanitised);\n }\n else {\n this.eParentOfValue.removeAttribute('title');\n }\n }\n };\n CellComp.prototype.valuesAreEqual = function (val1, val2) {\n // if the user provided an equals method, use that, otherwise do simple comparison\n var colDef = this.getComponentHolder();\n var equalsMethod = colDef ? colDef.equals : null;\n if (equalsMethod) {\n return equalsMethod(val1, val2);\n }\n return val1 === val2;\n };\n CellComp.prototype.getToolTip = function () {\n var colDef = this.getComponentHolder();\n var data = this.rowNode.data;\n if (colDef.tooltipField && utils_1._.exists(data)) {\n return utils_1._.getValueUsingField(data, colDef.tooltipField, this.column.isTooltipFieldContainsDots());\n }\n var valueGetter = colDef.tooltipValueGetter || colDef.tooltip;\n if (valueGetter) {\n return valueGetter({\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n colDef: colDef,\n column: this.getColumn(),\n context: this.beans.gridOptionsWrapper.getContext(),\n value: this.value,\n valueFormatted: this.valueFormatted,\n rowIndex: this.gridCell.rowIndex,\n node: this.rowNode,\n data: this.rowNode.data,\n $scope: this.scope,\n });\n }\n return null;\n };\n CellComp.prototype.getTooltipText = function (escape) {\n if (escape === void 0) { escape = true; }\n return escape ? utils_1._.escape(this.tooltip) : this.tooltip;\n };\n CellComp.prototype.processCellClassRules = function (onApplicableClass, onNotApplicableClass) {\n var colDef = this.getComponentHolder();\n this.beans.stylingService.processClassRules(colDef.cellClassRules, {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n rowIndex: this.gridCell.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass, onNotApplicableClass);\n };\n CellComp.prototype.postProcessCellClassRules = function () {\n var _this = this;\n this.processCellClassRules(function (className) {\n utils_1._.addCssClass(_this.getGui(), className);\n }, function (className) {\n utils_1._.removeCssClass(_this.getGui(), className);\n });\n };\n CellComp.prototype.preProcessCellClassRules = function () {\n var res = [];\n this.processCellClassRules(function (className) {\n res.push(className);\n }, function (className) {\n // not catered for, if creating, no need\n // to remove class as it was never there\n });\n return res;\n };\n // a wrapper is used when we are putting a selection checkbox in the cell with the value\n CellComp.prototype.setUsingWrapper = function () {\n var colDef = this.getComponentHolder();\n // never allow selection or dragging on pinned rows\n if (this.rowNode.rowPinned) {\n this.usingWrapper = false;\n this.includeSelectionComponent = false;\n this.includeRowDraggingComponent = false;\n return;\n }\n var cbSelectionIsFunc = typeof colDef.checkboxSelection === 'function';\n var rowDraggableIsFunc = typeof colDef.rowDrag === 'function';\n this.includeSelectionComponent = cbSelectionIsFunc || colDef.checkboxSelection === true;\n this.includeRowDraggingComponent = rowDraggableIsFunc || colDef.rowDrag === true;\n this.usingWrapper = this.includeRowDraggingComponent || this.includeSelectionComponent;\n };\n CellComp.prototype.chooseCellRenderer = function () {\n // template gets preference, then cellRenderer, then do it ourselves\n var colDef = this.getComponentHolder();\n // templates are for ng1, ideally we wouldn't have these, they are ng1 support\n // inside the core which is bad\n if (colDef.template || colDef.templateUrl) {\n this.usingCellRenderer = false;\n return;\n }\n var params = this.createCellRendererParams();\n var cellRenderer = this.beans.userComponentFactory.lookupComponentClassDef(colDef, 'cellRenderer', params);\n var pinnedRowCellRenderer = this.beans.userComponentFactory.lookupComponentClassDef(colDef, 'pinnedRowCellRenderer', params);\n if (pinnedRowCellRenderer && this.rowNode.rowPinned) {\n this.cellRendererType = CellComp.CELL_RENDERER_TYPE_PINNED;\n this.usingCellRenderer = true;\n }\n else if (cellRenderer) {\n this.cellRendererType = CellComp.CELL_RENDERER_TYPE_NORMAL;\n this.usingCellRenderer = true;\n }\n else {\n this.usingCellRenderer = false;\n }\n };\n CellComp.prototype.createCellRendererInstance = function () {\n var params = this.createCellRendererParams();\n this.cellRendererVersion++;\n var callback = this.afterCellRendererCreated.bind(this, this.cellRendererVersion);\n // this can return null in the event that the user has switched from a renderer component to nothing, for example\n // when using a cellRendererSelect to return a component or null depending on row data etc\n var componentPromise;\n if (this.cellRendererType === CellComp.CELL_RENDERER_TYPE_NORMAL) {\n componentPromise = this.beans.userComponentFactory.newCellRenderer(this.getComponentHolder(), params);\n }\n else {\n componentPromise = this.beans.userComponentFactory.newPinnedRowCellRenderer(this.getComponentHolder(), params);\n }\n if (componentPromise) {\n componentPromise.then(callback);\n return true;\n }\n return false;\n };\n CellComp.prototype.afterCellRendererCreated = function (cellRendererVersion, cellRenderer) {\n // see if daemon\n if (!this.isAlive() || (cellRendererVersion !== this.cellRendererVersion)) {\n if (cellRenderer.destroy) {\n cellRenderer.destroy();\n }\n return;\n }\n this.cellRenderer = cellRenderer;\n this.cellRendererGui = this.cellRenderer.getGui();\n if (utils_1._.missing(this.cellRendererGui)) {\n return;\n }\n // if async components, then it's possible the user started editing since\n // this call was made\n if (!this.editingCell) {\n this.eParentOfValue.appendChild(this.cellRendererGui);\n }\n };\n CellComp.prototype.attachCellRenderer = function () {\n if (!this.usingCellRenderer) {\n return false;\n }\n return this.createCellRendererInstance();\n };\n CellComp.prototype.createCellRendererParams = function () {\n var _this = this;\n var params = {\n value: this.value,\n valueFormatted: this.valueFormatted,\n getValue: this.getValue.bind(this),\n setValue: function (value) {\n _this.beans.valueService.setValue(_this.rowNode, _this.column, value);\n },\n formatValue: this.formatValue.bind(this),\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: this.getComponentHolder(),\n column: this.column,\n $scope: this.scope,\n rowIndex: this.gridCell.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n refreshCell: this.refreshCell.bind(this),\n eGridCell: this.getGui(),\n eParentOfValue: this.eParentOfValue,\n // these bits are not documented anywhere, so we could drop them?\n // it was in the olden days to allow user to register for when rendered\n // row was removed (the row comp was removed), however now that the user\n // can provide components for cells, the destroy method gets call when this\n // happens so no longer need to fire event.\n addRowCompListener: this.rowComp ? this.rowComp.addEventListener.bind(this.rowComp) : null,\n addRenderedRowListener: function (eventType, listener) {\n console.warn('ag-Grid: since ag-Grid .v11, params.addRenderedRowListener() is now params.addRowCompListener()');\n if (_this.rowComp) {\n _this.rowComp.addEventListener(eventType, listener);\n }\n }\n };\n return params;\n };\n CellComp.prototype.formatValue = function (value) {\n var valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, value);\n var valueFormattedExists = valueFormatted !== null && valueFormatted !== undefined;\n return valueFormattedExists ? valueFormatted : value;\n };\n CellComp.prototype.getValueToUse = function () {\n var valueFormattedExists = this.valueFormatted !== null && this.valueFormatted !== undefined;\n return valueFormattedExists ? this.valueFormatted : this.value;\n };\n CellComp.prototype.getValueAndFormat = function () {\n this.value = this.getValue();\n this.valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, this.value);\n };\n CellComp.prototype.getValue = function () {\n // if we don't check this, then the grid will render leaf groups as open even if we are not\n // allowing the user to open leaf groups. confused? remember for pivot mode we don't allow\n // opening leaf groups, so we have to force leafGroups to be closed in case the user expanded\n // them via the API, or user user expanded them in the UI before turning on pivot mode\n var lockedClosedGroup = this.rowNode.leafGroup && this.beans.columnController.isPivotMode();\n var isOpenGroup = this.rowNode.group && this.rowNode.expanded && !this.rowNode.footer && !lockedClosedGroup;\n // are we showing group footers\n var groupFootersEnabled = this.beans.gridOptionsWrapper.isGroupIncludeFooter();\n // if doing footers, we normally don't show agg data at group level when group is open\n var groupAlwaysShowAggData = this.beans.gridOptionsWrapper.isGroupSuppressBlankHeader();\n // if doing grouping and footers, we don't want to include the agg value\n // in the header when the group is open\n var ignoreAggData = (isOpenGroup && groupFootersEnabled) && !groupAlwaysShowAggData;\n return this.beans.valueService.getValue(this.column, this.rowNode, false, ignoreAggData);\n };\n CellComp.prototype.onMouseEvent = function (eventName, mouseEvent) {\n if (utils_1._.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n switch (eventName) {\n case 'click':\n this.onCellClicked(mouseEvent);\n break;\n case 'mousedown':\n this.onMouseDown(mouseEvent);\n break;\n case 'dblclick':\n this.onCellDoubleClicked(mouseEvent);\n break;\n case 'mouseout':\n this.onMouseOut(mouseEvent);\n break;\n case 'mouseover':\n this.onMouseOver(mouseEvent);\n break;\n }\n };\n CellComp.prototype.dispatchCellContextMenuEvent = function (event) {\n var colDef = this.getComponentHolder();\n var cellContextMenuEvent = this.createEvent(event, events_1.Events.EVENT_CELL_CONTEXT_MENU);\n this.beans.eventService.dispatchEvent(cellContextMenuEvent);\n if (colDef.onCellContextMenu) {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellContextMenu(cellContextMenuEvent); }, 0);\n }\n };\n CellComp.prototype.createEvent = function (domEvent, eventType) {\n var event = {\n node: this.rowNode,\n data: this.rowNode.data,\n value: this.value,\n column: this.column,\n colDef: this.getComponentHolder(),\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi,\n rowPinned: this.rowNode.rowPinned,\n event: domEvent,\n type: eventType,\n rowIndex: this.rowNode.rowIndex\n };\n // because we are hacking in $scope for angular 1, we have to de-reference\n if (this.scope) {\n event.$scope = this.scope;\n }\n return event;\n };\n CellComp.prototype.onMouseOut = function (mouseEvent) {\n var cellMouseOutEvent = this.createEvent(mouseEvent, events_1.Events.EVENT_CELL_MOUSE_OUT);\n this.beans.eventService.dispatchEvent(cellMouseOutEvent);\n this.beans.columnHoverService.clearMouseOver();\n };\n CellComp.prototype.onMouseOver = function (mouseEvent) {\n var cellMouseOverEvent = this.createEvent(mouseEvent, events_1.Events.EVENT_CELL_MOUSE_OVER);\n this.beans.eventService.dispatchEvent(cellMouseOverEvent);\n this.beans.columnHoverService.setMouseOver([this.column]);\n };\n CellComp.prototype.onCellDoubleClicked = function (mouseEvent) {\n var colDef = this.getComponentHolder();\n // always dispatch event to eventService\n var cellDoubleClickedEvent = this.createEvent(mouseEvent, events_1.Events.EVENT_CELL_DOUBLE_CLICKED);\n this.beans.eventService.dispatchEvent(cellDoubleClickedEvent);\n // check if colDef also wants to handle event\n if (typeof colDef.onCellDoubleClicked === 'function') {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellDoubleClicked(cellDoubleClickedEvent); }, 0);\n }\n var editOnDoubleClick = !this.beans.gridOptionsWrapper.isSingleClickEdit()\n && !this.beans.gridOptionsWrapper.isSuppressClickEdit();\n if (editOnDoubleClick) {\n this.startRowOrCellEdit();\n }\n };\n // called by rowRenderer when user navigates via tab key\n CellComp.prototype.startRowOrCellEdit = function (keyPress, charPress) {\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n this.rowComp.startRowEditing(keyPress, charPress, this);\n }\n else {\n this.startEditingIfEnabled(keyPress, charPress, true);\n }\n };\n CellComp.prototype.isCellEditable = function () {\n return this.column.isCellEditable(this.rowNode);\n };\n // either called internally if single cell editing, or called by rowRenderer if row editing\n CellComp.prototype.startEditingIfEnabled = function (keyPress, charPress, cellStartedEdit) {\n if (keyPress === void 0) { keyPress = null; }\n if (charPress === void 0) { charPress = null; }\n if (cellStartedEdit === void 0) { cellStartedEdit = false; }\n // don't do it if not editable\n if (!this.isCellEditable()) {\n return;\n }\n // don't do it if already editing\n if (this.editingCell) {\n return;\n }\n this.editingCell = true;\n this.cellEditorVersion++;\n var callback = this.afterCellEditorCreated.bind(this, this.cellEditorVersion);\n var params = this.createCellEditorParams(keyPress, charPress, cellStartedEdit);\n this.createCellEditor(params).then(callback);\n // if we don't do this, and editor component is async, then there will be a period\n // when the component isn't present and keyboard navigation won't work - so example\n // of user hitting tab quickly (more quickly than renderers getting created) won't work\n var cellEditorAsync = utils_1._.missing(this.cellEditor);\n if (cellEditorAsync && cellStartedEdit) {\n this.focusCell(true);\n }\n };\n CellComp.prototype.createCellEditor = function (params) {\n var _this = this;\n var cellEditorPromise = this.beans.userComponentFactory.newCellEditor(this.column.getColDef(), params);\n return cellEditorPromise.map(function (cellEditor) {\n var isPopup = cellEditor.isPopup && cellEditor.isPopup();\n if (!isPopup) {\n return cellEditor;\n }\n if (_this.beans.gridOptionsWrapper.isFullRowEdit()) {\n console.warn('ag-Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both ' +\n '- either turn off fullRowEdit, or stop using popup editors.');\n }\n // if a popup, then we wrap in a popup editor and return the popup\n var popupEditorWrapper = new popupEditorWrapper_1.PopupEditorWrapper(cellEditor);\n _this.beans.context.wireBean(popupEditorWrapper);\n popupEditorWrapper.init(params);\n return popupEditorWrapper;\n });\n };\n CellComp.prototype.afterCellEditorCreated = function (cellEditorVersion, cellEditor) {\n // if editingCell=false, means user cancelled the editor before component was ready.\n // if versionMismatch, then user cancelled the edit, then started the edit again, and this\n // is the first editor which is now stale.\n var versionMismatch = cellEditorVersion !== this.cellEditorVersion;\n if (versionMismatch || !this.editingCell) {\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n return;\n }\n if (cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart()) {\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n this.editingCell = false;\n return;\n }\n if (!cellEditor.getGui) {\n console.warn(\"ag-Grid: cellEditor for column \" + this.column.getId() + \" is missing getGui() method\");\n // no getGui, for React guys, see if they attached a react component directly\n if (cellEditor.render) {\n console.warn(\"ag-Grid: we found 'render' on the component, are you trying to set a React renderer but added it as colDef.cellEditor instead of colDef.cellEditorFmk?\");\n }\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n this.editingCell = false;\n return;\n }\n this.cellEditor = cellEditor;\n this.cellEditorInPopup = cellEditor.isPopup !== undefined && cellEditor.isPopup();\n this.setInlineEditingClass();\n if (this.cellEditorInPopup) {\n this.addPopupCellEditor();\n }\n else {\n this.addInCellEditor();\n }\n if (cellEditor.afterGuiAttached) {\n cellEditor.afterGuiAttached();\n }\n var event = this.createEvent(null, events_1.Events.EVENT_CELL_EDITING_STARTED);\n this.beans.eventService.dispatchEvent(event);\n };\n CellComp.prototype.addInCellEditor = function () {\n utils_1._.clearElement(this.getGui());\n if (this.cellEditor) {\n this.getGui().appendChild(this.cellEditor.getGui());\n }\n this.angular1Compile();\n };\n CellComp.prototype.addPopupCellEditor = function () {\n var _this = this;\n var ePopupGui = this.cellEditor ? this.cellEditor.getGui() : null;\n this.hideEditorPopup = this.beans.popupService.addAsModalPopup(ePopupGui, true, \n // callback for when popup disappears\n function () {\n _this.onPopupEditorClosed();\n });\n this.beans.popupService.positionPopupOverComponent({\n column: this.column,\n rowNode: this.rowNode,\n type: 'popupCellEditor',\n eventSource: this.getGui(),\n ePopup: ePopupGui,\n keepWithinBounds: true\n });\n this.angular1Compile();\n };\n CellComp.prototype.onPopupEditorClosed = function () {\n // we only call stopEditing if we are editing, as\n // it's possible the popup called 'stop editing'\n // before this, eg if 'enter key' was pressed on\n // the editor.\n if (this.editingCell) {\n // note: this only happens when use clicks outside of the grid. if use clicks on another\n // cell, then the editing will have already stopped on this cell\n this.stopRowOrCellEdit();\n // we only focus cell again if this cell is still focused. it is possible\n // it is not focused if the user cancelled the edit by clicking on another\n // cell outside of this one\n if (this.beans.focusedCellController.isCellFocused(this.gridCell)) {\n this.focusCell(true);\n }\n }\n };\n // if we are editing inline, then we don't have the padding in the cell (set in the themes)\n // to allow the text editor full access to the entire cell\n CellComp.prototype.setInlineEditingClass = function () {\n // ag-cell-inline-editing - appears when user is inline editing\n // ag-cell-not-inline-editing - appears when user is no inline editing\n // ag-cell-popup-editing - appears when user is editing cell in popup (appears on the cell, not on the popup)\n // note: one of {ag-cell-inline-editing, ag-cell-not-inline-editing} is always present, they toggle.\n // however {ag-cell-popup-editing} shows when popup, so you have both {ag-cell-popup-editing}\n // and {ag-cell-not-inline-editing} showing at the same time.\n var editingInline = this.editingCell && !this.cellEditorInPopup;\n var popupEditorShowing = this.editingCell && this.cellEditorInPopup;\n utils_1._.addOrRemoveCssClass(this.getGui(), \"ag-cell-inline-editing\", editingInline);\n utils_1._.addOrRemoveCssClass(this.getGui(), \"ag-cell-not-inline-editing\", !editingInline);\n utils_1._.addOrRemoveCssClass(this.getGui(), \"ag-cell-popup-editing\", popupEditorShowing);\n utils_1._.addOrRemoveCssClass(this.getGui().parentNode, \"ag-row-inline-editing\", editingInline);\n utils_1._.addOrRemoveCssClass(this.getGui().parentNode, \"ag-row-not-inline-editing\", !editingInline);\n };\n CellComp.prototype.createCellEditorParams = function (keyPress, charPress, cellStartedEdit) {\n var params = {\n value: this.getValue(),\n keyPress: keyPress,\n charPress: charPress,\n column: this.column,\n colDef: this.column.getColDef(),\n rowIndex: this.gridCell.rowIndex,\n node: this.rowNode,\n data: this.rowNode.data,\n api: this.beans.gridOptionsWrapper.getApi(),\n cellStartedEdit: cellStartedEdit,\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n $scope: this.scope,\n onKeyDown: this.onKeyDown.bind(this),\n stopEditing: this.stopEditingAndFocus.bind(this),\n eGridCell: this.getGui(),\n parseValue: this.parseValue.bind(this),\n formatValue: this.formatValue.bind(this)\n };\n return params;\n };\n // cell editors call this, when they want to stop for reasons other\n // than what we pick up on. eg selecting from a dropdown ends editing.\n CellComp.prototype.stopEditingAndFocus = function (suppressNavigateAfterEdit) {\n if (suppressNavigateAfterEdit === void 0) { suppressNavigateAfterEdit = false; }\n this.stopRowOrCellEdit();\n this.focusCell(true);\n if (!suppressNavigateAfterEdit) {\n this.navigateAfterEdit();\n }\n };\n CellComp.prototype.parseValue = function (newValue) {\n var colDef = this.getComponentHolder();\n var params = {\n node: this.rowNode,\n data: this.rowNode.data,\n oldValue: this.value,\n newValue: newValue,\n colDef: colDef,\n column: this.column,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n var valueParser = colDef.valueParser;\n return utils_1._.exists(valueParser) ? this.beans.expressionService.evaluate(valueParser, params) : newValue;\n };\n CellComp.prototype.focusCell = function (forceBrowserFocus) {\n if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n this.beans.focusedCellController.setFocusedCell(this.gridCell.rowIndex, this.column, this.rowNode.rowPinned, forceBrowserFocus);\n };\n CellComp.prototype.setFocusInOnEditor = function () {\n if (this.editingCell) {\n if (this.cellEditor && this.cellEditor.focusIn) {\n // if the editor is present, then we just focus it\n this.cellEditor.focusIn();\n }\n else {\n // if the editor is not present, it means async cell editor (eg React fibre)\n // and we are trying to set focus before the cell editor is present, so we\n // focus the cell instead\n this.focusCell(true);\n }\n }\n };\n CellComp.prototype.isEditing = function () {\n return this.editingCell;\n };\n CellComp.prototype.onKeyDown = function (event) {\n var key = event.which || event.keyCode;\n switch (key) {\n case constants_1.Constants.KEY_ENTER:\n this.onEnterKeyDown();\n break;\n case constants_1.Constants.KEY_F2:\n this.onF2KeyDown();\n break;\n case constants_1.Constants.KEY_ESCAPE:\n this.onEscapeKeyDown();\n break;\n case constants_1.Constants.KEY_TAB:\n this.onTabKeyDown(event);\n break;\n case constants_1.Constants.KEY_BACKSPACE:\n case constants_1.Constants.KEY_DELETE:\n this.onBackspaceOrDeleteKeyPressed(key);\n break;\n case constants_1.Constants.KEY_DOWN:\n case constants_1.Constants.KEY_UP:\n case constants_1.Constants.KEY_RIGHT:\n case constants_1.Constants.KEY_LEFT:\n this.onNavigationKeyPressed(event, key);\n break;\n }\n };\n CellComp.prototype.setFocusOutOnEditor = function () {\n if (this.editingCell && this.cellEditor && this.cellEditor.focusOut) {\n this.cellEditor.focusOut();\n }\n };\n CellComp.prototype.onNavigationKeyPressed = function (event, key) {\n if (this.editingCell) {\n return;\n }\n if (event.shiftKey && this.rangeSelectionEnabled) {\n this.onShiftRangeSelect(key);\n }\n else {\n this.beans.rowRenderer.navigateToNextCell(event, key, this.gridCell, true);\n }\n // if we don't prevent default, the grid will scroll with the navigation keys\n event.preventDefault();\n };\n CellComp.prototype.onShiftRangeSelect = function (key) {\n var success = this.beans.rangeController.extendRangeInDirection(this.gridCell, key);\n if (!success) {\n return;\n }\n var ranges = this.beans.rangeController.getCellRanges();\n // this should never happen, as extendRangeFromCell should always have one range after getting called\n if (utils_1._.missing(ranges) || !ranges || ranges.length !== 1) {\n return;\n }\n var endCell = ranges[0].end;\n this.beans.rowRenderer.ensureCellVisible(endCell);\n };\n CellComp.prototype.onTabKeyDown = function (event) {\n this.beans.rowRenderer.onTabKeyDown(this, event);\n };\n CellComp.prototype.onBackspaceOrDeleteKeyPressed = function (key) {\n if (!this.editingCell) {\n this.startRowOrCellEdit(key);\n }\n };\n CellComp.prototype.onEnterKeyDown = function () {\n if (this.editingCell || this.rowComp.isEditing()) {\n this.stopEditingAndFocus();\n }\n else {\n if (this.beans.gridOptionsWrapper.isEnterMovesDown()) {\n this.beans.rowRenderer.navigateToNextCell(null, constants_1.Constants.KEY_DOWN, this.gridCell, false);\n }\n else {\n this.startRowOrCellEdit(constants_1.Constants.KEY_ENTER);\n }\n }\n };\n CellComp.prototype.navigateAfterEdit = function () {\n var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n if (fullRowEdit) {\n return;\n }\n var enterMovesDownAfterEdit = this.beans.gridOptionsWrapper.isEnterMovesDownAfterEdit();\n if (enterMovesDownAfterEdit) {\n this.beans.rowRenderer.navigateToNextCell(null, constants_1.Constants.KEY_DOWN, this.gridCell, false);\n }\n };\n CellComp.prototype.onF2KeyDown = function () {\n if (!this.editingCell) {\n this.startRowOrCellEdit(constants_1.Constants.KEY_F2);\n }\n };\n CellComp.prototype.onEscapeKeyDown = function () {\n if (this.editingCell) {\n this.stopRowOrCellEdit(true);\n this.focusCell(true);\n }\n };\n CellComp.prototype.onKeyPress = function (event) {\n // check this, in case focus is on a (for example) a text field inside the cell,\n // in which cse we should not be listening for these key pressed\n var eventTarget = utils_1._.getTarget(event);\n var eventOnChildComponent = eventTarget !== this.getGui();\n if (eventOnChildComponent) {\n return;\n }\n if (!this.editingCell) {\n var pressedChar = String.fromCharCode(event.charCode);\n if (pressedChar === ' ') {\n this.onSpaceKeyPressed(event);\n }\n else {\n if (utils_1._.isEventFromPrintableCharacter(event)) {\n this.startRowOrCellEdit(null, pressedChar);\n // if we don't prevent default, then the keypress also gets applied to the text field\n // (at least when doing the default editor), but we need to allow the editor to decide\n // what it wants to do. we only do this IF editing was started - otherwise it messes\n // up when the use is not doing editing, but using rendering with text fields in cellRenderer\n // (as it would block the the user from typing into text fields).\n event.preventDefault();\n }\n }\n }\n };\n CellComp.prototype.onSpaceKeyPressed = function (event) {\n if (!this.editingCell && this.beans.gridOptionsWrapper.isRowSelection()) {\n var selected = this.rowNode.isSelected();\n this.rowNode.setSelected(!selected);\n }\n // prevent default as space key, by default, moves browser scroll down\n event.preventDefault();\n };\n CellComp.prototype.onMouseDown = function (mouseEvent) {\n // we only need to pass true to focusCell in when the browser is IE\n // and we are trying to focus a cell (has ag-cell class), otherwise\n // we pass false, as we don't want the cell to focus also get the browser\n // focus. if we did, then the cellRenderer could have a text field in it,\n // for example, and as the user clicks on the text field, the text field,\n // the focus doesn't get to the text field, instead to goes to the div\n // behind, making it impossible to select the text field.\n var forceBrowserFocus = false;\n // return if we are clicking on a row selection checkbox, otherwise the row will get selected AND\n // we do range selection, however if user is clicking checking, they are probably only interested\n // in row selection.\n if (utils_1._.isElementChildOfClass(mouseEvent.target, 'ag-selection-checkbox', 3)) {\n return;\n }\n if (utils_1._.isBrowserIE()) {\n var target = mouseEvent.target;\n if (target.classList.contains('ag-cell')) {\n forceBrowserFocus = true;\n }\n }\n this.focusCell(forceBrowserFocus);\n // if it's a right click, then if the cell is already in range,\n // don't change the range, however if the cell is not in a range,\n // we set a new range\n var leftMouseButtonClick = utils_1._.isLeftClick(mouseEvent);\n if (leftMouseButtonClick && this.beans.rangeController) {\n var thisCell = this.gridCell;\n if (mouseEvent.shiftKey) {\n this.beans.rangeController.extendRangeToCell(thisCell);\n }\n else {\n var ctrlKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n this.beans.rangeController.setRangeToCell(thisCell, ctrlKeyPressed);\n }\n }\n var cellMouseDownEvent = this.createEvent(mouseEvent, events_1.Events.EVENT_CELL_MOUSE_DOWN);\n this.beans.eventService.dispatchEvent(cellMouseDownEvent);\n };\n // returns true if on iPad and this is second 'click' event in 200ms\n CellComp.prototype.isDoubleClickOnIPad = function () {\n if (!utils_1._.isUserAgentIPad()) {\n return false;\n }\n var nowMillis = new Date().getTime();\n var res = nowMillis - this.lastIPadMouseClickEvent < 200;\n this.lastIPadMouseClickEvent = nowMillis;\n return res;\n };\n CellComp.prototype.onCellClicked = function (mouseEvent) {\n // iPad doesn't have double click - so we need to mimic it do enable editing for\n // iPad.\n if (this.isDoubleClickOnIPad()) {\n this.onCellDoubleClicked(mouseEvent);\n mouseEvent.preventDefault(); // if we don't do this, then iPad zooms in\n return;\n }\n var cellClickedEvent = this.createEvent(mouseEvent, events_1.Events.EVENT_CELL_CLICKED);\n this.beans.eventService.dispatchEvent(cellClickedEvent);\n var colDef = this.getComponentHolder();\n if (colDef.onCellClicked) {\n // to make callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellClicked(cellClickedEvent); }, 0);\n }\n var editOnSingleClick = (this.beans.gridOptionsWrapper.isSingleClickEdit() || colDef.singleClickEdit)\n && !this.beans.gridOptionsWrapper.isSuppressClickEdit();\n if (editOnSingleClick) {\n this.startRowOrCellEdit();\n }\n utils_1._.doIeFocusHack(this.getGui());\n };\n CellComp.prototype.createGridCellVo = function () {\n var gridCellDef = {\n rowIndex: this.rowNode.rowIndex,\n floating: this.rowNode.rowPinned,\n column: this.column\n };\n this.gridCell = new gridCell_1.GridCell(gridCellDef);\n };\n CellComp.prototype.getGridCell = function () {\n return this.gridCell;\n };\n CellComp.prototype.getParentRow = function () {\n return this.eParentRow;\n };\n CellComp.prototype.setParentRow = function (eParentRow) {\n this.eParentRow = eParentRow;\n };\n CellComp.prototype.getColumn = function () {\n return this.column;\n };\n CellComp.prototype.getComponentHolder = function () {\n return this.column.getColDef();\n };\n CellComp.prototype.detach = function () {\n this.eParentRow.removeChild(this.getGui());\n };\n // if the row is also getting destroyed, then we don't need to remove from dom,\n // as the row will also get removed, so no need to take out the cells from the row\n // if the row is going (removing is an expensive operation, so only need to remove\n // the top part)\n CellComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.cellEditor && this.cellEditor.destroy) {\n this.cellEditor.destroy();\n this.cellEditor = null;\n }\n if (this.cellRenderer && this.cellRenderer.destroy) {\n this.cellRenderer.destroy();\n this.cellRenderer = null;\n }\n };\n CellComp.prototype.onLeftChanged = function () {\n var left = this.modifyLeftForPrintLayout(this.getCellLeft());\n this.getGui().style.left = left + 'px';\n };\n CellComp.prototype.modifyLeftForPrintLayout = function (leftPosition) {\n if (!this.printLayout) {\n return leftPosition;\n }\n if (this.column.getPinned() === column_1.Column.PINNED_LEFT) {\n return leftPosition;\n }\n if (this.column.getPinned() === column_1.Column.PINNED_RIGHT) {\n var leftWidth_1 = this.beans.columnController.getPinnedLeftContainerWidth();\n var bodyWidth = this.beans.columnController.getBodyContainerWidth();\n return leftWidth_1 + bodyWidth + leftPosition;\n }\n // is in body\n var leftWidth = this.beans.columnController.getPinnedLeftContainerWidth();\n return leftWidth + leftPosition;\n };\n CellComp.prototype.onWidthChanged = function () {\n var width = this.getCellWidth();\n this.getGui().style.width = width + 'px';\n };\n CellComp.prototype.getRangeClasses = function () {\n var res = [];\n if (!this.rangeSelectionEnabled) {\n return res;\n }\n if (this.rangeCount !== 0) {\n res.push('ag-cell-range-selected');\n }\n if (this.rangeCount === 1) {\n res.push('ag-cell-range-selected-1');\n }\n if (this.rangeCount === 2) {\n res.push('ag-cell-range-selected-2');\n }\n if (this.rangeCount === 3) {\n res.push('ag-cell-range-selected-3');\n }\n if (this.rangeCount >= 4) {\n res.push('ag-cell-range-selected-4');\n }\n return res;\n };\n CellComp.prototype.onRowIndexChanged = function () {\n // when index changes, this influences items that need the index, so we update the\n // grid cell so they are working off the new index.\n this.createGridCellVo();\n // when the index of the row changes, ie means the cell may have lost or gained focus\n this.onCellFocused();\n // check range selection\n this.onRangeSelectionChanged();\n };\n CellComp.prototype.onRangeSelectionChanged = function () {\n if (!this.beans.enterprise) {\n return;\n }\n var newRangeCount = this.beans.rangeController.getCellRangeCount(this.gridCell);\n var element = this.getGui();\n if (this.rangeCount !== newRangeCount) {\n utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected', newRangeCount !== 0);\n utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected-1', newRangeCount === 1);\n utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected-2', newRangeCount === 2);\n utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected-3', newRangeCount === 3);\n utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected-4', newRangeCount >= 4);\n this.rangeCount = newRangeCount;\n }\n };\n CellComp.prototype.onFirstRightPinnedChanged = function () {\n var firstRightPinned = this.column.isFirstRightPinned();\n if (this.firstRightPinned !== firstRightPinned) {\n this.firstRightPinned = firstRightPinned;\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-cell-first-right-pinned', firstRightPinned);\n }\n };\n CellComp.prototype.onLastLeftPinnedChanged = function () {\n var lastLeftPinned = this.column.isLastLeftPinned();\n if (this.lastLeftPinned !== lastLeftPinned) {\n this.lastLeftPinned = lastLeftPinned;\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-cell-last-left-pinned', lastLeftPinned);\n }\n };\n CellComp.prototype.populateTemplate = function () {\n if (this.usingWrapper) {\n this.eParentOfValue = this.getRefElement('eCellValue');\n this.eCellWrapper = this.getRefElement('eCellWrapper');\n if (this.includeRowDraggingComponent) {\n this.addRowDragging();\n }\n if (this.includeSelectionComponent) {\n this.addSelectionCheckbox();\n }\n }\n else {\n this.eParentOfValue = this.getGui();\n }\n };\n CellComp.prototype.addRowDragging = function () {\n // row dragging only available in default row model\n if (!this.beans.gridOptionsWrapper.isRowModelDefault()) {\n utils_1._.doOnce(function () { return console.warn('ag-Grid: row dragging is only allowed in the In Memory Row Model'); }, 'CellComp.addRowDragging');\n return;\n }\n if (this.beans.gridOptionsWrapper.isPagination()) {\n utils_1._.doOnce(function () { return console.warn('ag-Grid: row dragging is not possible when doing pagination'); }, 'CellComp.addRowDragging');\n return;\n }\n var rowDraggingComp = new rowDragComp_1.RowDragComp(this.rowNode, this.column, this.getValueToUse(), this.beans);\n this.addFeature(this.beans.context, rowDraggingComp);\n // let visibleFunc = this.getComponentHolder().checkboxSelection;\n // visibleFunc = typeof visibleFunc === 'function' ? visibleFunc : null;\n // cbSelectionComponent.init({rowNode: this.rowNode, column: this.column, visibleFunc: visibleFunc});\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(rowDraggingComp.getGui(), this.eParentOfValue);\n };\n CellComp.prototype.addSelectionCheckbox = function () {\n var cbSelectionComponent = new checkboxSelectionComponent_1.CheckboxSelectionComponent();\n this.beans.context.wireBean(cbSelectionComponent);\n var visibleFunc = this.getComponentHolder().checkboxSelection;\n visibleFunc = typeof visibleFunc === 'function' ? visibleFunc : null;\n cbSelectionComponent.init({ rowNode: this.rowNode, column: this.column, visibleFunc: visibleFunc });\n this.addDestroyFunc(function () { return cbSelectionComponent.destroy(); });\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(cbSelectionComponent.getGui(), this.eParentOfValue);\n };\n CellComp.prototype.addDomData = function () {\n var _this = this;\n var element = this.getGui();\n this.beans.gridOptionsWrapper.setDomData(element, CellComp.DOM_DATA_KEY_CELL_COMP, this);\n this.addDestroyFunc(function () {\n return _this.beans.gridOptionsWrapper.setDomData(element, CellComp.DOM_DATA_KEY_CELL_COMP, null);\n });\n };\n CellComp.prototype.onCellFocused = function (event) {\n var cellFocused = this.beans.focusedCellController.isCellFocused(this.gridCell);\n // see if we need to change the classes on this cell\n if (cellFocused !== this.cellFocused) {\n // if we are not doing cell selection, then the focus class does not change\n var doingFocusCss = !this.beans.gridOptionsWrapper.isSuppressCellSelection();\n if (doingFocusCss) {\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-cell-focus', cellFocused);\n }\n this.cellFocused = cellFocused;\n }\n // if this cell was just focused, see if we need to force browser focus, his can\n // happen if focus is programmatically set.\n if (cellFocused && event && event.forceBrowserFocus) {\n var eGui = this.getGui();\n eGui.focus();\n utils_1._.doIeFocusHack(eGui);\n }\n // if another cell was focused, and we are editing, then stop editing\n var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n if (!cellFocused && !fullRowEdit && this.editingCell) {\n this.stopRowOrCellEdit();\n }\n };\n // pass in 'true' to cancel the editing.\n CellComp.prototype.stopRowOrCellEdit = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n this.rowComp.stopRowEditing(cancel);\n }\n else {\n this.stopEditing(cancel);\n }\n };\n CellComp.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (!this.editingCell) {\n return;\n }\n // if no cell editor, this means due to async, that the cell editor never got initialised,\n // so we just carry on regardless as if the editing was never started.\n if (!this.cellEditor) {\n this.editingCell = false;\n return;\n }\n var newValueExists = false;\n var newValue;\n if (!cancel) {\n // also have another option here to cancel after editing, so for example user could have a popup editor and\n // it is closed by user clicking outside the editor. then the editor will close automatically (with false\n // passed above) and we need to see if the editor wants to accept the new value.\n var userWantsToCancel = this.cellEditor.isCancelAfterEnd && this.cellEditor.isCancelAfterEnd();\n if (!userWantsToCancel) {\n newValue = this.cellEditor.getValue();\n newValueExists = true;\n }\n }\n // it is important we set this after setValue() above, as otherwise the cell will flash\n // when editing stops. the 'refresh' method checks editing, and doesn't refresh editing cells.\n // thus it will skip the refresh on this cell until the end of this method where we call\n // refresh directly and we suppress the flash.\n this.editingCell = false;\n if (this.cellEditor.destroy) {\n this.cellEditor.destroy();\n }\n // important to clear this out - as parts of the code will check for\n // this to see if an async cellEditor has yet to be created\n this.cellEditor = null;\n if (this.cellEditorInPopup && this.hideEditorPopup) {\n this.hideEditorPopup();\n this.hideEditorPopup = null;\n }\n else {\n utils_1._.clearElement(this.getGui());\n // put the cell back the way it was before editing\n if (this.usingWrapper) {\n // if wrapper, then put the wrapper back\n this.getGui().appendChild(this.eCellWrapper);\n }\n else {\n // if cellRenderer, then put the gui back in. if the renderer has\n // a refresh, it will be called. however if it doesn't, then later\n // the renderer will be destroyed and a new one will be created.\n if (this.cellRenderer) {\n // we know it's a dom element (not a string) because we converted\n // it after the gui was attached if it was a string.\n var eCell = this.cellRendererGui;\n // can be null if cell was previously null / contained empty string,\n // this will result in new value not being rendered.\n if (eCell) {\n this.getGui().appendChild(eCell);\n }\n }\n }\n }\n this.setInlineEditingClass();\n if (newValueExists) {\n // we suppressRefreshCell because the call to rowNode.setDataValue() results in change detection\n // getting triggered, which results in all cells getting refreshed. we do not want this refresh\n // to happen on this call as we want to call it explicitly below. otherwise refresh gets called twice.\n // if we only did this refresh (and not the one below) then the cell would flash and not be forced.\n this.suppressRefreshCell = true;\n this.rowNode.setDataValue(this.column, newValue);\n this.suppressRefreshCell = false;\n }\n // we suppress the flash, as it is not correct to flash the cell the user has finished editing,\n // the user doesn't need to flash as they were the one who did the edit, the flash is pointless\n // (as the flash is meant to draw the user to a change that they didn't manually do themselves).\n this.refreshCell({ forceRefresh: true, suppressFlash: true });\n var event = this.createEvent(null, events_1.Events.EVENT_CELL_EDITING_STOPPED);\n this.beans.eventService.dispatchEvent(event);\n };\n CellComp.DOM_DATA_KEY_CELL_COMP = 'cellComp';\n CellComp.CELL_RENDERER_TYPE_NORMAL = 'cellRenderer';\n CellComp.CELL_RENDERER_TYPE_PINNED = 'pinnedRowCellRenderer';\n return CellComp;\n}(component_1.Component));\nexports.CellComp = CellComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar utils_1 = require(\"./utils\");\nvar MAT_GRID_SIZE = 8;\nvar FRESH_GRID_SIZE = 4;\nvar BALHAM_GRID_SIZE = 4;\nvar HARD_CODED_SIZES = {\n 'ag-theme-material': {\n headerHeight: MAT_GRID_SIZE * 7,\n virtualItemHeight: MAT_GRID_SIZE * 5,\n rowHeight: MAT_GRID_SIZE * 6\n },\n 'ag-theme-classic': {\n headerHeight: 25,\n virtualItemHeight: FRESH_GRID_SIZE * 5,\n rowHeight: 25\n },\n 'ag-theme-balham': {\n headerHeight: BALHAM_GRID_SIZE * 8,\n virtualItemHeight: BALHAM_GRID_SIZE * 7,\n rowHeight: BALHAM_GRID_SIZE * 7\n }\n};\nvar Environment = /** @class */ (function () {\n function Environment() {\n }\n Environment.prototype.getSassVariable = function (theme, key) {\n if (theme == 'ag-theme-material') {\n return HARD_CODED_SIZES['ag-theme-material'][key];\n }\n else if (theme == 'ag-theme-balham' || theme == 'ag-theme-balham-dark') {\n return HARD_CODED_SIZES['ag-theme-balham'][key];\n }\n return HARD_CODED_SIZES['ag-theme-classic'][key];\n };\n Environment.prototype.getTheme = function () {\n var reg = /\\bag-(fresh|dark|blue|material|bootstrap|(?:theme-([\\w\\-]*)))\\b/;\n var el = this.eGridDiv;\n var themeMatch;\n while (el) {\n themeMatch = reg.exec(el.className);\n el = el.parentElement;\n if (el == null || themeMatch) {\n break;\n }\n }\n if (!themeMatch) {\n return;\n }\n var theme = themeMatch[0];\n var usingOldTheme = themeMatch[2] === undefined;\n if (usingOldTheme) {\n var newTheme_1 = theme.replace('ag-', 'ag-theme-');\n utils_1._.doOnce(function () { return console.warn(\"ag-Grid: As of v19 old theme are no longer provided. Please replace \" + theme + \" with \" + newTheme_1 + \".\"); }, 'using-old-theme');\n }\n return theme;\n };\n __decorate([\n context_1.Autowired('eGridDiv'),\n __metadata(\"design:type\", HTMLElement)\n ], Environment.prototype, \"eGridDiv\", void 0);\n Environment = __decorate([\n context_1.Bean('environment')\n ], Environment);\n return Environment;\n}());\nexports.Environment = Environment;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"../../constants\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar columnApi_1 = require(\"../../columnController/columnApi\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar filterManager_1 = require(\"../../filter/filterManager\");\nvar rowNode_1 = require(\"../../entities/rowNode\");\nvar eventService_1 = require(\"../../eventService\");\nvar events_1 = require(\"../../events\");\nvar context_1 = require(\"../../context/context\");\nvar selectionController_1 = require(\"../../selectionController\");\nvar clientSideNodeManager_1 = require(\"./clientSideNodeManager\");\nvar changedPath_1 = require(\"./changedPath\");\nvar valueService_1 = require(\"../../valueService/valueService\");\nvar valueCache_1 = require(\"../../valueService/valueCache\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar utils_1 = require(\"../../utils\");\nvar RecursionType;\n(function (RecursionType) {\n RecursionType[RecursionType[\"Normal\"] = 0] = \"Normal\";\n RecursionType[RecursionType[\"AfterFilter\"] = 1] = \"AfterFilter\";\n RecursionType[RecursionType[\"AfterFilterAndSort\"] = 2] = \"AfterFilterAndSort\";\n RecursionType[RecursionType[\"PivotNodes\"] = 3] = \"PivotNodes\";\n})(RecursionType || (RecursionType = {}));\nvar ClientSideRowModel = /** @class */ (function () {\n function ClientSideRowModel() {\n }\n ClientSideRowModel.prototype.init = function () {\n var refreshEverythingFunc = this.refreshModel.bind(this, { step: constants_1.Constants.STEP_EVERYTHING });\n var refreshEverythingAfterColsChangedFunc = this.refreshModel.bind(this, { step: constants_1.Constants.STEP_EVERYTHING, afterColumnsChanged: true });\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, refreshEverythingAfterColsChangedFunc);\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, refreshEverythingFunc);\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_PIVOT_CHANGED, this.refreshModel.bind(this, { step: constants_1.Constants.STEP_PIVOT }));\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_ROW_GROUP_OPENED, this.onRowGroupOpened.bind(this));\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, refreshEverythingFunc);\n var refreshMapFunc = this.refreshModel.bind(this, {\n step: constants_1.Constants.STEP_MAP,\n keepRenderedRows: true,\n animate: true\n });\n this.gridOptionsWrapper.addEventListener(gridOptionsWrapper_1.GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN, refreshMapFunc);\n this.gridOptionsWrapper.addEventListener(gridOptionsWrapper_1.GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, refreshMapFunc);\n this.rootNode = new rowNode_1.RowNode();\n this.nodeManager = new clientSideNodeManager_1.ClientSideNodeManager(this.rootNode, this.gridOptionsWrapper, this.context, this.eventService, this.columnController, this.gridApi, this.columnApi, this.selectionController);\n this.context.wireBean(this.rootNode);\n };\n ClientSideRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n var atLeastOneChange;\n var res = false;\n // we do this multiple times as changing the row heights can also change the first and last rows,\n // so the first pass can make lots of rows smaller, which means the second pass we end up changing\n // more rows.\n do {\n atLeastOneChange = false;\n var rowAtStartPixel = this.getRowIndexAtPixel(startPixel);\n var rowAtEndPixel = this.getRowIndexAtPixel(endPixel);\n // keep check to current page if doing pagination\n var firstRow = Math.max(rowAtStartPixel, startLimitIndex);\n var lastRow = Math.min(rowAtEndPixel, endLimitIndex);\n for (var rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {\n var rowNode = this.getRow(rowIndex);\n if (rowNode.rowHeightEstimated) {\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode);\n rowNode.setRowHeight(rowHeight.height);\n atLeastOneChange = true;\n res = true;\n }\n }\n if (atLeastOneChange) {\n this.setRowTops();\n }\n } while (atLeastOneChange);\n return res;\n };\n ClientSideRowModel.prototype.setRowTops = function () {\n var nextRowTop = 0;\n for (var i = 0; i < this.rowsToDisplay.length; i++) {\n // we don't estimate if doing fullHeight or autoHeight, as all rows get rendered all the time\n // with these two layouts.\n var allowEstimate = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_NORMAL;\n var rowNode = this.rowsToDisplay[i];\n if (utils_1._.missing(rowNode.rowHeight)) {\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode, allowEstimate);\n rowNode.setRowHeight(rowHeight.height, rowHeight.estimated);\n }\n rowNode.setRowTop(nextRowTop);\n rowNode.setRowIndex(i);\n nextRowTop += rowNode.rowHeight;\n }\n };\n ClientSideRowModel.prototype.resetRowTops = function (rowNode, changedPath) {\n rowNode.clearRowTop();\n if (rowNode.hasChildren()) {\n if (rowNode.childrenAfterGroup) {\n // if a changedPath is active, it means we are here because of a transaction update or\n // a change detection. neither of these impacts the open/closed state of groups. so if\n // a group is not open this time, it was not open last time. so we know all closed groups\n // already have their top positions cleared. so there is no need to traverse all the way\n // when changedPath is active and the rowNode is not expanded.\n var skipChildren = changedPath.isActive() && !rowNode.expanded;\n if (!skipChildren) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n this.resetRowTops(rowNode.childrenAfterGroup[i], changedPath);\n }\n }\n }\n if (rowNode.sibling) {\n rowNode.sibling.clearRowTop();\n }\n }\n if (rowNode.detailNode) {\n rowNode.detailNode.clearRowTop();\n }\n };\n // returns false if row was moved, otherwise true\n ClientSideRowModel.prototype.ensureRowAtPixel = function (rowNode, pixel) {\n var indexAtPixelNow = this.getRowIndexAtPixel(pixel);\n var rowNodeAtPixelNow = this.getRow(indexAtPixelNow);\n if (rowNodeAtPixelNow === rowNode) {\n return false;\n }\n utils_1._.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n utils_1._.insertIntoArray(this.rootNode.allLeafChildren, rowNode, indexAtPixelNow);\n this.refreshModel({\n step: constants_1.Constants.STEP_EVERYTHING,\n keepRenderedRows: true,\n animate: true,\n keepEditingRows: true\n });\n return true;\n };\n ClientSideRowModel.prototype.isLastRowFound = function () {\n return true;\n };\n ClientSideRowModel.prototype.getRowCount = function () {\n if (this.rowsToDisplay) {\n return this.rowsToDisplay.length;\n }\n else {\n return 0;\n }\n };\n ClientSideRowModel.prototype.getRowBounds = function (index) {\n if (utils_1._.missing(this.rowsToDisplay)) {\n return null;\n }\n var rowNode = this.rowsToDisplay[index];\n if (rowNode) {\n return {\n rowTop: rowNode.rowTop,\n rowHeight: rowNode.rowHeight\n };\n }\n else {\n return null;\n }\n };\n ClientSideRowModel.prototype.onRowGroupOpened = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: constants_1.Constants.STEP_MAP, keepRenderedRows: true, animate: animate });\n };\n ClientSideRowModel.prototype.onFilterChanged = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: constants_1.Constants.STEP_FILTER, keepRenderedRows: true, animate: animate });\n };\n ClientSideRowModel.prototype.onSortChanged = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: constants_1.Constants.STEP_SORT, keepRenderedRows: true, animate: animate, keepEditingRows: true });\n };\n ClientSideRowModel.prototype.getType = function () {\n return constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n };\n ClientSideRowModel.prototype.onValueChanged = function () {\n if (this.columnController.isPivotActive()) {\n this.refreshModel({ step: constants_1.Constants.STEP_PIVOT });\n }\n else {\n this.refreshModel({ step: constants_1.Constants.STEP_AGGREGATE });\n }\n };\n ClientSideRowModel.prototype.createChangePath = function (rowNodeTransactions) {\n // for updates, if the row is updated at all, then we re-calc all the values\n // in that row. we could compare each value to each old value, however if we\n // did this, we would be calling the valueService twice, once on the old value\n // and once on the new value. so it's less valueGetter calls if we just assume\n // each column is different. that way the changedPath is used so that only\n // the impacted parent rows are recalculated, parents who's children have\n // not changed are not impacted.\n var noTransactions = utils_1._.missingOrEmpty(rowNodeTransactions);\n var changedPath = new changedPath_1.ChangedPath(false, this.rootNode);\n if (noTransactions || this.gridOptionsWrapper.isTreeData()) {\n changedPath.setInactive();\n }\n return changedPath;\n };\n ClientSideRowModel.prototype.refreshModel = function (params) {\n // this goes through the pipeline of stages. what's in my head is similar\n // to the diagram on this page:\n // http://commons.apache.org/sandbox/commons-pipeline/pipeline_basics.html\n // however we want to keep the results of each stage, hence we manually call\n // each step rather than have them chain each other.\n var _this = this;\n // fallthrough in below switch is on purpose,\n // eg if STEP_FILTER, then all steps below this\n // step get done\n // let start: number;\n // console.log('======= start =======');\n var changedPath = this.createChangePath(params.rowNodeTransactions);\n switch (params.step) {\n case constants_1.Constants.STEP_EVERYTHING:\n // start = new Date().getTime();\n this.doRowGrouping(params.groupState, params.rowNodeTransactions, params.rowNodeOrder, changedPath, params.afterColumnsChanged);\n // console.log('rowGrouping = ' + (new Date().getTime() - start));\n case constants_1.Constants.STEP_FILTER:\n // start = new Date().getTime();\n this.doFilter(changedPath);\n // console.log('filter = ' + (new Date().getTime() - start));\n case constants_1.Constants.STEP_PIVOT:\n this.doPivot(changedPath);\n case constants_1.Constants.STEP_AGGREGATE: // depends on agg fields\n // start = new Date().getTime();\n this.doAggregate(changedPath);\n // console.log('aggregation = ' + (new Date().getTime() - start));\n case constants_1.Constants.STEP_SORT:\n // start = new Date().getTime();\n this.doSort(params.rowNodeTransactions, changedPath);\n // console.log('sort = ' + (new Date().getTime() - start));\n case constants_1.Constants.STEP_MAP:\n // start = new Date().getTime();\n this.doRowsToDisplay();\n // console.log('rowsToDisplay = ' + (new Date().getTime() - start));\n }\n // set all row tops to null, then set row tops on all visible rows. if we don't\n // do this, then the algorithm below only sets row tops, old row tops from old rows\n // will still lie around\n this.resetRowTops(this.rootNode, changedPath);\n this.setRowTops();\n var event = {\n type: events_1.Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: params.animate,\n keepRenderedRows: params.keepRenderedRows,\n newData: params.newData,\n newPage: false\n };\n this.eventService.dispatchEvent(event);\n if (this.$scope) {\n window.setTimeout(function () {\n _this.$scope.$apply();\n }, 0);\n }\n };\n ClientSideRowModel.prototype.isEmpty = function () {\n var rowsMissing;\n var doingLegacyTreeData = utils_1._.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n if (doingLegacyTreeData) {\n rowsMissing = utils_1._.missing(this.rootNode.childrenAfterGroup) || this.rootNode.childrenAfterGroup.length === 0;\n }\n else {\n rowsMissing = utils_1._.missing(this.rootNode.allLeafChildren) || this.rootNode.allLeafChildren.length === 0;\n }\n var empty = utils_1._.missing(this.rootNode) || rowsMissing || !this.columnController.isReady();\n return empty;\n };\n ClientSideRowModel.prototype.isRowsToRender = function () {\n return utils_1._.exists(this.rowsToDisplay) && this.rowsToDisplay.length > 0;\n };\n ClientSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n // if lastSelectedNode is missing, we start at the first row\n var firstRowHit = !lastInRange;\n var lastRowHit = false;\n var lastRow;\n var result = [];\n var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.forEachNodeAfterFilterAndSort(function (rowNode) {\n var lookingForLastRow = firstRowHit && !lastRowHit;\n // check if we need to flip the select switch\n if (!firstRowHit) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n firstRowHit = true;\n }\n }\n var skipThisGroupNode = rowNode.group && groupsSelectChildren;\n if (!skipThisGroupNode) {\n var inRange = firstRowHit && !lastRowHit;\n var childOfLastRow = rowNode.isParentOfNode(lastRow);\n if (inRange || childOfLastRow) {\n result.push(rowNode);\n }\n }\n if (lookingForLastRow) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n lastRowHit = true;\n if (rowNode === lastInRange) {\n lastRow = lastInRange;\n }\n else {\n lastRow = firstInRange;\n }\n }\n }\n });\n return result;\n };\n ClientSideRowModel.prototype.setDatasource = function (datasource) {\n console.error('ag-Grid: should never call setDatasource on clientSideRowController');\n };\n ClientSideRowModel.prototype.getTopLevelNodes = function () {\n return this.rootNode ? this.rootNode.childrenAfterGroup : null;\n };\n ClientSideRowModel.prototype.getRootNode = function () {\n return this.rootNode;\n };\n ClientSideRowModel.prototype.getRow = function (index) {\n return this.rowsToDisplay[index];\n };\n ClientSideRowModel.prototype.isRowPresent = function (rowNode) {\n return this.rowsToDisplay.indexOf(rowNode) >= 0;\n };\n ClientSideRowModel.prototype.getVirtualRowCount = function () {\n console.warn('ag-Grid: rowModel.getVirtualRowCount() is not longer a function, use rowModel.getRowCount() instead');\n return this.getPageLastRow();\n };\n ClientSideRowModel.prototype.getPageFirstRow = function () {\n return 0;\n };\n ClientSideRowModel.prototype.getPageLastRow = function () {\n if (this.rowsToDisplay) {\n return this.rowsToDisplay.length - 1;\n }\n else {\n return 0;\n }\n };\n ClientSideRowModel.prototype.getRowIndexAtPixel = function (pixelToMatch) {\n if (this.isEmpty()) {\n return -1;\n }\n // do binary search of tree\n // http://oli.me.uk/2013/06/08/searching-javascript-arrays-with-a-binary-search/\n var bottomPointer = 0;\n var topPointer = this.rowsToDisplay.length - 1;\n // quick check, if the pixel is out of bounds, then return last row\n if (pixelToMatch <= 0) {\n // if pixel is less than or equal zero, it's always the first row\n return 0;\n }\n var lastNode = this.rowsToDisplay[this.rowsToDisplay.length - 1];\n if (lastNode.rowTop <= pixelToMatch) {\n return this.rowsToDisplay.length - 1;\n }\n while (true) {\n var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n var currentRowNode = this.rowsToDisplay[midPointer];\n if (this.isRowInPixel(currentRowNode, pixelToMatch)) {\n return midPointer;\n }\n else if (currentRowNode.rowTop < pixelToMatch) {\n bottomPointer = midPointer + 1;\n }\n else if (currentRowNode.rowTop > pixelToMatch) {\n topPointer = midPointer - 1;\n }\n }\n };\n ClientSideRowModel.prototype.isRowInPixel = function (rowNode, pixelToMatch) {\n var topPixel = rowNode.rowTop;\n var bottomPixel = rowNode.rowTop + rowNode.rowHeight;\n var pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;\n return pixelInRow;\n };\n ClientSideRowModel.prototype.getCurrentPageHeight = function () {\n if (this.rowsToDisplay && this.rowsToDisplay.length > 0) {\n var lastRow = this.rowsToDisplay[this.rowsToDisplay.length - 1];\n var lastPixel = lastRow.rowTop + lastRow.rowHeight;\n return lastPixel;\n }\n else {\n return 0;\n }\n };\n ClientSideRowModel.prototype.forEachLeafNode = function (callback) {\n if (this.rootNode.allLeafChildren) {\n this.rootNode.allLeafChildren.forEach(function (rowNode, index) { return callback(rowNode, index); });\n }\n };\n ClientSideRowModel.prototype.forEachNode = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterGroup, callback, RecursionType.Normal, 0);\n };\n ClientSideRowModel.prototype.forEachNodeAfterFilter = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterFilter, callback, RecursionType.AfterFilter, 0);\n };\n ClientSideRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterSort, callback, RecursionType.AfterFilterAndSort, 0);\n };\n ClientSideRowModel.prototype.forEachPivotNode = function (callback) {\n this.recursivelyWalkNodesAndCallback([this.rootNode], callback, RecursionType.PivotNodes, 0);\n };\n // iterates through each item in memory, and calls the callback function\n // nodes - the rowNodes to traverse\n // callback - the user provided callback\n // recursion type - need this to know what child nodes to recurse, eg if looking at all nodes, or filtered notes etc\n // index - works similar to the index in forEach in javascript's array function\n ClientSideRowModel.prototype.recursivelyWalkNodesAndCallback = function (nodes, callback, recursionType, index) {\n if (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n callback(node, index++);\n // go to the next level if it is a group\n if (node.hasChildren()) {\n // depending on the recursion type, we pick a difference set of children\n var nodeChildren = null;\n switch (recursionType) {\n case RecursionType.Normal:\n nodeChildren = node.childrenAfterGroup;\n break;\n case RecursionType.AfterFilter:\n nodeChildren = node.childrenAfterFilter;\n break;\n case RecursionType.AfterFilterAndSort:\n nodeChildren = node.childrenAfterSort;\n break;\n case RecursionType.PivotNodes:\n // for pivot, we don't go below leafGroup levels\n nodeChildren = !node.leafGroup ? node.childrenAfterSort : null;\n break;\n }\n if (nodeChildren) {\n index = this.recursivelyWalkNodesAndCallback(nodeChildren, callback, recursionType, index);\n }\n }\n }\n }\n return index;\n };\n // it's possible to recompute the aggregate without doing the other parts\n // + gridApi.recomputeAggregates()\n ClientSideRowModel.prototype.doAggregate = function (changedPath) {\n if (this.aggregationStage) {\n this.aggregationStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n };\n // + gridApi.expandAll()\n // + gridApi.collapseAll()\n ClientSideRowModel.prototype.expandOrCollapseAll = function (expand) {\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n if (this.rootNode) {\n recursiveExpandOrCollapse(this.rootNode.childrenAfterGroup);\n }\n function recursiveExpandOrCollapse(rowNodes) {\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var shouldExpandOrCollapse = usingTreeData ? utils_1._.exists(rowNode.childrenAfterGroup) : rowNode.group;\n if (shouldExpandOrCollapse) {\n rowNode.expanded = expand;\n recursiveExpandOrCollapse(rowNode.childrenAfterGroup);\n }\n });\n }\n this.refreshModel({ step: constants_1.Constants.STEP_MAP });\n var eventSource = expand ? 'expandAll' : 'collapseAll';\n var event = {\n api: this.gridApi,\n columnApi: this.columnApi,\n type: events_1.Events.EVENT_EXPAND_COLLAPSE_ALL,\n source: eventSource\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.doSort = function (rowNodeTransactions, changedPath) {\n this.sortStage.execute({\n rowNode: this.rootNode,\n rowNodeTransactions: rowNodeTransactions,\n changedPath: changedPath\n });\n };\n ClientSideRowModel.prototype.doRowGrouping = function (groupState, rowNodeTransactions, rowNodeOrder, changedPath, afterColumnsChanged) {\n var _this = this;\n // grouping is enterprise only, so if service missing, skip the step\n var doingLegacyTreeData = utils_1._.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n if (doingLegacyTreeData) {\n return;\n }\n if (this.groupStage) {\n if (rowNodeTransactions && utils_1._.exists(rowNodeTransactions)) {\n rowNodeTransactions.forEach(function (tran) {\n _this.groupStage.execute({\n rowNode: _this.rootNode,\n rowNodeTransaction: tran,\n rowNodeOrder: rowNodeOrder,\n changedPath: changedPath\n });\n });\n }\n else {\n // groups are about to get disposed, so need to deselect any that are selected\n this.selectionController.removeGroupsFromSelection();\n this.groupStage.execute({\n rowNode: this.rootNode,\n changedPath: changedPath,\n afterColumnsChanged: afterColumnsChanged\n });\n // set open/closed state on groups\n this.restoreGroupState(groupState);\n }\n if (this.gridOptionsWrapper.isGroupSelectsChildren()) {\n this.selectionController.updateGroupsFromChildrenSelections(changedPath);\n }\n }\n else {\n this.rootNode.childrenAfterGroup = this.rootNode.allLeafChildren;\n }\n };\n ClientSideRowModel.prototype.restoreGroupState = function (groupState) {\n if (!groupState) {\n return;\n }\n utils_1._.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) {\n // if the group was open last time, then open it this time. however\n // if was not open last time, then don't touch the group, so the 'groupDefaultExpanded'\n // setting will take effect.\n if (typeof groupState[key] === 'boolean') {\n node.expanded = groupState[key];\n }\n });\n };\n ClientSideRowModel.prototype.doFilter = function (changedPath) {\n this.filterStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n };\n ClientSideRowModel.prototype.doPivot = function (changedPath) {\n if (this.pivotStage) {\n this.pivotStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n };\n ClientSideRowModel.prototype.getGroupState = function () {\n if (!this.rootNode.childrenAfterGroup || !this.gridOptionsWrapper.isRememberGroupStateWhenNewData()) {\n return null;\n }\n var result = {};\n utils_1._.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) { return result[key] = node.expanded; });\n return result;\n };\n ClientSideRowModel.prototype.getCopyOfNodesMap = function () {\n return this.nodeManager.getCopyOfNodesMap();\n };\n ClientSideRowModel.prototype.getRowNode = function (id) {\n return this.nodeManager.getRowNode(id);\n };\n // rows: the rows to put into the model\n ClientSideRowModel.prototype.setRowData = function (rowData) {\n // no need to invalidate cache, as the cache is stored on the rowNode,\n // so new rowNodes means the cache is wiped anyway.\n // remember group state, so we can expand groups that should be expanded\n var groupState = this.getGroupState();\n this.nodeManager.setRowData(rowData);\n // this event kicks off:\n // - clears selection\n // - updates filters\n // - shows 'no rows' overlay if needed\n var rowDataChangedEvent = {\n type: events_1.Events.EVENT_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(rowDataChangedEvent);\n this.refreshModel({\n step: constants_1.Constants.STEP_EVERYTHING,\n groupState: groupState,\n newData: true\n });\n };\n ClientSideRowModel.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {\n var _this = this;\n if (!this.rowDataTransactionBatch) {\n this.rowDataTransactionBatch = [];\n var waitMillis = this.gridOptionsWrapper.getBatchUpdateWaitMillis();\n window.setTimeout(function () {\n _this.executeBatchUpdateRowData();\n _this.rowDataTransactionBatch = null;\n }, waitMillis);\n }\n this.rowDataTransactionBatch.push({ rowDataTransaction: rowDataTransaction, callback: callback });\n };\n ClientSideRowModel.prototype.executeBatchUpdateRowData = function () {\n var _this = this;\n this.valueCache.onDataChanged();\n var callbackFuncsBound = [];\n var rowNodeTrans = [];\n if (this.rowDataTransactionBatch) {\n this.rowDataTransactionBatch.forEach(function (tranItem) {\n var rowNodeTran = _this.nodeManager.updateRowData(tranItem.rowDataTransaction, null);\n rowNodeTrans.push(rowNodeTran);\n if (tranItem.callback) {\n callbackFuncsBound.push(tranItem.callback.bind(rowNodeTran));\n }\n });\n }\n this.commonUpdateRowData(rowNodeTrans);\n // do callbacks in next VM turn so it's async\n if (callbackFuncsBound.length > 0) {\n window.setTimeout(function () {\n callbackFuncsBound.forEach(function (func) { return func(); });\n }, 0);\n }\n };\n ClientSideRowModel.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n this.valueCache.onDataChanged();\n var rowNodeTran = this.nodeManager.updateRowData(rowDataTran, rowNodeOrder);\n this.commonUpdateRowData([rowNodeTran], rowNodeOrder);\n return rowNodeTran;\n };\n // common to updateRowData and batchUpdateRowData\n ClientSideRowModel.prototype.commonUpdateRowData = function (rowNodeTrans, rowNodeOrder) {\n this.refreshModel({\n step: constants_1.Constants.STEP_EVERYTHING,\n rowNodeTransactions: rowNodeTrans,\n rowNodeOrder: rowNodeOrder,\n keepRenderedRows: true,\n animate: true,\n keepEditingRows: true\n });\n var event = {\n type: events_1.Events.EVENT_ROW_DATA_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.doRowsToDisplay = function () {\n this.rowsToDisplay = this.flattenStage.execute({ rowNode: this.rootNode });\n };\n ClientSideRowModel.prototype.onRowHeightChanged = function () {\n this.refreshModel({ step: constants_1.Constants.STEP_MAP, keepRenderedRows: true, keepEditingRows: true });\n };\n ClientSideRowModel.prototype.resetRowHeights = function () {\n this.forEachNode(function (rowNode) { return rowNode.setRowHeight(null); });\n this.onRowHeightChanged();\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ClientSideRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], ClientSideRowModel.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('filterManager'),\n __metadata(\"design:type\", filterManager_1.FilterManager)\n ], ClientSideRowModel.prototype, \"filterManager\", void 0);\n __decorate([\n context_1.Autowired('$scope'),\n __metadata(\"design:type\", Object)\n ], ClientSideRowModel.prototype, \"$scope\", void 0);\n __decorate([\n context_1.Autowired('selectionController'),\n __metadata(\"design:type\", selectionController_1.SelectionController)\n ], ClientSideRowModel.prototype, \"selectionController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], ClientSideRowModel.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], ClientSideRowModel.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired('valueService'),\n __metadata(\"design:type\", valueService_1.ValueService)\n ], ClientSideRowModel.prototype, \"valueService\", void 0);\n __decorate([\n context_1.Autowired('valueCache'),\n __metadata(\"design:type\", valueCache_1.ValueCache)\n ], ClientSideRowModel.prototype, \"valueCache\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], ClientSideRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], ClientSideRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('filterStage'),\n __metadata(\"design:type\", Object)\n ], ClientSideRowModel.prototype, \"filterStage\", void 0);\n __decorate([\n context_1.Autowired('sortStage'),\n __metadata(\"design:type\", Object)\n ], ClientSideRowModel.prototype, \"sortStage\", void 0);\n __decorate([\n context_1.Autowired('flattenStage'),\n __metadata(\"design:type\", Object)\n ], ClientSideRowModel.prototype, \"flattenStage\", void 0);\n __decorate([\n context_1.Optional('groupStage'),\n __metadata(\"design:type\", Object)\n ], ClientSideRowModel.prototype, \"groupStage\", void 0);\n __decorate([\n context_1.Optional('aggregationStage'),\n __metadata(\"design:type\", Object)\n ], ClientSideRowModel.prototype, \"aggregationStage\", void 0);\n __decorate([\n context_1.Optional('pivotStage'),\n __metadata(\"design:type\", Object)\n ], ClientSideRowModel.prototype, \"pivotStage\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ClientSideRowModel.prototype, \"init\", null);\n ClientSideRowModel = __decorate([\n context_1.Bean('rowModel')\n ], ClientSideRowModel);\n return ClientSideRowModel;\n}());\nexports.ClientSideRowModel = ClientSideRowModel;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar TemplateService = /** @class */ (function () {\n function TemplateService() {\n this.templateCache = {};\n this.waitingCallbacks = {};\n }\n // returns the template if it is loaded, or null if it is not loaded\n // but will call the callback when it is loaded\n TemplateService.prototype.getTemplate = function (url, callback) {\n var templateFromCache = this.templateCache[url];\n if (templateFromCache) {\n return templateFromCache;\n }\n var callbackList = this.waitingCallbacks[url];\n var that = this;\n if (!callbackList) {\n // first time this was called, so need a new list for callbacks\n callbackList = [];\n this.waitingCallbacks[url] = callbackList;\n // and also need to do the http request\n var client = new XMLHttpRequest();\n client.onload = function () {\n that.handleHttpResult(this, url);\n };\n client.open(\"GET\", url);\n client.send();\n }\n // add this callback\n if (callback) {\n callbackList.push(callback);\n }\n // caller needs to wait for template to load, so return null\n return null;\n };\n TemplateService.prototype.handleHttpResult = function (httpResult, url) {\n if (httpResult.status !== 200 || httpResult.response === null) {\n console.warn(\"Unable to get template error \" + httpResult.status + \" - \" + url);\n return;\n }\n // response success, so process it\n // in IE9 the response is in - responseText\n this.templateCache[url] = httpResult.response || httpResult.responseText;\n // inform all listeners that this is now in the cache\n var callbacks = this.waitingCallbacks[url];\n for (var i = 0; i < callbacks.length; i++) {\n var callback = callbacks[i];\n // we could pass the callback the response, however we know the client of this code\n // is the cell renderer, and it passes the 'cellRefresh' method in as the callback\n // which doesn't take any parameters.\n callback();\n }\n if (this.$scope) {\n var that_1 = this;\n window.setTimeout(function () {\n that_1.$scope.$apply();\n }, 0);\n }\n };\n __decorate([\n context_2.Autowired('$scope'),\n __metadata(\"design:type\", Object)\n ], TemplateService.prototype, \"$scope\", void 0);\n TemplateService = __decorate([\n context_1.Bean('templateService')\n ], TemplateService);\n return TemplateService;\n}());\nexports.TemplateService = TemplateService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar eventService_1 = require(\"./eventService\");\nvar logger_1 = require(\"./logger\");\nvar events_1 = require(\"./events\");\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar context_3 = require(\"./context/context\");\nvar context_4 = require(\"./context/context\");\nvar AlignedGridsService = /** @class */ (function () {\n function AlignedGridsService() {\n // flag to mark if we are consuming. to avoid cyclic events (ie other grid firing back to master\n // while processing a master event) we mark this if consuming an event, and if we are, then\n // we don't fire back any events.\n this.consuming = false;\n }\n AlignedGridsService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('AlignedGridsService');\n };\n AlignedGridsService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n AlignedGridsService.prototype.init = function () {\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_MOVED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_VISIBLE, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_PINNED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_GROUP_OPENED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_RESIZED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_BODY_SCROLL, this.fireScrollEvent.bind(this));\n };\n // common logic across all the fire methods\n AlignedGridsService.prototype.fireEvent = function (callback) {\n // if we are already consuming, then we are acting on an event from a master,\n // so we don't cause a cyclic firing of events\n if (this.consuming) {\n return;\n }\n // iterate through the aligned grids, and pass each aligned grid service to the callback\n var otherGrids = this.gridOptionsWrapper.getAlignedGrids();\n if (otherGrids) {\n otherGrids.forEach(function (otherGridOptions) {\n if (otherGridOptions.api) {\n var alignedGridService = otherGridOptions.api.__getAlignedGridService();\n callback(alignedGridService);\n }\n });\n }\n };\n // common logic across all consume methods. very little common logic, however extracting\n // guarantees consistency across the methods.\n AlignedGridsService.prototype.onEvent = function (callback) {\n this.consuming = true;\n callback();\n this.consuming = false;\n };\n AlignedGridsService.prototype.fireColumnEvent = function (event) {\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onColumnEvent(event);\n });\n };\n AlignedGridsService.prototype.fireScrollEvent = function (event) {\n if (event.direction !== 'horizontal') {\n return;\n }\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onScrollEvent(event);\n });\n };\n AlignedGridsService.prototype.onScrollEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n _this.gridPanel.setHorizontalScrollPosition(event.left);\n });\n };\n AlignedGridsService.prototype.getMasterColumns = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column);\n });\n }\n else if (event.column) {\n result.push(event.column);\n }\n return result;\n };\n AlignedGridsService.prototype.getColumnIds = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column.getColId());\n });\n }\n else if (event.column) {\n result.push(event.column.getColId());\n }\n return result;\n };\n AlignedGridsService.prototype.onColumnEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n switch (event.type) {\n case events_1.Events.EVENT_COLUMN_MOVED:\n case events_1.Events.EVENT_COLUMN_VISIBLE:\n case events_1.Events.EVENT_COLUMN_PINNED:\n case events_1.Events.EVENT_COLUMN_RESIZED:\n var colEvent = event;\n _this.processColumnEvent(colEvent);\n break;\n case events_1.Events.EVENT_COLUMN_GROUP_OPENED:\n var groupOpenedEvent = event;\n _this.processGroupOpenedEvent(groupOpenedEvent);\n break;\n case events_1.Events.EVENT_COLUMN_PIVOT_CHANGED:\n // we cannot support pivoting with aligned grids as the columns will be out of sync as the\n // grids will have columns created based on the row data of the grid.\n console.warn('ag-Grid: pivoting is not supported with aligned grids. ' +\n 'You can only use one of these features at a time in a grid.');\n break;\n }\n });\n };\n AlignedGridsService.prototype.processGroupOpenedEvent = function (groupOpenedEvent) {\n // likewise for column group\n var masterColumnGroup = groupOpenedEvent.columnGroup;\n var otherColumnGroup;\n if (masterColumnGroup) {\n var groupId = masterColumnGroup.getGroupId();\n otherColumnGroup = this.columnController.getOriginalColumnGroup(groupId);\n }\n if (masterColumnGroup && !otherColumnGroup) {\n return;\n }\n this.logger.log('onColumnEvent-> processing ' + groupOpenedEvent + ' expanded = ' + masterColumnGroup.isExpanded());\n this.columnController.setColumnGroupOpened(otherColumnGroup, masterColumnGroup.isExpanded(), \"alignedGridChanged\");\n };\n AlignedGridsService.prototype.processColumnEvent = function (colEvent) {\n var _this = this;\n // the column in the event is from the master grid. need to\n // look up the equivalent from this (other) grid\n var masterColumn = colEvent.column;\n var otherColumn;\n if (masterColumn) {\n otherColumn = this.columnController.getPrimaryColumn(masterColumn.getColId());\n }\n // if event was with respect to a master column, that is not present in this\n // grid, then we ignore the event\n if (masterColumn && !otherColumn) {\n return;\n }\n // in time, all the methods below should use the column ids, it's a more generic way\n // of handling columns, and also allows for single or multi column events\n var columnIds = this.getColumnIds(colEvent);\n var masterColumns = this.getMasterColumns(colEvent);\n switch (colEvent.type) {\n case events_1.Events.EVENT_COLUMN_MOVED:\n var movedEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" toIndex = \" + movedEvent.toIndex);\n this.columnController.moveColumns(columnIds, movedEvent.toIndex, \"alignedGridChanged\");\n break;\n case events_1.Events.EVENT_COLUMN_VISIBLE:\n var visibleEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" visible = \" + visibleEvent.visible);\n this.columnController.setColumnsVisible(columnIds, visibleEvent.visible, \"alignedGridChanged\");\n break;\n case events_1.Events.EVENT_COLUMN_PINNED:\n var pinnedEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" pinned = \" + pinnedEvent.pinned);\n this.columnController.setColumnsPinned(columnIds, pinnedEvent.pinned, \"alignedGridChanged\");\n break;\n case events_1.Events.EVENT_COLUMN_RESIZED:\n var resizedEvent_1 = colEvent;\n masterColumns.forEach(function (column) {\n _this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" actualWidth = \" + column.getActualWidth());\n _this.columnController.setColumnWidth(column.getColId(), column.getActualWidth(), false, resizedEvent_1.finished, \"alignedGridChanged\");\n });\n break;\n }\n var isVerticalScrollShowing = this.gridPanel.isVerticalScrollShowing();\n var alignedGrids = this.gridOptionsWrapper.getAlignedGrids();\n alignedGrids.forEach(function (grid) {\n grid.api.setAlwaysShowVerticalScroll(isVerticalScrollShowing);\n });\n };\n __decorate([\n context_3.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], AlignedGridsService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_3.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], AlignedGridsService.prototype, \"columnController\", void 0);\n __decorate([\n context_3.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], AlignedGridsService.prototype, \"eventService\", void 0);\n __decorate([\n __param(0, context_2.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], AlignedGridsService.prototype, \"setBeans\", null);\n __decorate([\n context_4.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], AlignedGridsService.prototype, \"init\", null);\n AlignedGridsService = __decorate([\n context_1.Bean('alignedGridsService')\n ], AlignedGridsService);\n return AlignedGridsService;\n}());\nexports.AlignedGridsService = AlignedGridsService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar logger_1 = require(\"../logger\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar dragService_1 = require(\"./dragService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar environment_1 = require(\"../environment\");\nvar utils_1 = require(\"../utils\");\nvar DragSourceType;\n(function (DragSourceType) {\n DragSourceType[DragSourceType[\"ToolPanel\"] = 0] = \"ToolPanel\";\n DragSourceType[DragSourceType[\"HeaderCell\"] = 1] = \"HeaderCell\";\n DragSourceType[DragSourceType[\"RowDrag\"] = 2] = \"RowDrag\";\n})(DragSourceType = exports.DragSourceType || (exports.DragSourceType = {}));\nvar VDirection;\n(function (VDirection) {\n VDirection[VDirection[\"Up\"] = 0] = \"Up\";\n VDirection[VDirection[\"Down\"] = 1] = \"Down\";\n})(VDirection = exports.VDirection || (exports.VDirection = {}));\nvar HDirection;\n(function (HDirection) {\n HDirection[HDirection[\"Left\"] = 0] = \"Left\";\n HDirection[HDirection[\"Right\"] = 1] = \"Right\";\n})(HDirection = exports.HDirection || (exports.HDirection = {}));\nvar DragAndDropService = /** @class */ (function () {\n function DragAndDropService() {\n this.dragSourceAndParamsList = [];\n this.dropTargets = [];\n }\n DragAndDropService_1 = DragAndDropService;\n DragAndDropService.prototype.init = function () {\n this.ePinnedIcon = utils_1._.createIcon('columnMovePin', this.gridOptionsWrapper, null);\n this.ePlusIcon = utils_1._.createIcon('columnMoveAdd', this.gridOptionsWrapper, null);\n this.eHiddenIcon = utils_1._.createIcon('columnMoveHide', this.gridOptionsWrapper, null);\n this.eMoveIcon = utils_1._.createIcon('columnMoveMove', this.gridOptionsWrapper, null);\n this.eLeftIcon = utils_1._.createIcon('columnMoveLeft', this.gridOptionsWrapper, null);\n this.eRightIcon = utils_1._.createIcon('columnMoveRight', this.gridOptionsWrapper, null);\n this.eGroupIcon = utils_1._.createIcon('columnMoveGroup', this.gridOptionsWrapper, null);\n this.eAggregateIcon = utils_1._.createIcon('columnMoveValue', this.gridOptionsWrapper, null);\n this.ePivotIcon = utils_1._.createIcon('columnMovePivot', this.gridOptionsWrapper, null);\n this.eDropNotAllowedIcon = utils_1._.createIcon('dropNotAllowed', this.gridOptionsWrapper, null);\n };\n DragAndDropService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('OldToolPanelDragAndDropService');\n };\n DragAndDropService.prototype.getStringType = function (type) {\n switch (type) {\n case DragSourceType.RowDrag: return 'row';\n case DragSourceType.HeaderCell: return 'headerCell';\n case DragSourceType.ToolPanel: return 'toolPanel';\n default:\n console.warn(\"ag-Grid: bug - unknown drag type \" + type);\n return null;\n }\n };\n DragAndDropService.prototype.addDragSource = function (dragSource, allowTouch) {\n if (allowTouch === void 0) { allowTouch = false; }\n var params = {\n eElement: dragSource.eElement,\n dragStartPixels: dragSource.dragStartPixels,\n onDragStart: this.onDragStart.bind(this, dragSource),\n onDragStop: this.onDragStop.bind(this),\n onDragging: this.onDragging.bind(this)\n };\n this.dragSourceAndParamsList.push({ params: params, dragSource: dragSource });\n this.dragService.addDragSource(params, allowTouch);\n };\n DragAndDropService.prototype.removeDragSource = function (dragSource) {\n var sourceAndParams = utils_1._.find(this.dragSourceAndParamsList, function (item) { return item.dragSource === dragSource; });\n if (sourceAndParams) {\n this.dragService.removeDragSource(sourceAndParams.params);\n utils_1._.removeFromArray(this.dragSourceAndParamsList, sourceAndParams);\n }\n };\n DragAndDropService.prototype.destroy = function () {\n var _this = this;\n this.dragSourceAndParamsList.forEach(function (sourceAndParams) {\n _this.dragService.removeDragSource(sourceAndParams.params);\n });\n this.dragSourceAndParamsList.length = 0;\n };\n DragAndDropService.prototype.nudge = function () {\n if (this.dragging) {\n this.onDragging(this.eventLastTime, true);\n }\n };\n DragAndDropService.prototype.onDragStart = function (dragSource, mouseEvent) {\n this.dragging = true;\n this.dragSource = dragSource;\n this.eventLastTime = mouseEvent;\n this.dragItem = this.dragSource.dragItemCallback();\n this.lastDropTarget = this.dragSource.dragSourceDropTarget;\n if (this.dragSource.dragStarted) {\n this.dragSource.dragStarted();\n }\n this.createGhost();\n };\n DragAndDropService.prototype.onDragStop = function (mouseEvent) {\n this.eventLastTime = null;\n this.dragging = false;\n if (this.dragSource.dragStopped) {\n this.dragSource.dragStopped();\n }\n if (this.lastDropTarget && this.lastDropTarget.onDragStop) {\n var draggingEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, null, null, false);\n this.lastDropTarget.onDragStop(draggingEvent);\n }\n this.lastDropTarget = null;\n this.dragItem = null;\n this.removeGhost();\n };\n DragAndDropService.prototype.onDragging = function (mouseEvent, fromNudge) {\n var hDirection = this.workOutHDirection(mouseEvent);\n var vDirection = this.workOutVDirection(mouseEvent);\n this.eventLastTime = mouseEvent;\n this.positionGhost(mouseEvent);\n // check if mouseEvent intersects with any of the drop targets\n var dropTarget = utils_1._.find(this.dropTargets, this.isMouseOnDropTarget.bind(this, mouseEvent));\n if (dropTarget !== this.lastDropTarget) {\n this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);\n this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget = dropTarget;\n }\n else if (dropTarget) {\n var draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragging(draggingEvent);\n }\n };\n DragAndDropService.prototype.enterDragTargetIfExists = function (dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {\n if (!dropTarget) {\n return;\n }\n var dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragEnter(dragEnterEvent);\n this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);\n };\n DragAndDropService.prototype.leaveLastTargetIfExists = function (mouseEvent, hDirection, vDirection, fromNudge) {\n if (!this.lastDropTarget) {\n return;\n }\n var dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget.onDragLeave(dragLeaveEvent);\n this.setGhostIcon(null);\n };\n DragAndDropService.prototype.getAllContainersFromDropTarget = function (dropTarget) {\n var containers = [dropTarget.getContainer()];\n var secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;\n if (secondaryContainers) {\n containers = containers.concat(secondaryContainers);\n }\n return containers;\n };\n // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers\n DragAndDropService.prototype.isMouseOnDropTarget = function (mouseEvent, dropTarget) {\n var allContainers = this.getAllContainersFromDropTarget(dropTarget);\n var mouseOverTarget = false;\n allContainers.forEach(function (eContainer) {\n if (!eContainer) {\n return;\n } // secondary can be missing\n var rect = eContainer.getBoundingClientRect();\n // if element is not visible, then width and height are zero\n if (rect.width === 0 || rect.height === 0) {\n return;\n }\n var horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX <= rect.right;\n var verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY <= rect.bottom;\n //console.log(`rect.width = ${rect.width} || rect.height = ${rect.height} ## verticalFit = ${verticalFit}, horizontalFit = ${horizontalFit}, `);\n if (horizontalFit && verticalFit) {\n mouseOverTarget = true;\n }\n });\n if (mouseOverTarget) {\n var mouseOverTargetAndInterested = dropTarget.isInterestedIn(this.dragSource.type);\n return mouseOverTargetAndInterested;\n }\n else {\n return false;\n }\n };\n DragAndDropService.prototype.addDropTarget = function (dropTarget) {\n this.dropTargets.push(dropTarget);\n };\n DragAndDropService.prototype.workOutHDirection = function (event) {\n if (this.eventLastTime.clientX > event.clientX) {\n return HDirection.Left;\n }\n else if (this.eventLastTime.clientX < event.clientX) {\n return HDirection.Right;\n }\n else {\n return null;\n }\n };\n DragAndDropService.prototype.workOutVDirection = function (event) {\n if (this.eventLastTime.clientY > event.clientY) {\n return VDirection.Up;\n }\n else if (this.eventLastTime.clientY < event.clientY) {\n return VDirection.Down;\n }\n else {\n return null;\n }\n };\n DragAndDropService.prototype.createDropTargetEvent = function (dropTarget, event, hDirection, vDirection, fromNudge) {\n // localise x and y to the target component\n var rect = dropTarget.getContainer().getBoundingClientRect();\n var x = event.clientX - rect.left;\n var y = event.clientY - rect.top;\n var dropTargetEvent = {\n event: event,\n x: x,\n y: y,\n vDirection: vDirection,\n hDirection: hDirection,\n dragSource: this.dragSource,\n fromNudge: fromNudge,\n dragItem: this.dragItem\n };\n return dropTargetEvent;\n };\n DragAndDropService.prototype.positionGhost = function (event) {\n var ghostRect = this.eGhost.getBoundingClientRect();\n var ghostHeight = ghostRect.height;\n // for some reason, without the '-2', it still overlapped by 1 or 2 pixels, which\n // then brought in scrollbars to the browser. no idea why, but putting in -2 here\n // works around it which is good enough for me.\n var browserWidth = utils_1._.getBodyWidth() - 2;\n var browserHeight = utils_1._.getBodyHeight() - 2;\n // put ghost vertically in middle of cursor\n var top = event.pageY - (ghostHeight / 2);\n // horizontally, place cursor just right of icon\n var left = event.pageX - 30;\n var usrDocument = this.gridOptionsWrapper.getDocument();\n var windowScrollY = window.pageYOffset || usrDocument.documentElement.scrollTop;\n var windowScrollX = window.pageXOffset || usrDocument.documentElement.scrollLeft;\n // check ghost is not positioned outside of the browser\n if (browserWidth > 0) {\n if ((left + this.eGhost.clientWidth) > (browserWidth + windowScrollX)) {\n left = browserWidth + windowScrollX - this.eGhost.clientWidth;\n }\n }\n if (left < 0) {\n left = 0;\n }\n if (browserHeight > 0) {\n if ((top + this.eGhost.clientHeight) > (browserHeight + windowScrollY)) {\n top = browserHeight + windowScrollY - this.eGhost.clientHeight;\n }\n }\n if (top < 0) {\n top = 0;\n }\n this.eGhost.style.left = left + 'px';\n this.eGhost.style.top = top + 'px';\n };\n DragAndDropService.prototype.removeGhost = function () {\n if (this.eGhost && this.eGhostParent) {\n this.eGhostParent.removeChild(this.eGhost);\n }\n this.eGhost = null;\n };\n DragAndDropService.prototype.createGhost = function () {\n this.eGhost = utils_1._.loadTemplate(DragAndDropService_1.GHOST_TEMPLATE);\n var theme = this.environment.getTheme();\n if (theme) {\n utils_1._.addCssClass(this.eGhost, theme);\n }\n this.eGhostIcon = this.eGhost.querySelector('.ag-dnd-ghost-icon');\n this.setGhostIcon(null);\n var eText = this.eGhost.querySelector('.ag-dnd-ghost-label');\n eText.innerHTML = utils_1._.escape(this.dragSource.dragItemName);\n this.eGhost.style.height = '25px';\n this.eGhost.style.top = '20px';\n this.eGhost.style.left = '20px';\n var usrDocument = this.gridOptionsWrapper.getDocument();\n this.eGhostParent = usrDocument.querySelector('body');\n if (!this.eGhostParent) {\n console.warn('ag-Grid: could not find document body, it is needed for dragging columns');\n }\n else {\n this.eGhostParent.appendChild(this.eGhost);\n }\n };\n DragAndDropService.prototype.setGhostIcon = function (iconName, shake) {\n if (shake === void 0) { shake = false; }\n utils_1._.clearElement(this.eGhostIcon);\n var eIcon;\n switch (iconName) {\n case DragAndDropService_1.ICON_ADD:\n eIcon = this.ePlusIcon;\n break;\n case DragAndDropService_1.ICON_PINNED:\n eIcon = this.ePinnedIcon;\n break;\n case DragAndDropService_1.ICON_MOVE:\n eIcon = this.eMoveIcon;\n break;\n case DragAndDropService_1.ICON_LEFT:\n eIcon = this.eLeftIcon;\n break;\n case DragAndDropService_1.ICON_RIGHT:\n eIcon = this.eRightIcon;\n break;\n case DragAndDropService_1.ICON_GROUP:\n eIcon = this.eGroupIcon;\n break;\n case DragAndDropService_1.ICON_AGGREGATE:\n eIcon = this.eAggregateIcon;\n break;\n case DragAndDropService_1.ICON_PIVOT:\n eIcon = this.ePivotIcon;\n break;\n case DragAndDropService_1.ICON_NOT_ALLOWED:\n eIcon = this.eDropNotAllowedIcon;\n break;\n default:\n eIcon = this.eHiddenIcon;\n break;\n }\n this.eGhostIcon.appendChild(eIcon);\n utils_1._.addOrRemoveCssClass(this.eGhostIcon, 'ag-shake-left-to-right', shake);\n };\n var DragAndDropService_1;\n DragAndDropService.ICON_PINNED = 'pinned';\n DragAndDropService.ICON_ADD = 'add';\n DragAndDropService.ICON_MOVE = 'move';\n DragAndDropService.ICON_LEFT = 'left';\n DragAndDropService.ICON_RIGHT = 'right';\n DragAndDropService.ICON_GROUP = 'group';\n DragAndDropService.ICON_AGGREGATE = 'aggregate';\n DragAndDropService.ICON_PIVOT = 'pivot';\n DragAndDropService.ICON_NOT_ALLOWED = 'notAllowed';\n DragAndDropService.GHOST_TEMPLATE = '
' +\n ' ' +\n '
' +\n '
' +\n '
';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], DragAndDropService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('dragService'),\n __metadata(\"design:type\", dragService_1.DragService)\n ], DragAndDropService.prototype, \"dragService\", void 0);\n __decorate([\n context_1.Autowired('environment'),\n __metadata(\"design:type\", environment_1.Environment)\n ], DragAndDropService.prototype, \"environment\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], DragAndDropService.prototype, \"columnController\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], DragAndDropService.prototype, \"init\", null);\n __decorate([\n __param(0, context_1.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], DragAndDropService.prototype, \"setBeans\", null);\n __decorate([\n context_1.PreDestroy,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], DragAndDropService.prototype, \"destroy\", null);\n DragAndDropService = DragAndDropService_1 = __decorate([\n context_1.Bean('dragAndDropService')\n ], DragAndDropService);\n return DragAndDropService;\n}());\nexports.DragAndDropService = DragAndDropService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar constants_1 = require(\"../../constants\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar utils_1 = require(\"../../utils\");\nvar ImmutableService = /** @class */ (function () {\n function ImmutableService() {\n }\n ImmutableService.prototype.postConstruct = function () {\n if (this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n };\n // converts the setRowData() command to a transaction\n ImmutableService.prototype.createTransactionForRowData = function (data) {\n if (utils_1._.missing(this.clientSideRowModel)) {\n console.error('ag-Grid: ImmutableService only works with ClientSideRowModel');\n return;\n }\n var getRowNodeIdFunc = this.gridOptionsWrapper.getRowNodeIdFunc();\n if (!getRowNodeIdFunc || utils_1._.missing(getRowNodeIdFunc)) {\n console.error('ag-Grid: ImmutableService requires getRowNodeId() callback to be implemented, your row data need IDs!');\n return;\n }\n // convert the data into a transaction object by working out adds, removes and updates\n var transaction = {\n remove: [],\n update: [],\n add: []\n };\n var existingNodesMap = this.clientSideRowModel.getCopyOfNodesMap();\n var suppressSortOrder = this.gridOptionsWrapper.isSuppressMaintainUnsortedOrder();\n var orderMap = suppressSortOrder ? null : {};\n if (utils_1._.exists(data)) {\n // split all the new data in the following:\n // if new, push to 'add'\n // if update, push to 'update'\n // if not changed, do not include in the transaction\n data.forEach(function (dataItem, index) {\n var id = getRowNodeIdFunc(dataItem);\n var existingNode = existingNodesMap[id];\n if (orderMap) {\n orderMap[id] = index;\n }\n if (existingNode) {\n var dataHasChanged = existingNode.data !== dataItem;\n if (dataHasChanged) {\n transaction.update.push(dataItem);\n }\n // otherwise, if data not changed, we just don't include it anywhere, as it's not a delta\n // remove from list, so we know the item is not to be removed\n existingNodesMap[id] = undefined;\n }\n else {\n transaction.add.push(dataItem);\n }\n });\n }\n // at this point, all rows that are left, should be removed\n utils_1._.iterateObject(existingNodesMap, function (id, rowNode) {\n if (rowNode) {\n transaction.remove.push(rowNode.data);\n }\n });\n return [transaction, orderMap];\n };\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], ImmutableService.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ImmutableService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ImmutableService.prototype, \"postConstruct\", null);\n ImmutableService = __decorate([\n context_1.Bean('immutableService')\n ], ImmutableService);\n return ImmutableService;\n}());\nexports.ImmutableService = ImmutableService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar StylingService = /** @class */ (function () {\n function StylingService() {\n }\n StylingService.prototype.processAllCellClasses = function (colDef, params, onApplicableClass, onNotApplicableClass) {\n this.processClassRules(colDef.cellClassRules, params, onApplicableClass, onNotApplicableClass);\n this.processStaticCellClasses(colDef, params, onApplicableClass);\n };\n StylingService.prototype.processClassRules = function (classRules, params, onApplicableClass, onNotApplicableClass) {\n if (typeof classRules === 'object' && classRules !== null) {\n var classNames = Object.keys(classRules);\n for (var i = 0; i < classNames.length; i++) {\n var className = classNames[i];\n var rule = classRules[className];\n var resultOfRule = void 0;\n if (typeof rule === 'string') {\n resultOfRule = this.expressionService.evaluate(rule, params);\n }\n else if (typeof rule === 'function') {\n resultOfRule = rule(params);\n }\n if (resultOfRule) {\n onApplicableClass(className);\n }\n else if (onNotApplicableClass) {\n onNotApplicableClass(className);\n }\n }\n }\n };\n StylingService.prototype.processStaticCellClasses = function (colDef, params, onApplicableClass) {\n var cellClass = colDef.cellClass;\n if (cellClass) {\n var classOrClasses = void 0;\n if (typeof colDef.cellClass === 'function') {\n var cellClassFunc = colDef.cellClass;\n classOrClasses = cellClassFunc(params);\n }\n else {\n classOrClasses = colDef.cellClass;\n }\n if (typeof classOrClasses === 'string') {\n onApplicableClass(classOrClasses);\n }\n else if (Array.isArray(classOrClasses)) {\n classOrClasses.forEach(function (cssClassItem) {\n onApplicableClass(cssClassItem);\n });\n }\n }\n };\n __decorate([\n context_1.Autowired('expressionService'),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], StylingService.prototype, \"expressionService\", void 0);\n StylingService = __decorate([\n context_1.Bean('stylingService')\n ], StylingService);\n return StylingService;\n}());\nexports.StylingService = StylingService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar column_1 = require(\"./entities/column\");\nvar context_1 = require(\"./context/context\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar columnApi_1 = require(\"./columnController/columnApi\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar eventService_1 = require(\"./eventService\");\nvar events_1 = require(\"./events\");\nvar gridApi_1 = require(\"./gridApi\");\nvar utils_1 = require(\"./utils\");\nvar SortController = /** @class */ (function () {\n function SortController() {\n }\n SortController_1 = SortController;\n SortController.prototype.progressSort = function (column, multiSort, source) {\n if (source === void 0) { source = \"api\"; }\n var nextDirection = this.getNextSortDirection(column);\n this.setSortForColumn(column, nextDirection, multiSort, source);\n };\n SortController.prototype.setSortForColumn = function (column, sort, multiSort, source) {\n if (source === void 0) { source = \"api\"; }\n // auto correct - if sort not legal value, then set it to 'no sort' (which is null)\n if (sort !== column_1.Column.SORT_ASC && sort !== column_1.Column.SORT_DESC) {\n sort = null;\n }\n // update sort on current col\n column.setSort(sort, source);\n // sortedAt used for knowing order of cols when multi-col sort\n if (column.getSort()) {\n var sortedAt = Number(new Date().valueOf());\n column.setSortedAt(sortedAt);\n }\n else {\n column.setSortedAt(null);\n }\n var doingMultiSort = multiSort && !this.gridOptionsWrapper.isSuppressMultiSort();\n // clear sort on all columns except this one, and update the icons\n if (!doingMultiSort) {\n this.clearSortBarThisColumn(column, source);\n }\n this.dispatchSortChangedEvents();\n };\n // gets called by API, so if data changes, use can call this, which will end up\n // working out the sort order again of the rows.\n SortController.prototype.onSortChanged = function () {\n this.dispatchSortChangedEvents();\n };\n SortController.prototype.dispatchSortChangedEvents = function () {\n var event = {\n type: events_1.Events.EVENT_SORT_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n SortController.prototype.clearSortBarThisColumn = function (columnToSkip, source) {\n this.columnController.getPrimaryAndSecondaryAndAutoColumns().forEach(function (columnToClear) {\n // Do not clear if either holding shift, or if column in question was clicked\n if (!(columnToClear === columnToSkip)) {\n // setting to 'undefined' as null means 'none' rather than cleared, otherwise issue will arise\n // if sort order is: ['desc', null , 'asc'], as it will start at null rather than 'desc'.\n columnToClear.setSort(undefined, source);\n }\n });\n };\n SortController.prototype.getNextSortDirection = function (column) {\n var sortingOrder;\n if (column.getColDef().sortingOrder) {\n sortingOrder = column.getColDef().sortingOrder;\n }\n else if (this.gridOptionsWrapper.getSortingOrder()) {\n sortingOrder = this.gridOptionsWrapper.getSortingOrder();\n }\n else {\n sortingOrder = SortController_1.DEFAULT_SORTING_ORDER;\n }\n if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {\n console.warn(\"ag-grid: sortingOrder must be an array with at least one element, currently it's \" + sortingOrder);\n return null;\n }\n var currentIndex = sortingOrder.indexOf(column.getSort());\n var notInArray = currentIndex < 0;\n var lastItemInArray = currentIndex == sortingOrder.length - 1;\n var result;\n if (notInArray || lastItemInArray) {\n result = sortingOrder[0];\n }\n else {\n result = sortingOrder[currentIndex + 1];\n }\n // verify the sort type exists, as the user could provide the sortingOrder, need to make sure it's valid\n if (SortController_1.DEFAULT_SORTING_ORDER.indexOf(result) < 0) {\n console.warn('ag-grid: invalid sort type ' + result);\n return null;\n }\n return result;\n };\n // used by the public api, for saving the sort model\n SortController.prototype.getSortModel = function () {\n var columnsWithSorting = this.getColumnsWithSortingOrdered();\n return utils_1._.map(columnsWithSorting, function (column) {\n return {\n colId: column.getColId(),\n sort: column.getSort()\n };\n });\n };\n SortController.prototype.setSortModel = function (sortModel, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n // first up, clear any previous sort\n var sortModelProvided = sortModel && sortModel.length > 0;\n var allColumnsIncludingAuto = this.columnController.getPrimaryAndSecondaryAndAutoColumns();\n allColumnsIncludingAuto.forEach(function (column) {\n var sortForCol = null;\n var sortedAt = -1;\n if (sortModelProvided && column.getColDef().sortable) {\n for (var j = 0; j < sortModel.length; j++) {\n var sortModelEntry = sortModel[j];\n if (typeof sortModelEntry.colId === 'string'\n && typeof column.getColId() === 'string'\n && _this.compareColIds(sortModelEntry, column)) {\n sortForCol = sortModelEntry.sort;\n sortedAt = j;\n }\n }\n }\n if (sortForCol) {\n column.setSort(sortForCol, source);\n column.setSortedAt(sortedAt);\n }\n else {\n column.setSort(null, source);\n column.setSortedAt(null);\n }\n });\n this.dispatchSortChangedEvents();\n };\n SortController.prototype.compareColIds = function (sortModelEntry, column) {\n return sortModelEntry.colId === column.getColId();\n };\n SortController.prototype.getColumnsWithSortingOrdered = function () {\n // pull out all the columns that have sorting set\n var allColumnsIncludingAuto = this.columnController.getPrimaryAndSecondaryAndAutoColumns();\n var columnsWithSorting = utils_1._.filter(allColumnsIncludingAuto, function (column) { return !!column.getSort(); });\n // put the columns in order of which one got sorted first\n columnsWithSorting.sort(function (a, b) { return a.sortedAt - b.sortedAt; });\n return columnsWithSorting;\n };\n // used by row controller, when doing the sorting\n SortController.prototype.getSortForRowController = function () {\n var columnsWithSorting = this.getColumnsWithSortingOrdered();\n return utils_1._.map(columnsWithSorting, function (column) {\n var ascending = column.getSort() === column_1.Column.SORT_ASC;\n return {\n inverter: ascending ? 1 : -1,\n column: column\n };\n });\n };\n var SortController_1;\n SortController.DEFAULT_SORTING_ORDER = [column_1.Column.SORT_ASC, column_1.Column.SORT_DESC, null];\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], SortController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], SortController.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], SortController.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], SortController.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], SortController.prototype, \"gridApi\", void 0);\n SortController = SortController_1 = __decorate([\n context_1.Bean('sortController')\n ], SortController);\n return SortController;\n}());\nexports.SortController = SortController;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar logger_1 = require(\"../logger\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar utils_1 = require(\"../utils\");\n/** Adds drag listening onto an element. In ag-Grid this is used twice, first is resizing columns,\n * second is moving the columns and column groups around (ie the 'drag' part of Drag and Drop. */\nvar DragService = /** @class */ (function () {\n function DragService() {\n this.onMouseUpListener = this.onMouseUp.bind(this);\n this.onMouseMoveListener = this.onMouseMove.bind(this);\n this.onTouchEndListener = this.onTouchUp.bind(this);\n this.onTouchMoveListener = this.onTouchMove.bind(this);\n this.dragEndFunctions = [];\n this.dragSources = [];\n }\n DragService.prototype.init = function () {\n this.logger = this.loggerFactory.create('DragService');\n };\n DragService.prototype.destroy = function () {\n this.dragSources.forEach(this.removeListener.bind(this));\n this.dragSources.length = 0;\n };\n DragService.prototype.removeListener = function (dragSourceAndListener) {\n var element = dragSourceAndListener.dragSource.eElement;\n var mouseDownListener = dragSourceAndListener.mouseDownListener;\n element.removeEventListener('mousedown', mouseDownListener);\n // remove touch listener only if it exists\n if (dragSourceAndListener.touchEnabled) {\n var touchStartListener = dragSourceAndListener.touchStartListener;\n element.removeEventListener('touchstart', touchStartListener, { passive: true });\n }\n };\n DragService.prototype.removeDragSource = function (params) {\n var dragSourceAndListener = utils_1._.find(this.dragSources, function (item) { return item.dragSource === params; });\n if (!dragSourceAndListener) {\n return;\n }\n this.removeListener(dragSourceAndListener);\n utils_1._.removeFromArray(this.dragSources, dragSourceAndListener);\n };\n DragService.prototype.setNoSelectToBody = function (noSelect) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var eBody = eDocument.querySelector('body');\n if (utils_1._.exists(eBody)) {\n // when we drag the mouse in ag-Grid, this class gets added / removed from the body, so that\n // the mouse isn't selecting text when dragging.\n utils_1._.addOrRemoveCssClass(eBody, 'ag-unselectable', noSelect);\n }\n };\n DragService.prototype.addDragSource = function (params, includeTouch) {\n if (includeTouch === void 0) { includeTouch = false; }\n var mouseListener = this.onMouseDown.bind(this, params);\n params.eElement.addEventListener('mousedown', mouseListener);\n var touchListener = null;\n var suppressTouch = this.gridOptionsWrapper.isSuppressTouch();\n if (includeTouch && !suppressTouch) {\n touchListener = this.onTouchStart.bind(this, params);\n params.eElement.addEventListener('touchstart', touchListener, { passive: false });\n }\n this.dragSources.push({\n dragSource: params,\n mouseDownListener: mouseListener,\n touchStartListener: touchListener,\n touchEnabled: includeTouch\n });\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onTouchStart = function (params, touchEvent) {\n var _this = this;\n this.currentDragParams = params;\n this.dragging = false;\n var touch = touchEvent.touches[0];\n this.touchLastTime = touch;\n this.touchStart = touch;\n touchEvent.preventDefault();\n // we temporally add these listeners, for the duration of the drag, they\n // are removed in touch end handling.\n params.eElement.addEventListener('touchmove', this.onTouchMoveListener, { passive: true });\n params.eElement.addEventListener('touchend', this.onTouchEndListener, { passive: true });\n params.eElement.addEventListener('touchcancel', this.onTouchEndListener, { passive: true });\n this.dragEndFunctions.push(function () {\n params.eElement.removeEventListener('touchmove', _this.onTouchMoveListener, { passive: true });\n params.eElement.removeEventListener('touchend', _this.onTouchEndListener, { passive: true });\n params.eElement.removeEventListener('touchcancel', _this.onTouchEndListener, { passive: true });\n });\n // see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onCommonMove(touch, this.touchStart);\n }\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onMouseDown = function (params, mouseEvent) {\n var _this = this;\n // we ignore when shift key is pressed. this is for the range selection, as when\n // user shift-clicks a cell, this should not be interpreted as the start of a drag.\n // if (mouseEvent.shiftKey) { return; }\n if (params.skipMouseEvent) {\n if (params.skipMouseEvent(mouseEvent)) {\n return;\n }\n }\n // if there are two elements with parent / child relationship, and both are draggable,\n // when we drag the child, we should NOT drag the parent. an example of this is row moving\n // and range selection - row moving should get preference when use drags the rowDrag component.\n if (mouseEvent._alreadyProcessedByDragService) {\n return;\n }\n mouseEvent._alreadyProcessedByDragService = true;\n // only interested in left button clicks\n if (mouseEvent.button !== 0) {\n return;\n }\n this.currentDragParams = params;\n this.dragging = false;\n this.mouseEventLastTime = mouseEvent;\n this.mouseStartEvent = mouseEvent;\n var eDocument = this.gridOptionsWrapper.getDocument();\n // we temporally add these listeners, for the duration of the drag, they\n // are removed in mouseup handling.\n eDocument.addEventListener('mousemove', this.onMouseMoveListener);\n eDocument.addEventListener('mouseup', this.onMouseUpListener);\n this.dragEndFunctions.push(function () {\n eDocument.removeEventListener('mousemove', _this.onMouseMoveListener);\n eDocument.removeEventListener('mouseup', _this.onMouseUpListener);\n });\n //see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onMouseMove(mouseEvent);\n }\n };\n // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n DragService.prototype.isEventNearStartEvent = function (currentEvent, startEvent) {\n // by default, we wait 4 pixels before starting the drag\n var dragStartPixels = this.currentDragParams.dragStartPixels;\n var requiredPixelDiff = utils_1._.exists(dragStartPixels) ? dragStartPixels : 4;\n return utils_1._.areEventsNear(currentEvent, startEvent, requiredPixelDiff);\n };\n DragService.prototype.getFirstActiveTouch = function (touchList) {\n for (var i = 0; i < touchList.length; i++) {\n if (touchList[i].identifier === this.touchStart.identifier) {\n return touchList[i];\n }\n }\n return null;\n };\n DragService.prototype.onCommonMove = function (currentEvent, startEvent) {\n if (!this.dragging) {\n // if mouse hasn't travelled from the start position enough, do nothing\n if (!this.dragging && this.isEventNearStartEvent(currentEvent, startEvent)) {\n return;\n }\n this.dragging = true;\n var event_1 = {\n type: events_1.Events.EVENT_DRAG_STARTED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n this.currentDragParams.onDragStart(startEvent);\n this.setNoSelectToBody(true);\n }\n this.currentDragParams.onDragging(currentEvent);\n };\n DragService.prototype.onTouchMove = function (touchEvent) {\n var touch = this.getFirstActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n // this.___statusPanel.setInfoText(Math.random() + ' onTouchMove preventDefault stopPropagation');\n // if we don't preview default, then the browser will try and do it's own touch stuff,\n // like do 'back button' (chrome does this) or scroll the page (eg drag column could be confused\n // with scroll page in the app)\n // touchEvent.preventDefault();\n this.onCommonMove(touch, this.touchStart);\n };\n // only gets called after a mouse down - as this is only added after mouseDown\n // and is removed when mouseUp happens\n DragService.prototype.onMouseMove = function (mouseEvent) {\n this.onCommonMove(mouseEvent, this.mouseStartEvent);\n };\n DragService.prototype.onTouchUp = function (touchEvent) {\n var touch = this.getFirstActiveTouch(touchEvent.changedTouches);\n // i haven't worked this out yet, but there is no matching touch\n // when we get the touch up event. to get around this, we swap in\n // the last touch. this is a hack to 'get it working' while we\n // figure out what's going on, why we are not getting a touch in\n // current event.\n if (!touch) {\n touch = this.touchLastTime;\n }\n // if mouse was left up before we started to move, then this is a tap.\n // we check this before onUpCommon as onUpCommon resets the dragging\n // let tap = !this.dragging;\n // let tapTarget = this.currentDragParams.eElement;\n this.onUpCommon(touch);\n // if tap, tell user\n // console.log(`${Math.random()} tap = ${tap}`);\n // if (tap) {\n // tapTarget.click();\n // }\n };\n DragService.prototype.onMouseUp = function (mouseEvent) {\n this.onUpCommon(mouseEvent);\n };\n DragService.prototype.onUpCommon = function (eventOrTouch) {\n if (this.dragging) {\n this.dragging = false;\n this.currentDragParams.onDragStop(eventOrTouch);\n var event_2 = {\n type: events_1.Events.EVENT_DRAG_STOPPED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_2);\n }\n this.setNoSelectToBody(false);\n this.mouseStartEvent = null;\n this.mouseEventLastTime = null;\n this.touchStart = null;\n this.touchLastTime = null;\n this.currentDragParams = null;\n this.dragEndFunctions.forEach(function (func) { return func(); });\n this.dragEndFunctions.length = 0;\n };\n __decorate([\n context_1.Autowired('loggerFactory'),\n __metadata(\"design:type\", logger_1.LoggerFactory)\n ], DragService.prototype, \"loggerFactory\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], DragService.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], DragService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], DragService.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], DragService.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], DragService.prototype, \"init\", null);\n __decorate([\n context_1.PreDestroy,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], DragService.prototype, \"destroy\", null);\n DragService = __decorate([\n context_1.Bean('dragService')\n ], DragService);\n return DragService;\n}());\nexports.DragService = DragService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** The base frameworks, eg React & Angular 2, override this bean with implementations specific to their requirement. */\nvar BaseFrameworkFactory = /** @class */ (function () {\n function BaseFrameworkFactory() {\n }\n BaseFrameworkFactory.prototype.dateComponent = function (gridOptions) {\n return gridOptions.dateComponent;\n };\n BaseFrameworkFactory.prototype.colDefFloatingCellRenderer = function (colDef) {\n return colDef.pinnedRowCellRenderer;\n };\n BaseFrameworkFactory.prototype.colDefCellRenderer = function (colDef) {\n return colDef.cellRenderer;\n };\n BaseFrameworkFactory.prototype.colDefCellEditor = function (colDef) {\n return colDef.cellEditor;\n };\n BaseFrameworkFactory.prototype.colDefFilter = function (colDef) {\n return colDef.filter;\n };\n BaseFrameworkFactory.prototype.gridOptionsFullWidthCellRenderer = function (gridOptions) {\n return gridOptions.fullWidthCellRenderer;\n };\n BaseFrameworkFactory.prototype.gridOptionsGroupRowRenderer = function (gridOptions) {\n return gridOptions.groupRowRenderer;\n };\n BaseFrameworkFactory.prototype.gridOptionsGroupRowInnerRenderer = function (gridOptions) {\n return gridOptions.groupRowInnerRenderer;\n };\n BaseFrameworkFactory.prototype.setTimeout = function (action, timeout) {\n window.setTimeout(action, timeout);\n };\n return BaseFrameworkFactory;\n}());\nexports.BaseFrameworkFactory = BaseFrameworkFactory;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar baseFilter_1 = require(\"./baseFilter\");\nvar utils_1 = require(\"../utils\");\nvar NumberFilter = /** @class */ (function (_super) {\n __extends(NumberFilter, _super);\n function NumberFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NumberFilter.prototype.modelFromFloatingFilter = function (from) {\n return {\n type: this.selectedFilter,\n filter: Number(from),\n filterTo: this.filterNumberTo,\n filterType: 'number'\n };\n };\n NumberFilter.prototype.getApplicableFilterTypes = function () {\n return [baseFilter_1.BaseFilter.EQUALS, baseFilter_1.BaseFilter.NOT_EQUAL, baseFilter_1.BaseFilter.LESS_THAN,\n baseFilter_1.BaseFilter.LESS_THAN_OR_EQUAL, baseFilter_1.BaseFilter.GREATER_THAN, baseFilter_1.BaseFilter.GREATER_THAN_OR_EQUAL, baseFilter_1.BaseFilter.IN_RANGE];\n };\n NumberFilter.prototype.bodyTemplate = function (type) {\n var translate = this.translate.bind(this);\n var fieldId = type == baseFilter_1.FilterConditionType.MAIN ? \"filterText\" : \"filterConditionText\";\n var filterNumberToPanelId = type == baseFilter_1.FilterConditionType.MAIN ? \"filterNumberToPanel\" : \"filterNumberToPanelCondition\";\n var fieldToId = type == baseFilter_1.FilterConditionType.MAIN ? \"filterToText\" : \"filterToConditionText\";\n return \"
\\n
\\n \\n
\\n
\\n \\n
\\n
\";\n };\n NumberFilter.prototype.initialiseFilterBodyUi = function (type) {\n _super.prototype.initialiseFilterBodyUi.call(this, type);\n if (type === baseFilter_1.FilterConditionType.MAIN) {\n this.eFilterTextField = this.queryForHtmlInputElement(\"#filterText\");\n this.addFilterChangedEventListeners(type, this.eFilterTextField, this.eFilterToTextField);\n }\n else {\n this.eFilterTextConditionField = this.queryForHtmlInputElement(\"#filterConditionText\");\n this.addFilterChangedEventListeners(type, this.eFilterTextConditionField, this.eFilterToConditionText);\n this.setFilter(this.filterNumberCondition, baseFilter_1.FilterConditionType.CONDITION);\n this.setFilterTo(this.filterNumberConditionTo, baseFilter_1.FilterConditionType.CONDITION);\n this.setFilterType(this.selectedFilterCondition, baseFilter_1.FilterConditionType.CONDITION);\n }\n };\n NumberFilter.prototype.addFilterChangedEventListeners = function (type, filterElement, filterToElement) {\n var _this = this;\n var debounceMs = this.getDebounceMs(this.filterParams);\n var toDebounce = utils_1._.debounce(function () { return _this.onTextFieldsChanged(type, filterElement, filterToElement); }, debounceMs);\n this.addDestroyableEventListener(filterElement, \"input\", toDebounce);\n this.addDestroyableEventListener(filterToElement, \"input\", toDebounce);\n };\n NumberFilter.prototype.afterGuiAttached = function () {\n this.eFilterTextField.focus();\n };\n NumberFilter.prototype.comparator = function () {\n return function (left, right) {\n if (left === right) {\n return 0;\n }\n if (left < right) {\n return 1;\n }\n if (left > right) {\n return -1;\n }\n };\n };\n NumberFilter.prototype.onTextFieldsChanged = function (type, filterElement, filterToElement) {\n var newFilter = this.stringToFloat(filterElement.value);\n var newFilterTo = this.stringToFloat(filterToElement.value);\n if (type === baseFilter_1.FilterConditionType.MAIN) {\n if (this.filterNumber !== newFilter || this.filterNumberTo !== newFilterTo) {\n this.filterNumber = newFilter;\n this.filterNumberTo = newFilterTo;\n this.onFilterChanged();\n }\n }\n else {\n if (this.filterNumberCondition !== newFilter || this.filterNumberConditionTo !== newFilterTo) {\n this.filterNumberCondition = newFilter;\n this.filterNumberConditionTo = newFilterTo;\n this.onFilterChanged();\n }\n }\n };\n NumberFilter.prototype.filterValues = function (type) {\n if (type === baseFilter_1.FilterConditionType.MAIN) {\n return this.selectedFilter !== baseFilter_1.BaseFilter.IN_RANGE ?\n this.asNumber(this.filterNumber) :\n [this.asNumber(this.filterNumber), this.asNumber(this.filterNumberTo)];\n }\n return this.selectedFilterCondition !== baseFilter_1.BaseFilter.IN_RANGE ?\n this.asNumber(this.filterNumberCondition) :\n [this.asNumber(this.filterNumberCondition), this.asNumber(this.filterNumberConditionTo)];\n };\n NumberFilter.prototype.asNumber = function (value) {\n return utils_1._.isNumeric(value) ? value : null;\n };\n NumberFilter.prototype.stringToFloat = function (value) {\n var filterText = utils_1._.makeNull(value);\n if (filterText && filterText.trim() === '') {\n filterText = null;\n }\n var newFilter;\n if (filterText !== null && filterText !== undefined) {\n newFilter = parseFloat(filterText);\n }\n else {\n newFilter = null;\n }\n return newFilter;\n };\n NumberFilter.prototype.setFilter = function (filter, type) {\n filter = utils_1._.makeNull(filter);\n if (filter !== null && !(typeof filter === 'number')) {\n filter = parseFloat(filter);\n }\n if (type === baseFilter_1.FilterConditionType.MAIN) {\n this.filterNumber = filter;\n if (!this.eFilterTextField) {\n return;\n }\n this.eFilterTextField.value = filter;\n }\n else {\n this.filterNumberCondition = filter;\n if (!this.eFilterTextConditionField) {\n return;\n }\n this.eFilterTextConditionField.value = filter;\n }\n };\n NumberFilter.prototype.setFilterTo = function (filter, type) {\n filter = utils_1._.makeNull(filter);\n if (filter !== null && !(typeof filter === 'number')) {\n filter = parseFloat(filter);\n }\n if (type === baseFilter_1.FilterConditionType.MAIN) {\n this.filterNumberTo = filter;\n if (!this.eFilterToTextField) {\n return;\n }\n this.eFilterToTextField.value = filter;\n }\n else {\n this.filterNumberConditionTo = filter;\n if (!this.eFilterToConditionText) {\n return;\n }\n this.eFilterToConditionText.value = filter;\n }\n };\n NumberFilter.prototype.getFilter = function (type) {\n return type === baseFilter_1.FilterConditionType.MAIN ? this.filterNumber : this.filterNumberCondition;\n };\n NumberFilter.prototype.serialize = function (type) {\n var selectedFilter = type === baseFilter_1.FilterConditionType.MAIN ? this.selectedFilter : this.selectedFilterCondition;\n var filterNumber = type === baseFilter_1.FilterConditionType.MAIN ? this.filterNumber : this.filterNumberCondition;\n var filterNumberTo = type === baseFilter_1.FilterConditionType.MAIN ? this.filterNumberTo : this.filterNumberConditionTo;\n return {\n type: selectedFilter ? selectedFilter : this.defaultFilter,\n filter: filterNumber,\n filterTo: filterNumberTo,\n filterType: 'number'\n };\n };\n NumberFilter.prototype.parse = function (model, type) {\n this.setFilterType(model.type, type);\n this.setFilter(model.filter, type);\n this.setFilterTo(model.filterTo, type);\n };\n NumberFilter.prototype.refreshFilterBodyUi = function (type) {\n var filterType = type === baseFilter_1.FilterConditionType.MAIN ? this.selectedFilter : this.selectedFilterCondition;\n // show / hide in-range filter\n var panel = type === baseFilter_1.FilterConditionType.MAIN ? this.eNumberToPanel : this.eNumberToConditionPanel;\n if (panel) {\n var visible = filterType === NumberFilter.IN_RANGE;\n utils_1._.setVisible(panel, visible);\n }\n // show / hide filter input, i.e. if custom filter has 'hideFilterInputField = true' or an empty filter\n var filterInput = type === baseFilter_1.FilterConditionType.MAIN ? this.eFilterTextField : this.eFilterTextConditionField;\n if (filterInput) {\n var showFilterInput = !this.doesFilterHaveHiddenInput(filterType) && filterType !== baseFilter_1.BaseFilter.EMPTY;\n utils_1._.setVisible(filterInput, showFilterInput);\n }\n };\n NumberFilter.prototype.resetState = function (resetConditionFilterOnly) {\n if (resetConditionFilterOnly === void 0) { resetConditionFilterOnly = false; }\n if (!resetConditionFilterOnly) {\n this.setFilterType(this.defaultFilter, baseFilter_1.FilterConditionType.MAIN);\n this.setFilter(null, baseFilter_1.FilterConditionType.MAIN);\n this.setFilterTo(null, baseFilter_1.FilterConditionType.MAIN);\n }\n this.setFilterType(this.defaultFilter, baseFilter_1.FilterConditionType.CONDITION);\n this.setFilter(null, baseFilter_1.FilterConditionType.CONDITION);\n this.setFilterTo(null, baseFilter_1.FilterConditionType.CONDITION);\n };\n NumberFilter.prototype.setType = function (filterType, type) {\n this.setFilterType(filterType, type);\n };\n NumberFilter.LESS_THAN = 'lessThan';\n __decorate([\n componentAnnotations_1.QuerySelector('#filterText'),\n __metadata(\"design:type\", HTMLInputElement)\n ], NumberFilter.prototype, \"eFilterTextField\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#filterTextCondition'),\n __metadata(\"design:type\", HTMLInputElement)\n ], NumberFilter.prototype, \"eFilterTextConditionField\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#filterToText'),\n __metadata(\"design:type\", HTMLInputElement)\n ], NumberFilter.prototype, \"eFilterToTextField\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#filterToConditionText'),\n __metadata(\"design:type\", HTMLInputElement)\n ], NumberFilter.prototype, \"eFilterToConditionText\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#filterNumberToPanel'),\n __metadata(\"design:type\", HTMLElement)\n ], NumberFilter.prototype, \"eNumberToPanel\", void 0);\n __decorate([\n componentAnnotations_1.QuerySelector('#filterNumberToPanelCondition'),\n __metadata(\"design:type\", HTMLElement)\n ], NumberFilter.prototype, \"eNumberToConditionPanel\", void 0);\n return NumberFilter;\n}(baseFilter_1.ScalarBaseFilter));\nexports.NumberFilter = NumberFilter;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventKeys_1 = require(\"./eventKeys\");\nexports.Events = eventKeys_1.Events;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar context_1 = require(\"../../context/context\");\nvar component_1 = require(\"../../widgets/component\");\nvar LoadingOverlayComponent = /** @class */ (function (_super) {\n __extends(LoadingOverlayComponent, _super);\n function LoadingOverlayComponent() {\n return _super.call(this) || this;\n }\n LoadingOverlayComponent.prototype.init = function (params) {\n var template = this.gridOptionsWrapper.getOverlayLoadingTemplate() ?\n this.gridOptionsWrapper.getOverlayLoadingTemplate() : LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var localisedTemplate = template.replace('[LOADING...]', localeTextFunc('loadingOoo', 'Loading...'));\n this.setTemplate(localisedTemplate);\n };\n LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE = '[LOADING...]';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], LoadingOverlayComponent.prototype, \"gridOptionsWrapper\", void 0);\n return LoadingOverlayComponent;\n}(component_1.Component));\nexports.LoadingOverlayComponent = LoadingOverlayComponent;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cellComp_1 = require(\"./cellComp\");\nvar rowNode_1 = require(\"../entities/rowNode\");\nvar column_1 = require(\"../entities/column\");\nvar events_1 = require(\"../events\");\nvar component_1 = require(\"../widgets/component\");\nvar utils_1 = require(\"../utils\");\nvar RowComp = /** @class */ (function (_super) {\n __extends(RowComp, _super);\n function RowComp(parentScope, bodyContainerComp, pinnedLeftContainerComp, pinnedRightContainerComp, fullWidthContainerComp, rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout, embedFullWidth) {\n var _this = _super.call(this) || this;\n _this.eAllRowContainers = [];\n _this.active = true;\n _this.rowContainerReadyCount = 0;\n _this.refreshNeeded = false;\n _this.columnRefreshPending = false;\n _this.cellComps = {};\n // for animations, there are bits we want done in the next VM turn, to all DOM to update first.\n // instead of each row doing a setTimeout(func,0), we put the functions here and the rowRenderer\n // executes them all in one timeout\n _this.createSecondPassFuncs = [];\n // these get called before the row is destroyed - they set up the DOM for the remove animation (ie they\n // set the DOM up for the animation), then the delayedDestroyFunctions get called when the animation is\n // complete (ie removes from the dom).\n _this.removeFirstPassFuncs = [];\n // for animations, these functions get called 400ms after the row is cleared, called by the rowRenderer\n // so each row isn't setting up it's own timeout\n _this.removeSecondPassFuncs = [];\n _this.initialised = false;\n _this.parentScope = parentScope;\n _this.beans = beans;\n _this.bodyContainerComp = bodyContainerComp;\n _this.pinnedLeftContainerComp = pinnedLeftContainerComp;\n _this.pinnedRightContainerComp = pinnedRightContainerComp;\n _this.fullWidthContainerComp = fullWidthContainerComp;\n _this.rowNode = rowNode;\n _this.rowIsEven = _this.rowNode.rowIndex % 2 === 0;\n _this.paginationPage = _this.beans.paginationProxy.getCurrentPage();\n _this.useAnimationFrameForCreate = useAnimationFrameForCreate;\n _this.printLayout = printLayout;\n _this.embedFullWidth = embedFullWidth;\n _this.setAnimateFlags(animateIn);\n return _this;\n }\n RowComp.prototype.init = function () {\n var _this = this;\n this.rowFocused = this.beans.focusedCellController.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n this.scope = this.createChildScopeOrNull(this.rowNode.data);\n this.setupRowContainers();\n this.addListeners();\n if (this.slideRowIn) {\n this.createSecondPassFuncs.push(function () {\n _this.onTopChanged();\n });\n }\n if (this.fadeRowIn) {\n this.createSecondPassFuncs.push(function () {\n _this.eAllRowContainers.forEach(function (eRow) { return utils_1._.removeCssClass(eRow, 'ag-opacity-zero'); });\n });\n }\n };\n RowComp.prototype.createTemplate = function (contents, extraCssClass) {\n if (extraCssClass === void 0) { extraCssClass = null; }\n var templateParts = [];\n var rowHeight = this.rowNode.rowHeight;\n var rowClasses = this.getInitialRowClasses(extraCssClass).join(' ');\n var rowIdSanitised = utils_1._.escape(this.rowNode.id);\n var userRowStyles = this.preProcessStylesFromGridOptions();\n var businessKey = this.getRowBusinessKey();\n var businessKeySanitised = utils_1._.escape(businessKey);\n var rowTopStyle = this.getInitialRowTopStyle();\n templateParts.push(\"\");\n // add in the template for the cells\n templateParts.push(contents);\n templateParts.push(\"\");\n return templateParts.join('');\n };\n RowComp.prototype.getCellForCol = function (column) {\n var cellComp = this.cellComps[column.getColId()];\n return cellComp ? cellComp.getGui() : null;\n };\n RowComp.prototype.afterFlush = function () {\n if (this.initialised) {\n return;\n }\n this.initialised = true;\n this.executeProcessRowPostCreateFunc();\n };\n RowComp.prototype.executeProcessRowPostCreateFunc = function () {\n var func = this.beans.gridOptionsWrapper.getProcessRowPostCreateFunc();\n if (!func) {\n return;\n }\n var params = {\n eRow: this.eBodyRow,\n ePinnedLeftRow: this.ePinnedLeftRow,\n ePinnedRightRow: this.ePinnedRightRow,\n node: this.rowNode,\n api: this.beans.gridOptionsWrapper.getApi(),\n rowIndex: this.rowNode.rowIndex,\n addRenderedRowListener: this.addEventListener.bind(this),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n func(params);\n };\n RowComp.prototype.getInitialRowTopStyle = function () {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return '';\n }\n // if sliding in, we take the old row top. otherwise we just set the current row top.\n var pixels = this.slideRowIn ? this.roundRowTopToBounds(this.rowNode.oldRowTop) : this.rowNode.rowTop;\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n var afterScalingPixels = this.beans.maxDivHeightScaler.getRealPixelPosition(afterPaginationPixels);\n var isSuppressRowTransform = this.beans.gridOptionsWrapper.isSuppressRowTransform();\n return isSuppressRowTransform ? \"top: \" + afterScalingPixels + \"px; \" : \"transform: translateY(\" + afterScalingPixels + \"px);\";\n };\n RowComp.prototype.getRowBusinessKey = function () {\n var businessKeyForNodeFunc = this.beans.gridOptionsWrapper.getBusinessKeyForNodeFunc();\n if (typeof businessKeyForNodeFunc !== 'function') {\n return;\n }\n return businessKeyForNodeFunc(this.rowNode);\n };\n RowComp.prototype.areAllContainersReady = function () {\n return this.rowContainerReadyCount === 3;\n };\n RowComp.prototype.lazyCreateCells = function (cols, eRow) {\n if (!this.active) {\n return;\n }\n var cellTemplatesAndComps = this.createCells(cols);\n eRow.innerHTML = cellTemplatesAndComps.template;\n this.callAfterRowAttachedOnCells(cellTemplatesAndComps.cellComps, eRow);\n this.rowContainerReadyCount++;\n if (this.areAllContainersReady() && this.refreshNeeded) {\n this.refreshCells();\n }\n };\n RowComp.prototype.createRowContainer = function (rowContainerComp, cols, callback) {\n var _this = this;\n var useAnimationsFrameForCreate = this.useAnimationFrameForCreate;\n var cellTemplatesAndComps = useAnimationsFrameForCreate ? { cellComps: [], template: '' } : this.createCells(cols);\n var rowTemplate = this.createTemplate(cellTemplatesAndComps.template);\n // the RowRenderer is probably inserting many rows. rather than inserting each template one\n // at a time, the grid inserts all rows together - so the callback here is called by the\n // rowRenderer when all RowComps are created, then all the HTML is inserted in one go,\n // and then all the callbacks are called. this is NOT done in an animation frame.\n rowContainerComp.appendRowTemplate(rowTemplate, function () {\n var eRow = rowContainerComp.getRowElement(_this.getCompId());\n _this.afterRowAttached(rowContainerComp, eRow);\n callback(eRow);\n // console.log(`createRowContainer ${this.getCompId()}`);\n if (useAnimationsFrameForCreate) {\n _this.beans.taskQueue.addP1Task(_this.lazyCreateCells.bind(_this, cols, eRow), _this.rowNode.rowIndex);\n }\n else {\n _this.callAfterRowAttachedOnCells(cellTemplatesAndComps.cellComps, eRow);\n _this.rowContainerReadyCount = 3;\n }\n });\n };\n RowComp.prototype.createChildScopeOrNull = function (data) {\n var isAngularCompileRows = this.beans.gridOptionsWrapper.isAngularCompileRows();\n if (!isAngularCompileRows) {\n return null;\n }\n var newChildScope = this.parentScope.$new();\n newChildScope.data = __assign({}, data);\n newChildScope.rowNode = this.rowNode;\n newChildScope.context = this.beans.gridOptionsWrapper.getContext();\n this.addDestroyFunc(function () {\n newChildScope.$destroy();\n newChildScope.data = null;\n newChildScope.rowNode = null;\n newChildScope.context = null;\n });\n return newChildScope;\n };\n RowComp.prototype.setupRowContainers = function () {\n var isFullWidthCellFunc = this.beans.gridOptionsWrapper.getIsFullWidthCellFunc();\n var isFullWidthCell = isFullWidthCellFunc ? isFullWidthCellFunc(this.rowNode) : false;\n var isDetailCell = this.beans.doingMasterDetail && this.rowNode.detail;\n var isGroupSpanningRow = this.rowNode.group && this.beans.gridOptionsWrapper.isGroupUseEntireRow();\n if (this.rowNode.stub) {\n this.createFullWidthRows(RowComp.LOADING_CELL_RENDERER, RowComp.LOADING_CELL_RENDERER_COMP_NAME);\n }\n else if (isDetailCell) {\n this.createFullWidthRows(RowComp.DETAIL_CELL_RENDERER, RowComp.DETAIL_CELL_RENDERER_COMP_NAME);\n }\n else if (isFullWidthCell) {\n this.createFullWidthRows(RowComp.FULL_WIDTH_CELL_RENDERER, null);\n }\n else if (isGroupSpanningRow) {\n this.createFullWidthRows(RowComp.GROUP_ROW_RENDERER, RowComp.GROUP_ROW_RENDERER_COMP_NAME);\n }\n else {\n this.setupNormalRowContainers();\n }\n };\n RowComp.prototype.setupNormalRowContainers = function () {\n var _this = this;\n var centerCols;\n var leftCols;\n var rightCols;\n if (this.printLayout) {\n centerCols = this.beans.columnController.getAllDisplayedColumns();\n leftCols = [];\n rightCols = [];\n }\n else {\n centerCols = this.beans.columnController.getAllDisplayedCenterVirtualColumnsForRow(this.rowNode);\n leftCols = this.beans.columnController.getDisplayedLeftColumnsForRow(this.rowNode);\n rightCols = this.beans.columnController.getDisplayedRightColumnsForRow(this.rowNode);\n }\n this.createRowContainer(this.bodyContainerComp, centerCols, function (eRow) { return _this.eBodyRow = eRow; });\n this.createRowContainer(this.pinnedRightContainerComp, rightCols, function (eRow) { return _this.ePinnedRightRow = eRow; });\n this.createRowContainer(this.pinnedLeftContainerComp, leftCols, function (eRow) { return _this.ePinnedLeftRow = eRow; });\n };\n RowComp.prototype.createFullWidthRows = function (type, name) {\n var _this = this;\n this.fullWidthRow = true;\n if (this.embedFullWidth) {\n this.createFullWidthRowContainer(this.bodyContainerComp, null, null, type, name, function (eRow) {\n _this.eFullWidthRowBody = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentBody = cellRenderer;\n });\n // printLayout doesn't put components into the pinned sections\n if (!this.printLayout) {\n this.createFullWidthRowContainer(this.pinnedLeftContainerComp, column_1.Column.PINNED_LEFT, 'ag-cell-last-left-pinned', type, name, function (eRow) {\n _this.eFullWidthRowLeft = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentLeft = cellRenderer;\n });\n this.createFullWidthRowContainer(this.pinnedRightContainerComp, column_1.Column.PINNED_RIGHT, 'ag-cell-first-right-pinned', type, name, function (eRow) {\n _this.eFullWidthRowRight = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentRight = cellRenderer;\n });\n }\n }\n else {\n // otherwise we add to the fullWidth container as normal\n // let previousFullWidth = ensureDomOrder ? this.lastPlacedElements.eFullWidth : null;\n this.createFullWidthRowContainer(this.fullWidthContainerComp, null, null, type, name, function (eRow) {\n _this.eFullWidthRow = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponent = cellRenderer;\n });\n }\n };\n RowComp.prototype.setAnimateFlags = function (animateIn) {\n if (animateIn) {\n var oldRowTopExists = utils_1._.exists(this.rowNode.oldRowTop);\n // if the row had a previous position, we slide it in (animate row top)\n this.slideRowIn = oldRowTopExists;\n // if the row had no previous position, we fade it in (animate\n this.fadeRowIn = !oldRowTopExists;\n }\n else {\n this.slideRowIn = false;\n this.fadeRowIn = false;\n }\n };\n RowComp.prototype.isEditing = function () {\n return this.editingRow;\n };\n RowComp.prototype.stopRowEditing = function (cancel) {\n this.stopEditing(cancel);\n };\n RowComp.prototype.isFullWidth = function () {\n return this.fullWidthRow;\n };\n RowComp.prototype.addListeners = function () {\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_TOP_CHANGED, this.onTopChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_EXPANDED_CHANGED, this.onExpandedChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_DATA_CHANGED, this.onRowNodeDataChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_CELL_CHANGED, this.onRowNodeCellChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_DRAGGING_CHANGED, this.onRowNodeDraggingChanged.bind(this));\n var eventService = this.beans.eventService;\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_HEIGHT_SCALE_CHANGED, this.onTopChanged.bind(this));\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_CELL_FOCUSED, this.onCellFocusChanged.bind(this));\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, events_1.Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n };\n // when grid columns change, then all cells should be cleaned out,\n // as the new columns could have same id as the previous columns and may conflict\n RowComp.prototype.onGridColumnsChanged = function () {\n this.removeRenderedCells(Object.keys(this.cellComps));\n };\n RowComp.prototype.onRowNodeDataChanged = function (event) {\n // if this is an update, we want to refresh, as this will allow the user to put in a transition\n // into the cellRenderer refresh method. otherwise this might be completely new data, in which case\n // we will want to completely replace the cells\n this.forEachCellComp(function (cellComp) {\n return cellComp.refreshCell({\n suppressFlash: !event.update,\n newData: !event.update\n });\n });\n // check for selected also, as this could be after lazy loading of the row data, in which case\n // the id might of just gotten set inside the row and the row selected state may of changed\n // as a result. this is what happens when selected rows are loaded in virtual pagination.\n // - niall note - since moving to the stub component, this may no longer be true, as replacing\n // the stub component now replaces the entire row\n this.onRowSelected();\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowComp.prototype.onRowNodeCellChanged = function (event) {\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowComp.prototype.postProcessCss = function () {\n this.postProcessStylesFromGridOptions();\n this.postProcessClassesFromGridOptions();\n this.postProcessRowClassRules();\n this.postProcessRowDragging();\n };\n RowComp.prototype.onRowNodeDraggingChanged = function () {\n this.postProcessRowDragging();\n };\n RowComp.prototype.postProcessRowDragging = function () {\n var dragging = this.rowNode.dragging;\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-dragging', dragging); });\n };\n RowComp.prototype.onExpandedChanged = function () {\n var rowNode = this.rowNode;\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-group-expanded', rowNode.expanded); });\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-group-contracted', !rowNode.expanded); });\n };\n RowComp.prototype.onDisplayedColumnsChanged = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.destroyFullWidthComponents = function () {\n if (this.fullWidthRowComponent) {\n if (this.fullWidthRowComponent.destroy) {\n this.fullWidthRowComponent.destroy();\n }\n this.fullWidthRowComponent = null;\n }\n if (this.fullWidthRowComponentBody) {\n if (this.fullWidthRowComponentBody.destroy) {\n this.fullWidthRowComponentBody.destroy();\n }\n this.fullWidthRowComponent = null;\n }\n if (this.fullWidthRowComponentLeft) {\n if (this.fullWidthRowComponentLeft.destroy) {\n this.fullWidthRowComponentLeft.destroy();\n }\n this.fullWidthRowComponentLeft = null;\n }\n if (this.fullWidthRowComponentRight) {\n if (this.fullWidthRowComponentRight.destroy) {\n this.fullWidthRowComponentRight.destroy();\n }\n this.fullWidthRowComponent = null;\n }\n };\n RowComp.prototype.getContainerForCell = function (pinnedType) {\n switch (pinnedType) {\n case column_1.Column.PINNED_LEFT: return this.ePinnedLeftRow;\n case column_1.Column.PINNED_RIGHT: return this.ePinnedRightRow;\n default: return this.eBodyRow;\n }\n };\n RowComp.prototype.onVirtualColumnsChanged = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.onColumnResized = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.refreshCells = function () {\n if (!this.areAllContainersReady()) {\n this.refreshNeeded = true;\n return;\n }\n var suppressAnimationFrame = this.beans.gridOptionsWrapper.isSuppressAnimationFrame();\n var skipAnimationFrame = suppressAnimationFrame || this.printLayout;\n if (skipAnimationFrame) {\n this.refreshCellsInAnimationFrame();\n }\n else {\n if (this.columnRefreshPending) {\n return;\n }\n this.beans.taskQueue.addP1Task(this.refreshCellsInAnimationFrame.bind(this), this.rowNode.rowIndex);\n }\n };\n RowComp.prototype.refreshCellsInAnimationFrame = function () {\n if (!this.active) {\n return;\n }\n this.columnRefreshPending = false;\n var centerCols;\n var leftCols;\n var rightCols;\n if (this.printLayout) {\n centerCols = this.beans.columnController.getAllDisplayedColumns();\n leftCols = [];\n rightCols = [];\n }\n else {\n centerCols = this.beans.columnController.getAllDisplayedCenterVirtualColumnsForRow(this.rowNode);\n leftCols = this.beans.columnController.getDisplayedLeftColumnsForRow(this.rowNode);\n rightCols = this.beans.columnController.getDisplayedRightColumnsForRow(this.rowNode);\n }\n this.insertCellsIntoContainer(this.eBodyRow, centerCols);\n this.insertCellsIntoContainer(this.ePinnedLeftRow, leftCols);\n this.insertCellsIntoContainer(this.ePinnedRightRow, rightCols);\n var colIdsToRemove = Object.keys(this.cellComps);\n centerCols.forEach(function (col) { return utils_1._.removeFromArray(colIdsToRemove, col.getId()); });\n leftCols.forEach(function (col) { return utils_1._.removeFromArray(colIdsToRemove, col.getId()); });\n rightCols.forEach(function (col) { return utils_1._.removeFromArray(colIdsToRemove, col.getId()); });\n // we never remove editing cells, as this would cause the cells to loose their values while editing\n // as the grid is scrolling horizontally.\n var eligibleToBeRemoved = utils_1._.filter(colIdsToRemove, this.isCellEligibleToBeRemoved.bind(this));\n // remove old cells from gui, but we don't destroy them, we might use them again\n this.removeRenderedCells(eligibleToBeRemoved);\n };\n RowComp.prototype.removeRenderedCells = function (colIds) {\n var _this = this;\n colIds.forEach(function (key) {\n var cellComp = _this.cellComps[key];\n // could be old reference, ie removed cell\n if (utils_1._.missing(cellComp)) {\n return;\n }\n cellComp.detach();\n cellComp.destroy();\n _this.cellComps[key] = null;\n });\n };\n RowComp.prototype.isCellEligibleToBeRemoved = function (indexStr) {\n var displayedColumns = this.beans.columnController.getAllDisplayedColumns();\n var REMOVE_CELL = true;\n var KEEP_CELL = false;\n var renderedCell = this.cellComps[indexStr];\n if (!renderedCell) {\n return REMOVE_CELL;\n }\n // always remove the cell if it's in the wrong pinned location\n if (this.isCellInWrongRow(renderedCell)) {\n return REMOVE_CELL;\n }\n // we want to try and keep editing and focused cells\n var editing = renderedCell.isEditing();\n var focused = this.beans.focusedCellController.isCellFocused(renderedCell.getGridCell());\n var mightWantToKeepCell = editing || focused;\n if (mightWantToKeepCell) {\n var column = renderedCell.getColumn();\n var cellStillDisplayed = displayedColumns.indexOf(column) >= 0;\n return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;\n }\n return REMOVE_CELL;\n };\n RowComp.prototype.ensureCellInCorrectContainer = function (cellComp) {\n // for print layout, we always put cells into centre, otherwise we put in correct pinned section\n if (this.printLayout) {\n return;\n }\n var element = cellComp.getGui();\n var column = cellComp.getColumn();\n var pinnedType = column.getPinned();\n var eContainer = this.getContainerForCell(pinnedType);\n // if in wrong container, remove it\n var eOldContainer = cellComp.getParentRow();\n var inWrongRow = eOldContainer !== eContainer;\n if (inWrongRow) {\n // take out from old row\n if (eOldContainer) {\n eOldContainer.removeChild(element);\n }\n eContainer.appendChild(element);\n cellComp.setParentRow(eContainer);\n }\n };\n RowComp.prototype.isCellInWrongRow = function (cellComp) {\n var column = cellComp.getColumn();\n var rowWeWant = this.getContainerForCell(column.getPinned());\n // if in wrong container, remove it\n var oldRow = cellComp.getParentRow();\n return oldRow !== rowWeWant;\n };\n RowComp.prototype.insertCellsIntoContainer = function (eRow, cols) {\n var _this = this;\n if (!eRow) {\n return;\n }\n var cellTemplates = [];\n var newCellComps = [];\n cols.forEach(function (col) {\n var colId = col.getId();\n var existingCell = _this.cellComps[colId];\n if (existingCell) {\n _this.ensureCellInCorrectContainer(existingCell);\n }\n else {\n _this.createNewCell(col, eRow, cellTemplates, newCellComps);\n }\n });\n if (cellTemplates.length > 0) {\n utils_1._.appendHtml(eRow, cellTemplates.join(''));\n this.callAfterRowAttachedOnCells(newCellComps, eRow);\n }\n };\n RowComp.prototype.addDomData = function (eRowContainer) {\n var gow = this.beans.gridOptionsWrapper;\n gow.setDomData(eRowContainer, RowComp.DOM_DATA_KEY_RENDERED_ROW, this);\n this.addDestroyFunc(function () {\n gow.setDomData(eRowContainer, RowComp.DOM_DATA_KEY_RENDERED_ROW, null);\n });\n };\n RowComp.prototype.createNewCell = function (col, eContainer, cellTemplates, newCellComps) {\n var newCellComp = new cellComp_1.CellComp(this.scope, this.beans, col, this.rowNode, this, false, this.printLayout);\n var cellTemplate = newCellComp.getCreateTemplate();\n cellTemplates.push(cellTemplate);\n newCellComps.push(newCellComp);\n this.cellComps[col.getId()] = newCellComp;\n newCellComp.setParentRow(eContainer);\n };\n RowComp.prototype.onMouseEvent = function (eventName, mouseEvent) {\n switch (eventName) {\n case 'dblclick':\n this.onRowDblClick(mouseEvent);\n break;\n case 'click':\n this.onRowClick(mouseEvent);\n break;\n }\n };\n RowComp.prototype.createRowEvent = function (type, domEvent) {\n return {\n type: type,\n node: this.rowNode,\n data: this.rowNode.data,\n rowIndex: this.rowNode.rowIndex,\n rowPinned: this.rowNode.rowPinned,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n event: domEvent\n };\n };\n RowComp.prototype.createRowEventWithSource = function (type, domEvent) {\n var event = this.createRowEvent(type, domEvent);\n // when first developing this, we included the rowComp in the event.\n // this seems very weird. so when introducing the event types, i left the 'source'\n // out of the type, and just include the source in the two places where this event\n // was fired (rowClicked and rowDoubleClicked). it doesn't make sense for any\n // users to be using this, as the rowComp isn't an object we expose, so would be\n // very surprising if a user was using it.\n event.source = this;\n return event;\n };\n RowComp.prototype.onRowDblClick = function (mouseEvent) {\n if (utils_1._.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var agEvent = this.createRowEventWithSource(events_1.Events.EVENT_ROW_DOUBLE_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n };\n RowComp.prototype.onRowClick = function (mouseEvent) {\n var stop = utils_1._.isStopPropagationForAgGrid(mouseEvent);\n if (stop) {\n return;\n }\n var agEvent = this.createRowEventWithSource(events_1.Events.EVENT_ROW_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n // ctrlKey for windows, metaKey for Apple\n var multiSelectKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n var shiftKeyPressed = mouseEvent.shiftKey;\n if (\n // we do not allow selecting groups by clicking (as the click here expands the group), or if it's a detail row,\n // so return if it's a group row\n this.rowNode.group ||\n // this is needed so we don't unselect other rows when we click this row, eg if this row is not selectable,\n // and we click it, the selection should not change (ie any currently selected row should stay selected)\n !this.rowNode.selectable ||\n // we also don't allow selection of pinned rows\n this.rowNode.rowPinned ||\n // if no selection method enabled, do nothing\n !this.beans.gridOptionsWrapper.isRowSelection() ||\n // if click selection suppressed, do nothing\n this.beans.gridOptionsWrapper.isSuppressRowClickSelection()) {\n return;\n }\n var multiSelectOnClick = this.beans.gridOptionsWrapper.isRowMultiSelectWithClick();\n var rowDeselectionWithCtrl = this.beans.gridOptionsWrapper.isRowDeselection();\n if (this.rowNode.isSelected()) {\n if (multiSelectOnClick) {\n this.rowNode.setSelectedParams({ newValue: false });\n }\n else if (multiSelectKeyPressed) {\n if (rowDeselectionWithCtrl) {\n this.rowNode.setSelectedParams({ newValue: false });\n }\n }\n else {\n // selected with no multi key, must make sure anything else is unselected\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: true });\n }\n }\n else {\n var clearSelection = multiSelectOnClick ? false : !multiSelectKeyPressed;\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: clearSelection, rangeSelect: shiftKeyPressed });\n }\n };\n RowComp.prototype.createFullWidthRowContainer = function (rowContainerComp, pinned, extraCssClass, cellRendererType, cellRendererName, eRowCallback, cellRendererCallback) {\n var _this = this;\n var rowTemplate = this.createTemplate('', extraCssClass);\n rowContainerComp.appendRowTemplate(rowTemplate, function () {\n var eRow = rowContainerComp.getRowElement(_this.getCompId());\n var params = _this.createFullWidthParams(eRow, pinned);\n var callback = function (cellRenderer) {\n if (_this.isAlive()) {\n var gui = cellRenderer.getGui();\n eRow.appendChild(gui);\n cellRendererCallback(cellRenderer);\n }\n else {\n if (cellRenderer.destroy) {\n cellRenderer.destroy();\n }\n }\n };\n var res = _this.beans.userComponentFactory.newFullWidthCellRenderer(params, cellRendererType, cellRendererName);\n if (!res) {\n console.error('ag-Grid: fullWidthCellRenderer not defined');\n return;\n }\n res.then(callback);\n _this.afterRowAttached(rowContainerComp, eRow);\n eRowCallback(eRow);\n var isDetailRow = _this.beans.doingMasterDetail && _this.rowNode.detail;\n if (!isDetailRow) {\n _this.angular1Compile(eRow);\n }\n });\n };\n RowComp.prototype.angular1Compile = function (element) {\n if (!this.scope) {\n return;\n }\n this.beans.$compile(element)(this.scope);\n };\n RowComp.prototype.createFullWidthParams = function (eRow, pinned) {\n var params = {\n fullWidth: true,\n data: this.rowNode.data,\n node: this.rowNode,\n value: this.rowNode.key,\n $scope: this.scope ? this.scope : this.parentScope,\n $compile: this.beans.$compile,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n // these need to be taken out, as part of 'afterAttached' now\n eGridCell: eRow,\n eParentOfValue: eRow,\n pinned: pinned,\n addRenderedRowListener: this.addEventListener.bind(this)\n };\n return params;\n };\n RowComp.prototype.getInitialRowClasses = function (extraCssClass) {\n var classes = [];\n var isTreeData = this.beans.gridOptionsWrapper.isTreeData();\n var rowNode = this.rowNode;\n if (utils_1._.exists(extraCssClass)) {\n classes.push(extraCssClass);\n }\n classes.push('ag-row');\n classes.push(this.rowFocused ? 'ag-row-focus' : 'ag-row-no-focus');\n if (this.fadeRowIn) {\n classes.push('ag-opacity-zero');\n }\n classes.push(this.rowIsEven ? 'ag-row-even' : 'ag-row-odd');\n if (rowNode.isSelected()) {\n classes.push('ag-row-selected');\n }\n if (rowNode.group) {\n classes.push('ag-row-group');\n // if a group, put the level of the group in\n classes.push('ag-row-level-' + rowNode.level);\n if (rowNode.footer) {\n classes.push('ag-row-footer');\n }\n }\n else {\n // if a leaf, and a parent exists, put a level of the parent, else put level of 0 for top level item\n classes.push('ag-row-level-' + (rowNode.parent ? (rowNode.parent.level + 1) : '0'));\n }\n if (rowNode.stub) {\n classes.push('ag-row-stub');\n }\n if (this.fullWidthRow) {\n classes.push('ag-full-width-row');\n }\n var addExpandedClass = isTreeData ?\n // if doing tree data, we add the expanded classes if any children, as any node can be a parent\n rowNode.allChildrenCount :\n // if normal row grouping, we add expanded classes to groups only\n rowNode.group && !rowNode.footer;\n if (addExpandedClass) {\n classes.push(rowNode.expanded ? 'ag-row-group-expanded' : 'ag-row-group-contracted');\n }\n if (rowNode.dragging) {\n classes.push('ag-row-dragging');\n }\n utils_1._.pushAll(classes, this.processClassesFromGridOptions());\n utils_1._.pushAll(classes, this.preProcessRowClassRules());\n // we use absolute position unless we are doing print layout\n classes.push(this.printLayout ? 'ag-row-position-relative' : 'ag-row-position-absolute');\n this.firstRowOnPage = this.isFirstRowOnPage();\n this.lastRowOnPage = this.isLastRowOnPage();\n if (this.firstRowOnPage) {\n classes.push('ag-row-first');\n }\n if (this.lastRowOnPage) {\n classes.push('ag-row-last');\n }\n return classes;\n };\n RowComp.prototype.isFirstRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageFirstRow();\n };\n RowComp.prototype.isLastRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageLastRow();\n };\n RowComp.prototype.onModelUpdated = function () {\n var newFirst = this.isFirstRowOnPage();\n var newLast = this.isLastRowOnPage();\n if (this.firstRowOnPage !== newFirst) {\n this.firstRowOnPage = newFirst;\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-first', newFirst); });\n }\n if (this.lastRowOnPage !== newLast) {\n this.lastRowOnPage = newLast;\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-last', newLast); });\n }\n };\n RowComp.prototype.preProcessRowClassRules = function () {\n var res = [];\n this.processRowClassRules(function (className) {\n res.push(className);\n }, function (className) {\n // not catered for, if creating, no need\n // to remove class as it was never there\n });\n return res;\n };\n RowComp.prototype.processRowClassRules = function (onApplicableClass, onNotApplicableClass) {\n this.beans.stylingService.processClassRules(this.beans.gridOptionsWrapper.rowClassRules(), {\n value: undefined,\n colDef: undefined,\n data: this.rowNode.data,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass, onNotApplicableClass);\n };\n RowComp.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.forEachCellComp(function (renderedCell) {\n renderedCell.stopEditing(cancel);\n });\n if (!this.editingRow) {\n return;\n }\n if (!cancel) {\n var event_1 = this.createRowEvent(events_1.Events.EVENT_ROW_VALUE_CHANGED);\n this.beans.eventService.dispatchEvent(event_1);\n }\n this.setEditingRow(false);\n };\n RowComp.prototype.setEditingRow = function (value) {\n this.editingRow = value;\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-editing', value); });\n var event = value ?\n this.createRowEvent(events_1.Events.EVENT_ROW_EDITING_STARTED)\n : this.createRowEvent(events_1.Events.EVENT_ROW_EDITING_STOPPED);\n this.beans.eventService.dispatchEvent(event);\n };\n RowComp.prototype.startRowEditing = function (keyPress, charPress, sourceRenderedCell) {\n if (keyPress === void 0) { keyPress = null; }\n if (charPress === void 0) { charPress = null; }\n if (sourceRenderedCell === void 0) { sourceRenderedCell = null; }\n // don't do it if already editing\n if (this.editingRow) {\n return;\n }\n this.forEachCellComp(function (renderedCell) {\n var cellStartedEdit = renderedCell === sourceRenderedCell;\n if (cellStartedEdit) {\n renderedCell.startEditingIfEnabled(keyPress, charPress, cellStartedEdit);\n }\n else {\n renderedCell.startEditingIfEnabled(null, null, cellStartedEdit);\n }\n });\n this.setEditingRow(true);\n };\n RowComp.prototype.forEachCellComp = function (callback) {\n utils_1._.iterateObject(this.cellComps, function (key, cellComp) {\n if (!cellComp) {\n return;\n }\n callback(cellComp);\n });\n };\n RowComp.prototype.postProcessClassesFromGridOptions = function () {\n var _this = this;\n var cssClasses = this.processClassesFromGridOptions();\n if (!cssClasses || !cssClasses.length) {\n return;\n }\n cssClasses.forEach(function (classStr) {\n _this.eAllRowContainers.forEach(function (row) { return utils_1._.addCssClass(row, classStr); });\n });\n };\n RowComp.prototype.postProcessRowClassRules = function () {\n var _this = this;\n this.processRowClassRules(function (className) {\n _this.eAllRowContainers.forEach(function (row) { return utils_1._.addCssClass(row, className); });\n }, function (className) {\n _this.eAllRowContainers.forEach(function (row) { return utils_1._.removeCssClass(row, className); });\n });\n };\n RowComp.prototype.processClassesFromGridOptions = function () {\n var res = [];\n var process = function (rowCls) {\n if (typeof rowCls === 'string') {\n res.push(rowCls);\n }\n else if (Array.isArray(rowCls)) {\n rowCls.forEach(function (e) { return res.push(e); });\n }\n };\n // part 1 - rowClass\n var rowClass = this.beans.gridOptionsWrapper.getRowClass();\n if (rowClass) {\n if (typeof rowClass === 'function') {\n console.warn('ag-Grid: rowClass should not be a function, please use getRowClass instead');\n return;\n }\n process(rowClass);\n }\n // part 2 - rowClassFunc\n var rowClassFunc = this.beans.gridOptionsWrapper.getRowClassFunc();\n if (rowClassFunc) {\n var params = {\n node: this.rowNode,\n data: this.rowNode.data,\n rowIndex: this.rowNode.rowIndex,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi()\n };\n var rowClassFuncResult = rowClassFunc(params);\n process(rowClassFuncResult);\n }\n return res;\n };\n RowComp.prototype.preProcessStylesFromGridOptions = function () {\n var rowStyles = this.processStylesFromGridOptions();\n return utils_1._.cssStyleObjectToMarkup(rowStyles);\n };\n RowComp.prototype.postProcessStylesFromGridOptions = function () {\n var rowStyles = this.processStylesFromGridOptions();\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addStylesToElement(row, rowStyles); });\n };\n RowComp.prototype.processStylesFromGridOptions = function () {\n // part 1 - rowStyle\n var rowStyle = this.beans.gridOptionsWrapper.getRowStyle();\n if (rowStyle && typeof rowStyle === 'function') {\n console.warn('ag-Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead');\n return;\n }\n // part 1 - rowStyleFunc\n var rowStyleFunc = this.beans.gridOptionsWrapper.getRowStyleFunc();\n var rowStyleFuncResult;\n if (rowStyleFunc) {\n var params = {\n data: this.rowNode.data,\n node: this.rowNode,\n api: this.beans.gridOptionsWrapper.getApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n $scope: this.scope\n };\n rowStyleFuncResult = rowStyleFunc(params);\n }\n return utils_1._.assign({}, rowStyle, rowStyleFuncResult);\n };\n RowComp.prototype.createCells = function (cols) {\n var _this = this;\n var templateParts = [];\n var newCellComps = [];\n cols.forEach(function (col) {\n var newCellComp = new cellComp_1.CellComp(_this.scope, _this.beans, col, _this.rowNode, _this, false, _this.printLayout);\n var cellTemplate = newCellComp.getCreateTemplate();\n templateParts.push(cellTemplate);\n newCellComps.push(newCellComp);\n _this.cellComps[col.getId()] = newCellComp;\n });\n var templateAndComps = {\n template: templateParts.join(''),\n cellComps: newCellComps\n };\n return templateAndComps;\n };\n RowComp.prototype.onRowSelected = function () {\n var selected = this.rowNode.isSelected();\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-selected', selected); });\n };\n // called:\n // + after row created for first time\n // + after horizontal scroll, so new cells due to column virtualisation\n RowComp.prototype.callAfterRowAttachedOnCells = function (newCellComps, eRow) {\n var _this = this;\n newCellComps.forEach(function (cellComp) {\n cellComp.setParentRow(eRow);\n cellComp.afterAttached();\n // if we are editing the row, then the cell needs to turn\n // into edit mode\n if (_this.editingRow) {\n cellComp.startEditingIfEnabled();\n }\n });\n };\n RowComp.prototype.afterRowAttached = function (rowContainerComp, eRow) {\n var _this = this;\n this.addDomData(eRow);\n this.removeSecondPassFuncs.push(function () {\n // console.log(eRow);\n rowContainerComp.removeRowElement(eRow);\n });\n this.removeFirstPassFuncs.push(function () {\n if (utils_1._.exists(_this.rowNode.rowTop)) {\n // the row top is updated anyway, however we set it here again\n // to something more reasonable for the animation - ie if the\n // row top is 10000px away, the row will flash out, so this\n // gives it a rounded value, so row animates out more slowly\n var rowTop = _this.roundRowTopToBounds(_this.rowNode.rowTop);\n _this.setRowTop(rowTop);\n }\n else {\n utils_1._.addCssClass(eRow, 'ag-opacity-zero');\n }\n });\n this.eAllRowContainers.push(eRow);\n // adding hover functionality adds listener to this row, so we\n // do it lazily in an animation frame\n if (this.useAnimationFrameForCreate) {\n this.beans.taskQueue.addP2Task(this.addHoverFunctionality.bind(this, eRow));\n }\n else {\n this.addHoverFunctionality(eRow);\n }\n };\n RowComp.prototype.addHoverFunctionality = function (eRow) {\n var _this = this;\n // because we use animation frames to do this, it's possible the row no longer exists\n // by the time we get to add it\n if (!this.active) {\n return;\n }\n // because mouseenter and mouseleave do not propagate, we cannot listen on the gridPanel\n // like we do for all the other mouse events.\n // because of the pinning, we cannot simply add / remove the class based on the eRow. we\n // have to check all eRow's (body & pinned). so the trick is if any of the rows gets a\n // mouse hover, it sets such in the rowNode, and then all three reflect the change as\n // all are listening for event on the row node.\n // step 1 - add listener, to set flag on row node\n this.addDestroyableEventListener(eRow, 'mouseenter', function () { return _this.rowNode.onMouseEnter(); });\n this.addDestroyableEventListener(eRow, 'mouseleave', function () { return _this.rowNode.onMouseLeave(); });\n // step 2 - listen for changes on row node (which any eRow can trigger)\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_MOUSE_ENTER, function () {\n // if hover turned off, we don't add the class. we do this here so that if the application\n // toggles this property mid way, we remove the hover form the last row, but we stop\n // adding hovers from that point onwards.\n if (!_this.beans.gridOptionsWrapper.isSuppressRowHoverHighlight()) {\n utils_1._.addCssClass(eRow, 'ag-row-hover');\n }\n });\n this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_MOUSE_LEAVE, function () {\n utils_1._.removeCssClass(eRow, 'ag-row-hover');\n });\n };\n // for animation, we don't want to animate entry or exit to a very far away pixel,\n // otherwise the row would move so fast, it would appear to disappear. so this method\n // moves the row closer to the viewport if it is far away, so the row slide in / out\n // at a speed the user can see.\n RowComp.prototype.roundRowTopToBounds = function (rowTop) {\n var range = this.beans.gridPanel.getVScrollPosition();\n var minPixel = this.applyPaginationOffset(range.top, true) - 100;\n var maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;\n return Math.min(Math.max(minPixel, rowTop), maxPixel);\n };\n RowComp.prototype.onRowHeightChanged = function () {\n // check for exists first - if the user is resetting the row height, then\n // it will be null (or undefined) momentarily until the next time the flatten\n // stage is called where the row will then update again with a new height\n if (utils_1._.exists(this.rowNode.rowHeight)) {\n var heightPx_1 = this.rowNode.rowHeight + \"px\";\n this.eAllRowContainers.forEach(function (row) { return row.style.height = heightPx_1; });\n }\n };\n RowComp.prototype.addEventListener = function (eventType, listener) {\n if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n eventType = events_1.Events.EVENT_VIRTUAL_ROW_REMOVED;\n console.warn('ag-Grid: Since version 11, event renderedRowRemoved is now called ' + events_1.Events.EVENT_VIRTUAL_ROW_REMOVED);\n }\n _super.prototype.addEventListener.call(this, eventType, listener);\n };\n RowComp.prototype.removeEventListener = function (eventType, listener) {\n if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n eventType = events_1.Events.EVENT_VIRTUAL_ROW_REMOVED;\n console.warn('ag-Grid: Since version 11, event renderedRowRemoved and rowRemoved is now called ' + events_1.Events.EVENT_VIRTUAL_ROW_REMOVED);\n }\n _super.prototype.removeEventListener.call(this, eventType, listener);\n };\n RowComp.prototype.destroy = function (animate) {\n if (animate === void 0) { animate = false; }\n _super.prototype.destroy.call(this);\n this.active = false;\n // why do we have this method? shouldn't everything below be added as a destroy func beside\n // the corresponding create logic?\n this.destroyFullWidthComponents();\n if (animate) {\n this.removeFirstPassFuncs.forEach(function (func) { return func(); });\n this.removeSecondPassFuncs.push(this.destroyContainingCells.bind(this));\n }\n else {\n this.destroyContainingCells();\n // we are not animating, so execute the second stage of removal now.\n // we call getAndClear, so that they are only called once\n var delayedDestroyFunctions = this.getAndClearDelayedDestroyFunctions();\n delayedDestroyFunctions.forEach(function (func) { return func(); });\n }\n var event = this.createRowEvent(events_1.Events.EVENT_VIRTUAL_ROW_REMOVED);\n this.dispatchEvent(event);\n this.beans.eventService.dispatchEvent(event);\n };\n RowComp.prototype.destroyContainingCells = function () {\n this.forEachCellComp(function (renderedCell) { return renderedCell.destroy(); });\n this.destroyFullWidthComponents();\n };\n // we clear so that the functions are never executed twice\n RowComp.prototype.getAndClearDelayedDestroyFunctions = function () {\n var result = this.removeSecondPassFuncs;\n this.removeSecondPassFuncs = [];\n return result;\n };\n RowComp.prototype.onCellFocusChanged = function () {\n var rowFocused = this.beans.focusedCellController.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n if (rowFocused !== this.rowFocused) {\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-focus', rowFocused); });\n this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-no-focus', !rowFocused); });\n this.rowFocused = rowFocused;\n }\n // if we are editing, then moving the focus out of a row will stop editing\n if (!rowFocused && this.editingRow) {\n this.stopEditing(false);\n }\n };\n RowComp.prototype.onPaginationChanged = function () {\n var currentPage = this.beans.paginationProxy.getCurrentPage();\n // it is possible this row is in the new page, but the page number has changed, which means\n // it needs to reposition itself relative to the new page\n if (this.paginationPage !== currentPage) {\n this.paginationPage = currentPage;\n this.onTopChanged();\n }\n };\n RowComp.prototype.onTopChanged = function () {\n this.setRowTop(this.rowNode.rowTop);\n };\n // applies pagination offset, eg if on second page, and page height is 500px, then removes\n // 500px from the top position, so a row with rowTop 600px is displayed at location 100px.\n // reverse will take the offset away rather than add.\n RowComp.prototype.applyPaginationOffset = function (topPx, reverse) {\n if (reverse === void 0) { reverse = false; }\n if (this.rowNode.isRowPinned()) {\n return topPx;\n }\n var pixelOffset = this.beans.paginationProxy.getPixelOffset();\n var multiplier = reverse ? 1 : -1;\n return topPx + (pixelOffset * multiplier);\n };\n RowComp.prototype.setRowTop = function (pixels) {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return;\n }\n // need to make sure rowTop is not null, as this can happen if the node was once\n // visible (ie parent group was expanded) but is now not visible\n if (utils_1._.exists(pixels)) {\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n var afterScalingPixels = this.beans.maxDivHeightScaler.getRealPixelPosition(afterPaginationPixels);\n var topPx_1 = afterScalingPixels + \"px\";\n if (this.beans.gridOptionsWrapper.isSuppressRowTransform()) {\n this.eAllRowContainers.forEach(function (row) { return row.style.top = topPx_1; });\n }\n else {\n this.eAllRowContainers.forEach(function (row) { return row.style.transform = \"translateY(\" + topPx_1 + \")\"; });\n }\n }\n };\n // we clear so that the functions are never executed twice\n RowComp.prototype.getAndClearNextVMTurnFunctions = function () {\n var result = this.createSecondPassFuncs;\n this.createSecondPassFuncs = [];\n return result;\n };\n RowComp.prototype.getRowNode = function () {\n return this.rowNode;\n };\n RowComp.prototype.getRenderedCellForColumn = function (column) {\n var _this = this;\n var cellComp = this.cellComps[column.getColId()];\n if (cellComp) {\n return cellComp;\n }\n var spanList = Object.keys(this.cellComps)\n .map(function (name) { return _this.cellComps[name]; })\n .filter(function (cmp) { return cmp.getColSpanningList().indexOf(column) !== -1; });\n return spanList.length ? spanList[0] : undefined;\n };\n RowComp.prototype.onRowIndexChanged = function () {\n this.onCellFocusChanged();\n this.updateRowIndexes();\n };\n RowComp.prototype.updateRowIndexes = function () {\n var rowIndexStr = this.rowNode.getRowIndexString();\n var rowIsEven = this.rowNode.rowIndex % 2 === 0;\n var rowIsEvenChanged = this.rowIsEven !== rowIsEven;\n if (rowIsEvenChanged) {\n this.rowIsEven = rowIsEven;\n }\n this.eAllRowContainers.forEach(function (eRow) {\n eRow.setAttribute('row-index', rowIndexStr);\n if (!rowIsEvenChanged) {\n return;\n }\n utils_1._.addOrRemoveCssClass(eRow, 'ag-row-even', rowIsEven);\n utils_1._.addOrRemoveCssClass(eRow, 'ag-row-odd', !rowIsEven);\n });\n };\n RowComp.prototype.ensureDomOrder = function () {\n var sides = [\n {\n el: this.getBodyRowElement(),\n ct: this.bodyContainerComp\n },\n {\n el: this.getPinnedLeftRowElement(),\n ct: this.pinnedLeftContainerComp\n }, {\n el: this.getPinnedRightRowElement(),\n ct: this.pinnedRightContainerComp\n }, {\n el: this.getFullWidthRowElement(),\n ct: this.fullWidthContainerComp\n }\n ];\n sides.forEach(function (side) {\n if (!side.el) {\n return;\n }\n side.ct.ensureDomOrder(side.el);\n });\n };\n // returns the pinned left container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getPinnedLeftRowElement = function () {\n return this.ePinnedLeftRow ? this.ePinnedLeftRow : this.eFullWidthRowLeft;\n };\n // returns the pinned right container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getPinnedRightRowElement = function () {\n return this.ePinnedRightRow ? this.ePinnedRightRow : this.eFullWidthRowRight;\n };\n // returns the body container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getBodyRowElement = function () {\n return this.eBodyRow ? this.eBodyRow : this.eFullWidthRowBody;\n };\n // returns the full width container\n RowComp.prototype.getFullWidthRowElement = function () {\n return this.eFullWidthRow;\n };\n RowComp.DOM_DATA_KEY_RENDERED_ROW = 'renderedRow';\n RowComp.FULL_WIDTH_CELL_RENDERER = 'fullWidthCellRenderer';\n RowComp.GROUP_ROW_RENDERER = 'groupRowRenderer';\n RowComp.GROUP_ROW_RENDERER_COMP_NAME = 'agGroupRowRenderer';\n RowComp.LOADING_CELL_RENDERER = 'loadingCellRenderer';\n RowComp.LOADING_CELL_RENDERER_COMP_NAME = 'agLoadingCellRenderer';\n RowComp.DETAIL_CELL_RENDERER = 'detailCellRenderer';\n RowComp.DETAIL_CELL_RENDERER_COMP_NAME = 'agDetailCellRenderer';\n return RowComp;\n}(component_1.Component));\nexports.RowComp = RowComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar rowNode_1 = require(\"../entities/rowNode\");\nvar context_1 = require(\"../context/context\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar constants_1 = require(\"../constants\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar gridApi_1 = require(\"../gridApi\");\nvar utils_1 = require(\"../utils\");\nvar PinnedRowModel = /** @class */ (function () {\n function PinnedRowModel() {\n }\n PinnedRowModel.prototype.init = function () {\n this.setPinnedTopRowData(this.gridOptionsWrapper.getPinnedTopRowData());\n this.setPinnedBottomRowData(this.gridOptionsWrapper.getPinnedBottomRowData());\n };\n PinnedRowModel.prototype.isEmpty = function (floating) {\n var rows = floating === constants_1.Constants.PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;\n return utils_1._.missingOrEmpty(rows);\n };\n PinnedRowModel.prototype.isRowsToRender = function (floating) {\n return !this.isEmpty(floating);\n };\n PinnedRowModel.prototype.getRowAtPixel = function (pixel, floating) {\n var rows = floating === constants_1.Constants.PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;\n if (utils_1._.missingOrEmpty(rows)) {\n return 0; // this should never happen, just in case, 0 is graceful failure\n }\n for (var i = 0; i < rows.length; i++) {\n var rowNode = rows[i];\n var rowTopPixel = rowNode.rowTop + rowNode.rowHeight - 1;\n // only need to range check against the top pixel, as we are going through the list\n // in order, first row to hit the pixel wins\n if (rowTopPixel >= pixel) {\n return i;\n }\n }\n return rows.length - 1;\n };\n PinnedRowModel.prototype.setPinnedTopRowData = function (rowData) {\n this.pinnedTopRows = this.createNodesFromData(rowData, true);\n var event = {\n type: events_1.Events.EVENT_PINNED_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n PinnedRowModel.prototype.setPinnedBottomRowData = function (rowData) {\n this.pinnedBottomRows = this.createNodesFromData(rowData, false);\n var event = {\n type: events_1.Events.EVENT_PINNED_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n PinnedRowModel.prototype.createNodesFromData = function (allData, isTop) {\n var _this = this;\n var rowNodes = [];\n if (allData) {\n var nextRowTop_1 = 0;\n allData.forEach(function (dataItem, index) {\n var rowNode = new rowNode_1.RowNode();\n _this.context.wireBean(rowNode);\n rowNode.data = dataItem;\n rowNode.rowPinned = isTop ? constants_1.Constants.PINNED_TOP : constants_1.Constants.PINNED_BOTTOM;\n rowNode.setRowTop(nextRowTop_1);\n rowNode.setRowHeight(_this.gridOptionsWrapper.getRowHeightForNode(rowNode).height);\n rowNode.setRowIndex(index);\n nextRowTop_1 += rowNode.rowHeight;\n rowNodes.push(rowNode);\n });\n }\n return rowNodes;\n };\n PinnedRowModel.prototype.getPinnedTopRowData = function () {\n return this.pinnedTopRows;\n };\n PinnedRowModel.prototype.getPinnedBottomRowData = function () {\n return this.pinnedBottomRows;\n };\n PinnedRowModel.prototype.getPinnedTopTotalHeight = function () {\n return this.getTotalHeight(this.pinnedTopRows);\n };\n PinnedRowModel.prototype.getPinnedTopRowCount = function () {\n return this.pinnedTopRows ? this.pinnedTopRows.length : 0;\n };\n PinnedRowModel.prototype.getPinnedBottomRowCount = function () {\n return this.pinnedBottomRows ? this.pinnedBottomRows.length : 0;\n };\n PinnedRowModel.prototype.getPinnedTopRow = function (index) {\n return this.pinnedTopRows[index];\n };\n PinnedRowModel.prototype.getPinnedBottomRow = function (index) {\n return this.pinnedBottomRows[index];\n };\n PinnedRowModel.prototype.forEachPinnedTopRow = function (callback) {\n if (utils_1._.missingOrEmpty(this.pinnedTopRows)) {\n return;\n }\n this.pinnedTopRows.forEach(callback);\n };\n PinnedRowModel.prototype.forEachPinnedBottomRow = function (callback) {\n if (utils_1._.missingOrEmpty(this.pinnedBottomRows)) {\n return;\n }\n this.pinnedBottomRows.forEach(callback);\n };\n PinnedRowModel.prototype.getPinnedBottomTotalHeight = function () {\n return this.getTotalHeight(this.pinnedBottomRows);\n };\n PinnedRowModel.prototype.getTotalHeight = function (rowNodes) {\n if (!rowNodes || rowNodes.length === 0) {\n return 0;\n }\n else {\n var lastNode = rowNodes[rowNodes.length - 1];\n return lastNode.rowTop + lastNode.rowHeight;\n }\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], PinnedRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], PinnedRowModel.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], PinnedRowModel.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], PinnedRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], PinnedRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], PinnedRowModel.prototype, \"init\", null);\n PinnedRowModel = __decorate([\n context_1.Bean('pinnedRowModel')\n ], PinnedRowModel);\n return PinnedRowModel;\n}());\nexports.PinnedRowModel = PinnedRowModel;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar componentUtil_1 = require(\"./componentUtil\");\nvar grid_1 = require(\"../grid\");\nvar registered = false;\nfunction initialiseAgGridWithWebComponents() {\n console.warn('ag-grid: initialiseAgGridWithWebComponents is deprecated. Please use the ag-grid-webcomponent dependency instead. ');\n // only register to WebComponents once\n if (registered) {\n return;\n }\n registered = true;\n if (typeof document === 'undefined' || !document.registerElement) {\n console.error('ag-Grid: unable to find document.registerElement() function, unable to initialise ag-Grid as a Web Component');\n }\n // i don't think this type of extension is possible in TypeScript, so back to\n // plain Javascript to create this object\n var AgileGridProto = Object.create(HTMLElement.prototype);\n // wrap each property with a get and set method, so we can track when changes are done\n componentUtil_1.ComponentUtil.ALL_PROPERTIES.forEach(function (key) {\n Object.defineProperty(AgileGridProto, key, {\n set: function (v) {\n this.__agGridSetProperty(key, v);\n },\n get: function () {\n return this.__agGridGetProperty(key);\n },\n enumerable: true,\n configurable: true\n });\n });\n var agGridProtoNoType = AgileGridProto;\n agGridProtoNoType.__agGridSetProperty = function (key, value) {\n if (!this.__attributes) {\n this.__attributes = {};\n }\n this.__attributes[key] = value;\n // keeping this consistent with the ng2 onChange, so I can reuse the handling code\n var changeObject = {};\n changeObject[key] = { currentValue: value };\n this.onChange(changeObject);\n };\n agGridProtoNoType.onChange = function (changes) {\n if (this._initialised) {\n componentUtil_1.ComponentUtil.processOnChange(changes, this._gridOptions, this.api, this.columnApi);\n }\n };\n agGridProtoNoType.__agGridGetProperty = function (key) {\n if (!this.__attributes) {\n this.__attributes = {};\n }\n return this.__attributes[key];\n };\n agGridProtoNoType.setGridOptions = function (options) {\n var globalEventListener = this.globalEventListener.bind(this);\n this._gridOptions = componentUtil_1.ComponentUtil.copyAttributesToGridOptions(options, this);\n var gridParams = {\n globalEventListener: globalEventListener\n };\n this._agGrid = new grid_1.Grid(this, this._gridOptions, gridParams);\n this.api = options.api;\n this.columnApi = options.columnApi;\n this._initialised = true;\n };\n // copies all the attributes into this object\n agGridProtoNoType.createdCallback = function () {\n for (var i = 0; i < this.attributes.length; i++) {\n var attribute = this.attributes[i];\n this.setPropertyFromAttribute(attribute);\n }\n };\n agGridProtoNoType.setPropertyFromAttribute = function (attribute) {\n var name = toCamelCase(attribute.nodeName);\n var value = attribute.nodeValue;\n if (componentUtil_1.ComponentUtil.ALL_PROPERTIES.indexOf(name) >= 0) {\n this[name] = value;\n }\n };\n agGridProtoNoType.attachedCallback = function (params) { };\n agGridProtoNoType.detachedCallback = function (params) { };\n agGridProtoNoType.attributeChangedCallback = function (attributeName) {\n var attribute = this.attributes[attributeName];\n this.setPropertyFromAttribute(attribute);\n };\n agGridProtoNoType.globalEventListener = function (eventType, event) {\n var eventLowerCase = eventType.toLowerCase();\n var browserEvent = new Event(eventLowerCase);\n var browserEventNoType = browserEvent;\n browserEventNoType.agGridDetails = event;\n this.dispatchEvent(browserEvent);\n var callbackMethod = 'on' + eventLowerCase;\n if (typeof this[callbackMethod] === 'function') {\n this[callbackMethod](browserEvent);\n }\n };\n // finally, register\n document.registerElement('ag-grid', { prototype: AgileGridProto });\n}\nexports.initialiseAgGridWithWebComponents = initialiseAgGridWithWebComponents;\nfunction toCamelCase(myString) {\n if (typeof myString === 'string') {\n var result = myString.replace(/-([a-z])/g, function (g) {\n return g[1].toUpperCase();\n });\n return result;\n }\n else {\n return myString;\n }\n}\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar TabbedLayout = /** @class */ (function () {\n function TabbedLayout(params) {\n var _this = this;\n this.items = [];\n this.params = params;\n this.eGui = document.createElement('div');\n this.eGui.innerHTML = TabbedLayout.TEMPLATE;\n this.eHeader = this.eGui.querySelector('[ref=\"tabHeader\"]');\n this.eBody = this.eGui.querySelector('[ref=\"tabBody\"]');\n utils_1._.addCssClass(this.eGui, params.cssClass);\n if (params.items) {\n params.items.forEach(function (item) { return _this.addItem(item); });\n }\n }\n TabbedLayout.prototype.setAfterAttachedParams = function (params) {\n this.afterAttachedParams = params;\n };\n TabbedLayout.prototype.getMinDimensions = function () {\n var eDummyContainer = this.eGui.cloneNode(true);\n var eDummyBody = eDummyContainer.querySelector('[ref=\"tabBody\"]');\n // position fixed, so it isn't restricted to the boundaries of the parent\n eDummyContainer.style.position = 'fixed';\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n this.eGui.appendChild(eDummyContainer);\n var minWidth = 0;\n var minHeight = 0;\n this.items.forEach(function (itemWrapper) {\n utils_1._.clearElement(eDummyBody);\n var eClone = itemWrapper.tabbedItem.bodyPromise.resolveNow(null, function (body) { return body.cloneNode(true); });\n if (eClone == null) {\n return;\n }\n eDummyBody.appendChild(eClone);\n if (minWidth < eDummyContainer.offsetWidth) {\n minWidth = eDummyContainer.offsetWidth;\n }\n if (minHeight < eDummyContainer.offsetHeight) {\n minHeight = eDummyContainer.offsetHeight;\n }\n });\n // finally check the parent tabs are no wider, as if they\n // are, then these are the min width and not the child tabs\n // if (minWidth 0) {\n this.showItemWrapper(this.items[0]);\n }\n };\n TabbedLayout.prototype.addItem = function (item) {\n var eHeaderButton = document.createElement('span');\n eHeaderButton.appendChild(item.title);\n utils_1._.addCssClass(eHeaderButton, 'ag-tab');\n this.eHeader.appendChild(eHeaderButton);\n var wrapper = {\n tabbedItem: item,\n eHeaderButton: eHeaderButton\n };\n this.items.push(wrapper);\n eHeaderButton.addEventListener('click', this.showItemWrapper.bind(this, wrapper));\n };\n TabbedLayout.prototype.showItem = function (tabbedItem) {\n var itemWrapper = utils_1._.find(this.items, function (wrapper) {\n return wrapper.tabbedItem === tabbedItem;\n });\n if (itemWrapper) {\n this.showItemWrapper(itemWrapper);\n }\n };\n TabbedLayout.prototype.showItemWrapper = function (wrapper) {\n var _this = this;\n if (this.params.onItemClicked) {\n this.params.onItemClicked({ item: wrapper.tabbedItem });\n }\n if (this.activeItem === wrapper) {\n utils_1._.callIfPresent(this.params.onActiveItemClicked);\n return;\n }\n utils_1._.clearElement(this.eBody);\n wrapper.tabbedItem.bodyPromise.then(function (body) {\n _this.eBody.appendChild(body);\n });\n if (this.activeItem) {\n utils_1._.removeCssClass(this.activeItem.eHeaderButton, 'ag-tab-selected');\n }\n utils_1._.addCssClass(wrapper.eHeaderButton, 'ag-tab-selected');\n this.activeItem = wrapper;\n if (wrapper.tabbedItem.afterAttachedCallback) {\n wrapper.tabbedItem.afterAttachedCallback(this.afterAttachedParams);\n }\n };\n TabbedLayout.prototype.getGui = function () {\n return this.eGui;\n };\n TabbedLayout.TEMPLATE = '
' +\n '
' +\n '
' +\n '
';\n return TabbedLayout;\n}());\nexports.TabbedLayout = TabbedLayout;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar ValueCache = /** @class */ (function () {\n function ValueCache() {\n this.cacheVersion = 0;\n }\n ValueCache.prototype.init = function () {\n this.active = this.gridOptionsWrapper.isValueCache();\n this.neverExpires = this.gridOptionsWrapper.isValueCacheNeverExpires();\n };\n ValueCache.prototype.onDataChanged = function () {\n if (this.neverExpires) {\n return;\n }\n this.expire();\n };\n ValueCache.prototype.expire = function () {\n this.cacheVersion++;\n };\n ValueCache.prototype.setValue = function (rowNode, colId, value) {\n if (this.active) {\n if (rowNode.__cacheVersion !== this.cacheVersion) {\n rowNode.__cacheVersion = this.cacheVersion;\n rowNode.__cacheData = {};\n }\n rowNode.__cacheData[colId] = value;\n }\n };\n ValueCache.prototype.getValue = function (rowNode, colId) {\n var valueInCache = this.active\n && rowNode.__cacheVersion === this.cacheVersion\n && rowNode.__cacheData[colId] !== undefined;\n if (valueInCache) {\n return rowNode.__cacheData[colId];\n }\n else {\n return undefined;\n }\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ValueCache.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ValueCache.prototype, \"init\", null);\n ValueCache = __decorate([\n context_1.Bean('valueCache')\n ], ValueCache);\n return ValueCache;\n}());\nexports.ValueCache = ValueCache;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar rowRenderer_1 = require(\"../rendering/rowRenderer\");\nvar context_1 = require(\"../context/context\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar dragService_1 = require(\"../dragAndDrop/dragService\");\nvar constants_1 = require(\"../constants\");\nvar mouseEventService_1 = require(\"./mouseEventService\");\nvar focusedCellController_1 = require(\"../focusedCellController\");\nvar scrollVisibleService_1 = require(\"./scrollVisibleService\");\nvar rowContainerComponent_1 = require(\"../rendering/rowContainerComponent\");\nvar paginationProxy_1 = require(\"../rowModels/paginationProxy\");\nvar popupEditorWrapper_1 = require(\"../rendering/cellEditors/popupEditorWrapper\");\nvar alignedGridsService_1 = require(\"../alignedGridsService\");\nvar pinnedRowModel_1 = require(\"../rowModels/pinnedRowModel\");\nvar gridApi_1 = require(\"../gridApi\");\nvar animationFrameService_1 = require(\"../misc/animationFrameService\");\nvar rowComp_1 = require(\"../rendering/rowComp\");\nvar navigationService_1 = require(\"./navigationService\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar touchListener_1 = require(\"../widgets/touchListener\");\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar rowDragFeature_1 = require(\"./rowDragFeature\");\nvar maxDivHeightScaler_1 = require(\"../rendering/maxDivHeightScaler\");\nvar overlayWrapperComponent_1 = require(\"../rendering/overlays/overlayWrapperComponent\");\nvar component_1 = require(\"../widgets/component\");\nvar autoHeightCalculator_1 = require(\"../rendering/autoHeightCalculator\");\nvar columnAnimationService_1 = require(\"../rendering/columnAnimationService\");\nvar autoWidthCalculator_1 = require(\"../rendering/autoWidthCalculator\");\nvar beans_1 = require(\"../rendering/beans\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar headerRootComp_1 = require(\"../headerRendering/headerRootComp\");\nvar resizeObserverService_1 = require(\"../misc/resizeObserverService\");\nvar utils_1 = require(\"../utils\");\n// in the html below, it is important that there are no white space between some of the divs, as if there is white space,\n// it won't render correctly in safari, as safari renders white space as a gap\nvar GRID_PANEL_NORMAL_TEMPLATE = \"
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\";\nvar GridPanel = /** @class */ (function (_super) {\n __extends(GridPanel, _super);\n function GridPanel() {\n var _this = _super.call(this, GRID_PANEL_NORMAL_TEMPLATE) || this;\n _this.scrollLeft = -1;\n _this.scrollTop = -1;\n _this.resetLastHorizontalScrollElementDebounce = utils_1._.debounce(_this.resetLastHorizontalScrollElement.bind(_this), 500);\n return _this;\n }\n GridPanel.prototype.getVScrollPosition = function () {\n var result = {\n top: this.eBodyViewport.scrollTop,\n bottom: this.eBodyViewport.scrollTop + this.eBodyViewport.offsetHeight\n };\n return result;\n };\n GridPanel.prototype.getHScrollPosition = function () {\n var result = {\n left: this.eCenterViewport.scrollLeft,\n right: this.eCenterViewport.scrollLeft + this.eCenterViewport.offsetWidth\n };\n return result;\n };\n GridPanel.prototype.onRowDataChanged = function () {\n this.showOrHideOverlay();\n };\n GridPanel.prototype.showOrHideOverlay = function () {\n var isEmpty = this.paginationProxy.isEmpty();\n var isSuppressNoRowsOverlay = this.gridOptionsWrapper.isSuppressNoRowsOverlay();\n var method = isEmpty && !isSuppressNoRowsOverlay ? 'showNoRowsOverlay' : 'hideOverlay';\n this[method]();\n };\n GridPanel.prototype.onNewColumnsLoaded = function () {\n // hide overlay if columns and rows exist, this can happen if columns are loaded after data.\n // this problem exists before of the race condition between the services (column controller in this case)\n // and the view (grid panel). if the model beans were all initialised first, and then the view beans second,\n // this race condition would not happen.\n if (this.columnController.isReady() && !this.paginationProxy.isEmpty()) {\n this.hideOverlay();\n }\n };\n GridPanel.prototype.init = function () {\n var _this = this;\n this.scrollWidth = this.gridOptionsWrapper.getScrollbarWidth();\n this.enableRtl = this.gridOptionsWrapper.isEnableRtl();\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n // these elements have different CSS when layout changes\n this.gridOptionsWrapper.addLayoutElement(this.getGui());\n this.gridOptionsWrapper.addLayoutElement(this.eBodyViewport);\n this.suppressScrollOnFloatingRow();\n this.setupRowAnimationCssClass();\n this.buildRowContainerComponents();\n this.addEventListeners();\n this.addDragListeners();\n this.addScrollListener();\n if (this.gridOptionsWrapper.isRowModelDefault() && !this.gridOptionsWrapper.getRowData()) {\n this.showLoadingOverlay();\n }\n this.setCellTextSelection(this.gridOptionsWrapper.isEnableCellTextSelect());\n this.setPinnedContainerSize();\n this.setHeaderAndFloatingHeights();\n this.disableBrowserDragging();\n this.addMouseListeners();\n this.addKeyboardEvents();\n this.addBodyViewportListener();\n this.addStopEditingWhenGridLosesFocus();\n this.mockContextMenuForIPad();\n this.addRowDragListener();\n if (this.$scope) {\n this.addAngularApplyCheck();\n }\n this.onDisplayedColumnsWidthChanged();\n this.gridApi.registerGridComp(this);\n this.alignedGridsService.registerGridComp(this);\n this.headerRootComp.registerGridComp(this);\n this.navigationService.registerGridComp(this);\n this.heightScaler.registerGridComp(this);\n this.autoHeightCalculator.registerGridComp(this);\n this.columnAnimationService.registerGridComp(this);\n this.autoWidthCalculator.registerGridComp(this);\n this.paginationAutoPageSizeService.registerGridComp(this);\n this.beans.registerGridComp(this);\n this.rowRenderer.registerGridComp(this);\n if (this.rangeController) {\n this.rangeController.registerGridComp(this);\n }\n [this.eCenterViewport, this.eBodyViewport].forEach(function (viewport) {\n var unsubscribeFromResize = _this.resizeObserverService.observeResize(viewport, _this.onCenterViewportResized.bind(_this));\n _this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n });\n };\n GridPanel.prototype.onDomLayoutChanged = function () {\n var newPrintLayout = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n if (this.printLayout !== newPrintLayout) {\n this.printLayout = newPrintLayout;\n this.setWidthsOfContainers();\n // pinned containers are always hidden for print layout\n this.setPinnedContainerSize();\n }\n };\n GridPanel.prototype.onCenterViewportResized = function () {\n this.checkViewportAndScrolls();\n };\n // used by ColumnAnimationService\n GridPanel.prototype.setColumnMovingCss = function (moving) {\n this.addOrRemoveCssClass('ag-column-moving', moving);\n };\n GridPanel.prototype.setCellTextSelection = function (selectable) {\n if (selectable === void 0) { selectable = false; }\n [this.eTop, this.eCenterContainer, this.eBottom]\n .forEach(function (ct) { return utils_1._.addOrRemoveCssClass(ct, 'ag-selectable', selectable); });\n };\n GridPanel.prototype.addRowDragListener = function () {\n var rowDragFeature = new rowDragFeature_1.RowDragFeature(this.eBodyViewport, this);\n this.getContext().wireBean(rowDragFeature);\n this.dragAndDropService.addDropTarget(rowDragFeature);\n };\n GridPanel.prototype.addStopEditingWhenGridLosesFocus = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isStopEditingWhenGridLosesFocus()) {\n return;\n }\n var focusOutListener = function (event) {\n // this is the element the focus is moving to\n var elementWithFocus = event.relatedTarget;\n // see if the element the focus is going to is part of the grid\n var clickInsideGrid = false;\n var pointer = elementWithFocus;\n while (utils_1._.exists(pointer) && !clickInsideGrid) {\n var isPopup = !!_this.gridOptionsWrapper.getDomData(pointer, popupEditorWrapper_1.PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER);\n var isBody = _this.eBodyViewport === pointer || _this.eBottom === pointer || _this.eTop === pointer;\n clickInsideGrid = isPopup || isBody;\n pointer = pointer.parentNode;\n }\n if (!clickInsideGrid) {\n _this.rowRenderer.stopEditing();\n }\n };\n this.addDestroyableEventListener(this.eBodyViewport, 'focusout', focusOutListener);\n this.addDestroyableEventListener(this.eTop, 'focusout', focusOutListener);\n this.addDestroyableEventListener(this.eBottom, 'focusout', focusOutListener);\n };\n GridPanel.prototype.addAngularApplyCheck = function () {\n var _this = this;\n // this makes sure if we queue up requests, we only execute oe\n var applyTriggered = false;\n var listener = function () {\n // only need to do one apply at a time\n if (applyTriggered) {\n return;\n }\n applyTriggered = true; // mark 'need apply' to true\n window.setTimeout(function () {\n applyTriggered = false;\n _this.$scope.$apply();\n }, 0);\n };\n // these are the events we need to do an apply after - these are the ones that can end up\n // with columns added or removed\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_VIRTUAL_COLUMNS_CHANGED, listener);\n };\n // if we do not do this, then the user can select a pic in the grid (eg an image in a custom cell renderer)\n // and then that will start the browser native drag n' drop, which messes up with our own drag and drop.\n GridPanel.prototype.disableBrowserDragging = function () {\n this.addGuiEventListener('dragstart', function (event) {\n if (event.target instanceof HTMLImageElement) {\n event.preventDefault();\n return false;\n }\n });\n };\n GridPanel.prototype.addEventListeners = function () {\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_PINNED_ROW_DATA_CHANGED, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_ROW_DATA_CHANGED, this.onRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_ROW_DATA_UPDATED, this.onRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n };\n GridPanel.prototype.addDragListeners = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isEnableRangeSelection() || // no range selection if no property\n utils_1._.missing(this.rangeController) // no range selection if not enterprise version\n ) {\n return;\n }\n var containers = [\n this.eLeftContainer,\n this.eRightContainer,\n this.eCenterContainer,\n this.eTop,\n this.eBottom\n ];\n containers.forEach(function (container) {\n var params = {\n eElement: container,\n onDragStart: _this.rangeController.onDragStart.bind(_this.rangeController),\n onDragStop: _this.rangeController.onDragStop.bind(_this.rangeController),\n onDragging: _this.rangeController.onDragging.bind(_this.rangeController),\n // for range selection by dragging the mouse, we want to ignore the event if shift key is pressed,\n // as shift key click is another type of range selection\n skipMouseEvent: function (mouseEvent) { return mouseEvent.shiftKey; }\n };\n _this.dragService.addDragSource(params);\n _this.addDestroyFunc(function () { return _this.dragService.removeDragSource(params); });\n });\n };\n GridPanel.prototype.addMouseListeners = function () {\n var _this = this;\n var eventNames = ['click', 'mousedown', 'dblclick', 'contextmenu', 'mouseover', 'mouseout'];\n eventNames.forEach(function (eventName) {\n var listener = _this.processMouseEvent.bind(_this, eventName);\n _this.eAllCellContainers.forEach(function (container) {\n return _this.addDestroyableEventListener(container, eventName, listener);\n });\n });\n };\n GridPanel.prototype.addKeyboardEvents = function () {\n var _this = this;\n var eventNames = ['keydown', 'keypress'];\n eventNames.forEach(function (eventName) {\n var listener = _this.processKeyboardEvent.bind(_this, eventName);\n _this.eAllCellContainers.forEach(function (container) {\n _this.addDestroyableEventListener(container, eventName, listener, true);\n });\n });\n };\n GridPanel.prototype.addBodyViewportListener = function () {\n var _this = this;\n // we want to listen for clicks directly on the eBodyViewport, so the user has a way of showing\n // the context menu if no rows or columns are displayed, or user simply clicks outside of a cell\n var listener = function (mouseEvent) {\n var target = utils_1._.getTarget(mouseEvent);\n if (target === _this.eBodyViewport || target === _this.eCenterViewport) {\n // show it\n _this.onContextMenu(mouseEvent, null, null, null, null);\n _this.preventDefaultOnContextMenu(mouseEvent);\n }\n };\n //For some reason listening only to this.eBody doesn't work... Maybe because the event is consumed somewhere else?\n //In any case, not expending much time on this, if anyone comes across this and knows how to make this work with\n //one listener please go ahead and change it...\n this.addDestroyableEventListener(this.eBodyViewport, 'contextmenu', listener);\n };\n // + rangeController - used to know when to scroll when user is dragging outside the\n // main viewport while doing a range selection\n GridPanel.prototype.getBodyClientRect = function () {\n if (!this.eBodyViewport) {\n return;\n }\n return this.eBodyViewport.getBoundingClientRect();\n };\n GridPanel.prototype.getRowForEvent = function (event) {\n var sourceElement = utils_1._.getTarget(event);\n while (sourceElement) {\n var renderedRow = this.gridOptionsWrapper.getDomData(sourceElement, rowComp_1.RowComp.DOM_DATA_KEY_RENDERED_ROW);\n if (renderedRow) {\n return renderedRow;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n };\n GridPanel.prototype.processKeyboardEvent = function (eventName, keyboardEvent) {\n var cellComp = utils_1._.getCellCompForEvent(this.gridOptionsWrapper, keyboardEvent);\n var rowNode = cellComp.getRenderedRow().getRowNode();\n var column = cellComp.getColumn();\n var editing = cellComp.isEditing();\n if (!cellComp) {\n return;\n }\n var gridProcessingAllowed = !utils_1._.isUserSuppressingKeyboardEvent(this.gridOptionsWrapper, keyboardEvent, rowNode, column, editing);\n if (gridProcessingAllowed) {\n switch (eventName) {\n case 'keydown':\n // first see if it's a scroll key, page up / down, home / end etc\n var wasScrollKey = this.navigationService.handlePageScrollingKey(keyboardEvent);\n // if not a scroll key, then we pass onto cell\n if (!wasScrollKey) {\n cellComp.onKeyDown(keyboardEvent);\n }\n this.doClipboardOperations(keyboardEvent, cellComp);\n break;\n case 'keypress':\n cellComp.onKeyPress(keyboardEvent);\n break;\n }\n }\n else {\n keyboardEvent.preventDefault();\n }\n if (eventName === 'keydown') {\n var cellKeyDownEvent = cellComp.createEvent(keyboardEvent, events_1.Events.EVENT_CELL_KEY_DOWN);\n this.beans.eventService.dispatchEvent(cellKeyDownEvent);\n }\n if (eventName === 'keypress') {\n var cellKeyPressEvent = cellComp.createEvent(keyboardEvent, events_1.Events.EVENT_CELL_KEY_PRESS);\n this.beans.eventService.dispatchEvent(cellKeyPressEvent);\n }\n };\n GridPanel.prototype.doClipboardOperations = function (keyboardEvent, cellComp) {\n // check if ctrl or meta key pressed\n if (!keyboardEvent.ctrlKey && !keyboardEvent.metaKey) {\n return;\n }\n // if the cell the event came from is editing, then we do not\n // want to do the default shortcut keys, otherwise the editor\n // (eg a text field) would not be able to do the normal cut/copy/paste\n if (cellComp.isEditing()) {\n return;\n }\n // for copy / paste, we don't want to execute when the event\n // was from a child grid (happens in master detail)\n if (!this.mouseEventService.isEventFromThisGrid(keyboardEvent)) {\n return;\n }\n switch (keyboardEvent.which) {\n case constants_1.Constants.KEY_A:\n return this.onCtrlAndA(keyboardEvent);\n case constants_1.Constants.KEY_C:\n return this.onCtrlAndC(keyboardEvent);\n case constants_1.Constants.KEY_V:\n return this.onCtrlAndV();\n case constants_1.Constants.KEY_D:\n return this.onCtrlAndD(keyboardEvent);\n }\n };\n // gets called by rowRenderer when new data loaded, as it will want to scroll to the top\n GridPanel.prototype.scrollToTop = function () {\n this.eBodyViewport.scrollTop = 0;\n };\n GridPanel.prototype.processMouseEvent = function (eventName, mouseEvent) {\n if (!this.mouseEventService.isEventFromThisGrid(mouseEvent) ||\n utils_1._.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var rowComp = this.getRowForEvent(mouseEvent);\n var cellComp = this.mouseEventService.getRenderedCellForEvent(mouseEvent);\n if (eventName === \"contextmenu\") {\n this.handleContextMenuMouseEvent(mouseEvent, null, rowComp, cellComp);\n }\n else {\n if (cellComp) {\n cellComp.onMouseEvent(eventName, mouseEvent);\n }\n if (rowComp) {\n rowComp.onMouseEvent(eventName, mouseEvent);\n }\n }\n this.preventDefaultOnContextMenu(mouseEvent);\n };\n GridPanel.prototype.mockContextMenuForIPad = function () {\n var _this = this;\n // we do NOT want this when not in iPad, otherwise we will be doing\n if (!utils_1._.isUserAgentIPad()) {\n return;\n }\n this.eAllCellContainers.forEach(function (container) {\n var touchListener = new touchListener_1.TouchListener(container);\n var longTapListener = function (event) {\n var rowComp = _this.getRowForEvent(event.touchEvent);\n var cellComp = _this.mouseEventService.getRenderedCellForEvent(event.touchEvent);\n _this.handleContextMenuMouseEvent(null, event.touchEvent, rowComp, cellComp);\n };\n _this.addDestroyableEventListener(touchListener, touchListener_1.TouchListener.EVENT_LONG_TAP, longTapListener);\n _this.addDestroyFunc(function () { return touchListener.destroy(); });\n });\n };\n GridPanel.prototype.handleContextMenuMouseEvent = function (mouseEvent, touchEvent, rowComp, cellComp) {\n var rowNode = rowComp ? rowComp.getRowNode() : null;\n var column = cellComp ? cellComp.getColumn() : null;\n var value = null;\n if (column) {\n var event_1 = mouseEvent ? mouseEvent : touchEvent;\n cellComp.dispatchCellContextMenuEvent(event_1);\n value = this.valueService.getValue(column, rowNode);\n }\n this.onContextMenu(mouseEvent, touchEvent, rowNode, column, value);\n };\n GridPanel.prototype.onContextMenu = function (mouseEvent, touchEvent, rowNode, column, value) {\n // to allow us to debug in chrome, we ignore the event if ctrl is pressed.\n // not everyone wants this, so first 'if' below allows to turn this hack off.\n if (!this.gridOptionsWrapper.isAllowContextMenuWithControlKey()) {\n // then do the check\n if (mouseEvent && (mouseEvent.ctrlKey || mouseEvent.metaKey)) {\n return;\n }\n }\n if (this.contextMenuFactory && !this.gridOptionsWrapper.isSuppressContextMenu()) {\n var eventOrTouch = mouseEvent ? mouseEvent : touchEvent.touches[0];\n this.contextMenuFactory.showMenu(rowNode, column, value, eventOrTouch);\n var event_2 = mouseEvent ? mouseEvent : touchEvent;\n event_2.preventDefault();\n }\n };\n GridPanel.prototype.preventDefaultOnContextMenu = function (mouseEvent) {\n // if we don't do this, then middle click will never result in a 'click' event, as 'mousedown'\n // will be consumed by the browser to mean 'scroll' (as you can scroll with the middle mouse\n // button in the browser). so this property allows the user to receive middle button clicks if\n // they want.\n if (this.gridOptionsWrapper.isSuppressMiddleClickScrolls() && mouseEvent.which === 2) {\n mouseEvent.preventDefault();\n }\n };\n GridPanel.prototype.onCtrlAndA = function (event) {\n var _a = this, columnController = _a.columnController, pinnedRowModel = _a.pinnedRowModel, paginationProxy = _a.paginationProxy, rangeController = _a.rangeController;\n var PINNED_BOTTOM = constants_1.Constants.PINNED_BOTTOM, PINNED_TOP = constants_1.Constants.PINNED_TOP;\n if (rangeController && paginationProxy.isRowsToRender()) {\n var _b = [\n pinnedRowModel.isEmpty(PINNED_TOP),\n pinnedRowModel.isEmpty(PINNED_BOTTOM)\n ], isEmptyPinnedTop = _b[0], isEmptyPinnedBottom = _b[1];\n var floatingStart = isEmptyPinnedTop ? null : PINNED_TOP;\n var floatingEnd = void 0;\n var rowEnd = void 0;\n if (isEmptyPinnedBottom) {\n floatingEnd = null;\n rowEnd = this.paginationProxy.getTotalRowCount() - 1;\n }\n else {\n floatingEnd = PINNED_BOTTOM;\n rowEnd = pinnedRowModel.getPinnedBottomRowData().length - 1;\n }\n var allDisplayedColumns = columnController.getAllDisplayedColumns();\n if (utils_1._.missingOrEmpty(allDisplayedColumns)) {\n return;\n }\n rangeController.setRange({\n rowStart: 0,\n floatingStart: floatingStart,\n rowEnd: rowEnd,\n floatingEnd: floatingEnd,\n columnStart: allDisplayedColumns[0],\n columnEnd: allDisplayedColumns[allDisplayedColumns.length - 1]\n });\n }\n event.preventDefault();\n };\n GridPanel.prototype.onCtrlAndC = function (event) {\n if (!this.clipboardService || this.gridOptionsWrapper.isEnableCellTextSelection()) {\n return;\n }\n var focusedCell = this.focusedCellController.getFocusedCell();\n this.clipboardService.copyToClipboard();\n event.preventDefault();\n // the copy operation results in loosing focus on the cell,\n // because of the trickery the copy logic uses with a temporary\n // widget. so we set it back again.\n if (focusedCell) {\n this.focusedCellController.setFocusedCell(focusedCell.rowIndex, focusedCell.column, focusedCell.floating, true);\n }\n };\n GridPanel.prototype.onCtrlAndV = function () {\n if (!this.enterprise || this.gridOptionsWrapper.isSuppressClipboardPaste()) {\n return;\n }\n this.clipboardService.pasteFromClipboard();\n };\n GridPanel.prototype.onCtrlAndD = function (event) {\n if (!this.enterprise) {\n return;\n }\n this.clipboardService.copyRangeDown();\n event.preventDefault();\n };\n // Valid values for position are bottom, middle and top\n // position should be {'top','middle','bottom', or undefined/null}.\n // if undefined/null, then the grid will to the minimal amount of scrolling,\n // eg if grid needs to scroll up, it scrolls until row is on top,\n // if grid needs to scroll down, it scrolls until row is on bottom,\n // if row is already in view, grid does not scroll\n // fixme - how does this work in the new way\n GridPanel.prototype.ensureIndexVisible = function (index, position) {\n // if for print or auto height, everything is always visible\n if (this.printLayout) {\n return;\n }\n var rowCount = this.paginationProxy.getTotalRowCount();\n if (typeof index !== 'number' || index < 0 || index >= rowCount) {\n console.warn('invalid row index for ensureIndexVisible: ' + index);\n return;\n }\n this.paginationProxy.goToPageWithIndex(index);\n var rowNode = this.paginationProxy.getRow(index);\n var rowGotShiftedDuringOperation;\n do {\n var startingRowTop = rowNode.rowTop;\n var startingRowHeight = rowNode.rowHeight;\n var paginationOffset = this.paginationProxy.getPixelOffset();\n var rowTopPixel = rowNode.rowTop - paginationOffset;\n var rowBottomPixel = rowTopPixel + rowNode.rowHeight;\n var scrollPosition = this.getVScrollPosition();\n var heightOffset = this.heightScaler.getOffset();\n var vScrollTop = scrollPosition.top + heightOffset;\n var vScrollBottom = scrollPosition.bottom + heightOffset;\n var viewportHeight = vScrollBottom - vScrollTop;\n // work out the pixels for top, middle and bottom up front,\n // make the if/else below easier to read\n var pxTop = this.heightScaler.getScrollPositionForPixel(rowTopPixel);\n var pxBottom = this.heightScaler.getScrollPositionForPixel(rowBottomPixel - viewportHeight);\n // make sure if middle, the row is not outside the top of the grid\n var pxMiddle = Math.min((pxTop + pxBottom) / 2, rowTopPixel);\n var rowBelowViewport = vScrollTop > rowTopPixel;\n var rowAboveViewport = vScrollBottom < rowBottomPixel;\n var newScrollPosition = null;\n if (position === 'top') {\n newScrollPosition = pxTop;\n }\n else if (position === 'bottom') {\n newScrollPosition = pxBottom;\n }\n else if (position === 'middle') {\n newScrollPosition = pxMiddle;\n }\n else if (rowBelowViewport) {\n // if row is before, scroll up with row at top\n newScrollPosition = pxTop;\n }\n else if (rowAboveViewport) {\n // if row is below, scroll down with row at bottom\n newScrollPosition = pxBottom;\n }\n if (newScrollPosition !== null) {\n this.eBodyViewport.scrollTop = newScrollPosition;\n this.rowRenderer.redrawAfterScroll();\n }\n // the row can get shifted if during the rendering (during rowRenderer.redrawAfterScroll()),\n // the height of a row changes due to lazy calculation of row heights when using\n // colDef.autoHeight or gridOptions.getRowHeight.\n // if row was shifted, then the position we scrolled to is incorrect.\n rowGotShiftedDuringOperation = (startingRowTop !== rowNode.rowTop)\n || (startingRowHeight !== rowNode.rowHeight);\n } while (rowGotShiftedDuringOperation);\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n };\n // + moveColumnController\n GridPanel.prototype.getCenterWidth = function () {\n return this.eCenterViewport.clientWidth;\n };\n GridPanel.prototype.isVerticalScrollShowing = function () {\n var isAlwaysShowVerticalScroll = this.gridOptionsWrapper.isAlwaysShowVerticalScroll();\n utils_1._.addOrRemoveCssClass(this.eBodyViewport, 'ag-force-vertical-scroll', isAlwaysShowVerticalScroll);\n return isAlwaysShowVerticalScroll || utils_1._.isVerticalScrollShowing(this.eBodyViewport);\n };\n GridPanel.prototype.isHorizontalScrollShowing = function () {\n return utils_1._.isHorizontalScrollShowing(this.eCenterViewport);\n };\n // gets called every time the viewport size changes. we use this to check visibility of scrollbars\n // in the grid panel, and also to check size and position of viewport for row and column virtualisation.\n GridPanel.prototype.checkViewportAndScrolls = function () {\n // results in updating anything that depends on scroll showing\n this.updateScrollVisibleService();\n // fires event if height changes, used by PaginationService, HeightScalerService, RowRenderer\n this.checkBodyHeight();\n // check for virtual columns for ColumnController\n this.onHorizontalViewportChanged();\n this.setPinnedContainerSize();\n };\n GridPanel.prototype.updateScrollVisibleService = function () {\n // because of column animation (which takes 200ms), we have to do this twice.\n // eg if user removes cols anywhere except at the RHS, then the cols on the RHS\n // will animate to the left to fill the gap. this animation means just after\n // the cols are removed, the remaining cols are still in the original location\n // at the start of the animation, so pre animation the H scrollbar is still needed,\n // but post animation it is not.\n this.updateScrollVisibleServiceImpl();\n setTimeout(this.updateScrollVisibleServiceImpl.bind(this), 500);\n };\n GridPanel.prototype.updateScrollVisibleServiceImpl = function () {\n var params = {\n horizontalScrollShowing: false,\n verticalScrollShowing: false\n };\n params.verticalScrollShowing = this.isVerticalScrollShowing();\n params.horizontalScrollShowing = this.isHorizontalScrollShowing();\n this.scrollVisibleService.setScrollsVisible(params);\n this.setHorizontalScrollVisible(params.horizontalScrollShowing);\n this.setVerticalScrollPaddingVisible(params.verticalScrollShowing);\n };\n GridPanel.prototype.setHorizontalScrollVisible = function (visible) {\n var isSuppressHorizontalScroll = this.gridOptionsWrapper.isSuppressHorizontalScroll();\n var scrollSize = visible ? (this.gridOptionsWrapper.getScrollbarWidth() || 0) : 0;\n var scrollContainerSize = !isSuppressHorizontalScroll ? scrollSize : 0;\n var addIEPadding = utils_1._.isBrowserIE() && visible;\n this.eCenterViewport.style.height = \"calc(100% + \" + scrollSize + \"px)\";\n utils_1._.setFixedHeight(this.eHorizontalScrollBody, scrollContainerSize);\n // we have to add an extra pixel to the scroller viewport on IE because\n // if the container has the same size as the scrollbar, the scroll button won't work\n utils_1._.setFixedHeight(this.eBodyHorizontalScrollViewport, scrollContainerSize + (addIEPadding ? 1 : 0));\n if (addIEPadding) {\n this.eBodyHorizontalScrollViewport.style.bottom = '1px';\n }\n utils_1._.setFixedHeight(this.eBodyHorizontalScrollContainer, scrollContainerSize);\n };\n GridPanel.prototype.setVerticalScrollPaddingVisible = function (show) {\n var scroller = show ? \"scroll\" : \"hidden\";\n this.eTop.style.overflowY = this.eBottom.style.overflowY = scroller;\n this.setFakeHScrollSpacerWidths();\n };\n GridPanel.prototype.ensureColumnVisible = function (key) {\n var column = this.columnController.getGridColumn(key);\n if (!column) {\n return;\n }\n if (column.isPinned()) {\n console.warn('calling ensureIndexVisible on a ' + column.getPinned() + ' pinned column doesn\\'t make sense for column ' + column.getColId());\n return;\n }\n if (!this.columnController.isColumnDisplayed(column)) {\n console.warn('column is not currently visible');\n return;\n }\n var colLeftPixel = column.getLeft();\n var colRightPixel = colLeftPixel + column.getActualWidth();\n var viewportWidth = this.eCenterViewport.clientWidth;\n var scrollPosition = this.getCenterViewportScrollLeft();\n var bodyWidth = this.columnController.getBodyContainerWidth();\n var viewportLeftPixel;\n var viewportRightPixel;\n // the logic of working out left and right viewport px is both here and in the ColumnController,\n // need to refactor it out to one place\n if (this.enableRtl) {\n viewportLeftPixel = bodyWidth - scrollPosition - viewportWidth;\n viewportRightPixel = bodyWidth - scrollPosition;\n }\n else {\n viewportLeftPixel = scrollPosition;\n viewportRightPixel = viewportWidth + scrollPosition;\n }\n var viewportScrolledPastCol = viewportLeftPixel > colLeftPixel;\n var viewportScrolledBeforeCol = viewportRightPixel < colRightPixel;\n var colToSmallForViewport = viewportWidth < column.getActualWidth();\n var alignColToLeft = viewportScrolledPastCol || colToSmallForViewport;\n var alignColToRight = viewportScrolledBeforeCol;\n var newScrollPosition = this.getCenterViewportScrollLeft();\n if (alignColToLeft || alignColToRight) {\n if (this.enableRtl) {\n newScrollPosition = alignColToLeft ? (bodyWidth - viewportWidth - colLeftPixel) : (bodyWidth - colRightPixel);\n }\n else {\n newScrollPosition = alignColToLeft ? colLeftPixel : (colRightPixel - viewportWidth);\n }\n this.setCenterViewportScrollLeft(newScrollPosition);\n }\n else {\n // otherwise, col is already in view, so do nothing\n }\n // this will happen anyway, as the move will cause a 'scroll' event on the body, however\n // it is possible that the ensureColumnVisible method is called from within ag-Grid and\n // the caller will need to have the columns rendered to continue, which will be before\n // the event has been worked on (which is the case for cell navigation).\n this.onHorizontalViewportChanged();\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n };\n GridPanel.prototype.showLoadingOverlay = function () {\n if (!this.gridOptionsWrapper.isSuppressLoadingOverlay()) {\n this.overlayWrapper.showLoadingOverlay();\n }\n };\n GridPanel.prototype.showNoRowsOverlay = function () {\n if (!this.gridOptionsWrapper.isSuppressNoRowsOverlay()) {\n this.overlayWrapper.showNoRowsOverlay();\n }\n };\n GridPanel.prototype.hideOverlay = function () {\n this.overlayWrapper.hideOverlay();\n };\n // method will call itself if no available width. this covers if the grid\n // isn't visible, but is just about to be visible.\n GridPanel.prototype.sizeColumnsToFit = function (nextTimeout) {\n var _this = this;\n var availableWidth = this.eBodyViewport.clientWidth;\n if (availableWidth > 0) {\n this.columnController.sizeColumnsToFit(availableWidth, \"sizeColumnsToFit\");\n return;\n }\n if (nextTimeout === undefined) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(100);\n }, 0);\n }\n else if (nextTimeout === 100) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(500);\n }, 100);\n }\n else if (nextTimeout === 500) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(-1);\n }, 500);\n }\n else {\n console.warn('ag-Grid: tried to call sizeColumnsToFit() but the grid is coming back with ' +\n 'zero width, maybe the grid is not visible yet on the screen?');\n }\n };\n // used by autoWidthCalculator and autoHeightCalculator\n GridPanel.prototype.getCenterContainer = function () {\n return this.eCenterContainer;\n };\n GridPanel.prototype.getDropTargetBodyContainers = function () {\n return [this.eCenterViewport, this.eTopViewport, this.eBottomViewport];\n };\n GridPanel.prototype.getDropTargetLeftContainers = function () {\n return [this.eLeftContainer, this.eLeftBottom, this.eLeftTop];\n };\n GridPanel.prototype.getDropTargetRightContainers = function () {\n return [this.eRightContainer, this.eRightBottom, this.eRightTop];\n };\n GridPanel.prototype.buildRowContainerComponents = function () {\n var _this = this;\n this.eAllCellContainers = [\n this.eLeftContainer, this.eRightContainer, this.eCenterContainer,\n this.eTop, this.eBottom, this.eFullWidthContainer\n ];\n this.rowContainerComponents = {\n body: new rowContainerComponent_1.RowContainerComponent({\n eContainer: this.eCenterContainer,\n eWrapper: this.eCenterColsClipper,\n eViewport: this.eBodyViewport\n }),\n fullWidth: new rowContainerComponent_1.RowContainerComponent({\n eContainer: this.eFullWidthContainer\n }),\n pinnedLeft: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eLeftContainer }),\n pinnedRight: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eRightContainer }),\n floatingTop: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eTopContainer }),\n floatingTopPinnedLeft: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eLeftTop }),\n floatingTopPinnedRight: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eRightTop }),\n floatingTopFullWidth: new rowContainerComponent_1.RowContainerComponent({\n eContainer: this.eTopFullWidthContainer,\n hideWhenNoChildren: true\n }),\n floatingBottom: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eBottomContainer }),\n floatingBottomPinnedLeft: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eLeftBottom }),\n floatingBottomPinnedRight: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eRightBottom }),\n floatingBottomFullWith: new rowContainerComponent_1.RowContainerComponent({\n eContainer: this.eBottomFullWidthContainer,\n hideWhenNoChildren: true\n }),\n };\n utils_1._.iterateObject(this.rowContainerComponents, function (key, container) {\n if (container) {\n _this.getContext().wireBean(container);\n }\n });\n };\n GridPanel.prototype.setupRowAnimationCssClass = function () {\n var _this = this;\n var listener = function () {\n // we don't want to use row animation if scaling, as rows jump strangely as you scroll,\n // when scaling and doing row animation.\n var animateRows = _this.gridOptionsWrapper.isAnimateRows() && !_this.heightScaler.isScaling();\n utils_1._.addOrRemoveCssClass(_this.eBodyViewport, 'ag-row-animation', animateRows);\n utils_1._.addOrRemoveCssClass(_this.eBodyViewport, 'ag-row-no-animation', !animateRows);\n };\n listener();\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_HEIGHT_SCALE_CHANGED, listener);\n };\n // when editing a pinned row, if the cell is half outside the scrollable area, the browser can\n // scroll the column into view. we do not want this, the pinned sections should never scroll.\n // so we listen to scrolls on these containers and reset the scroll if we find one.\n GridPanel.prototype.suppressScrollOnFloatingRow = function () {\n var _this = this;\n var resetTopScroll = function () { return _this.eTopViewport.scrollLeft = 0; };\n var resetBottomScroll = function () { return _this.eTopViewport.scrollLeft = 0; };\n this.addDestroyableEventListener(this.eTopViewport, 'scroll', resetTopScroll);\n this.addDestroyableEventListener(this.eBottomViewport, 'scroll', resetBottomScroll);\n };\n GridPanel.prototype.getRowContainers = function () {\n return this.rowContainerComponents;\n };\n GridPanel.prototype.getFloatingTopBottom = function () {\n return [this.eTop, this.eBottom];\n };\n GridPanel.prototype.onDisplayedColumnsChanged = function () {\n this.setPinnedContainerSize();\n this.setHeaderAndFloatingHeights();\n this.onHorizontalViewportChanged();\n this.updateScrollVisibleService();\n };\n GridPanel.prototype.onDisplayedColumnsWidthChanged = function () {\n this.setWidthsOfContainers();\n this.onHorizontalViewportChanged();\n this.updateScrollVisibleService();\n if (this.enableRtl) {\n // because RTL is all backwards, a change in the width of the row\n // can cause a change in the scroll position, without a scroll event,\n // because the scroll position in RTL is a function that depends on\n // the width. to be convinced of this, take out this line, enable RTL,\n // scroll all the way to the left and then resize a column\n this.horizontallyScrollHeaderCenterAndFloatingCenter();\n }\n };\n GridPanel.prototype.setWidthsOfContainers = function () {\n this.setCenterWidth();\n this.setPinnedContainerSize();\n };\n GridPanel.prototype.setCenterWidth = function () {\n var width = this.columnController.getBodyContainerWidth();\n if (this.printLayout) {\n var pinnedContainerWidths = this.columnController.getPinnedLeftContainerWidth()\n + this.columnController.getPinnedRightContainerWidth();\n width += pinnedContainerWidths;\n }\n this.headerRootComp.setHeaderContainerWidth(width);\n var widthPx = width + \"px\";\n this.eCenterContainer.style.width = widthPx;\n this.eBottomContainer.style.width = widthPx;\n this.eTopContainer.style.width = widthPx;\n if (!this.printLayout) {\n this.eBodyHorizontalScrollContainer.style.width = widthPx;\n }\n };\n GridPanel.prototype.setPinnedLeftWidth = function () {\n var _this = this;\n var oldPinning = this.pinningLeft;\n var widthOfCols = this.columnController.getPinnedLeftContainerWidth();\n var newPinning = this.pinningLeft = !this.printLayout && widthOfCols > 0;\n var containers = [this.eLeftContainer, this.eLeftTop, this.eLeftBottom];\n if (oldPinning !== newPinning) {\n this.headerRootComp.setLeftVisible(newPinning);\n }\n containers.forEach(function (e) { return utils_1._.setVisible(e, _this.pinningLeft); });\n if (newPinning) {\n containers.forEach(function (ct) { return utils_1._.setFixedWidth(ct, widthOfCols); });\n }\n };\n GridPanel.prototype.setPinnedRightWidth = function () {\n var oldPinning = this.pinningRight;\n var widthOfCols = this.columnController.getPinnedRightContainerWidth();\n var newPinning = this.pinningRight = !this.printLayout && widthOfCols > 0;\n var containers = [this.eRightContainer, this.eRightTop, this.eRightBottom];\n if (oldPinning !== newPinning) {\n this.headerRootComp.setRightVisible(newPinning);\n }\n containers.forEach(function (ct) { return utils_1._.setVisible(ct, newPinning); });\n if (newPinning) {\n containers.forEach(function (ct) { return utils_1._.setFixedWidth(ct, widthOfCols); });\n }\n };\n GridPanel.prototype.setPinnedContainerSize = function () {\n this.setPinnedLeftWidth();\n this.setPinnedRightWidth();\n this.setFakeHScrollSpacerWidths();\n };\n GridPanel.prototype.setFakeHScrollSpacerWidths = function () {\n // we pad the right based on a) if cols are pinned to the right and\n // b) if v scroll is showing on the right (normal position of scroll)\n var rightSpacing = this.columnController.getPinnedRightContainerWidth();\n var scrollOnRight = !this.enableRtl && this.isVerticalScrollShowing();\n if (scrollOnRight) {\n rightSpacing += this.scrollWidth;\n }\n utils_1._.setFixedWidth(this.eHorizontalRightSpacer, rightSpacing);\n utils_1._.addOrRemoveCssClass(this.eHorizontalRightSpacer, 'ag-scroller-corner', rightSpacing <= this.scrollWidth);\n // we pad the left based on a) if cols are pinned to the left and\n // b) if v scroll is showing on the left (happens in LTR layout only)\n var leftSpacing = this.columnController.getPinnedLeftContainerWidth();\n var scrollOnLeft = this.enableRtl && this.isVerticalScrollShowing();\n if (scrollOnLeft) {\n leftSpacing += this.scrollWidth;\n }\n utils_1._.setFixedWidth(this.eHorizontalLeftSpacer, leftSpacing);\n utils_1._.addOrRemoveCssClass(this.eHorizontalLeftSpacer, 'ag-scroller-corner', leftSpacing <= this.scrollWidth);\n };\n GridPanel.prototype.checkBodyHeight = function () {\n var bodyHeight = this.eBodyViewport.clientHeight;\n if (this.bodyHeight !== bodyHeight) {\n this.bodyHeight = bodyHeight;\n var event_3 = {\n type: events_1.Events.EVENT_BODY_HEIGHT_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_3);\n }\n };\n GridPanel.prototype.setHeaderAndFloatingHeights = function () {\n var _a = this, columnController = _a.columnController, gridOptionsWrapper = _a.gridOptionsWrapper, pinnedRowModel = _a.pinnedRowModel, eTop = _a.eTop, eBottom = _a.eBottom;\n var numberOfFloating = 0;\n var headerRowCount = columnController.getHeaderRowCount();\n var totalHeaderHeight;\n var groupHeight;\n var headerHeight;\n if (!columnController.isPivotMode()) {\n if (gridOptionsWrapper.isFloatingFilter()) {\n headerRowCount++;\n }\n numberOfFloating = (gridOptionsWrapper.isFloatingFilter()) ? 1 : 0;\n groupHeight = gridOptionsWrapper.getGroupHeaderHeight();\n headerHeight = gridOptionsWrapper.getHeaderHeight();\n }\n else {\n numberOfFloating = 0;\n groupHeight = gridOptionsWrapper.getPivotGroupHeaderHeight();\n headerHeight = gridOptionsWrapper.getPivotHeaderHeight();\n }\n var numberOfNonGroups = 1 + numberOfFloating;\n var numberOfGroups = headerRowCount - numberOfNonGroups;\n totalHeaderHeight = numberOfFloating * gridOptionsWrapper.getFloatingFiltersHeight();\n totalHeaderHeight += numberOfGroups * groupHeight;\n totalHeaderHeight += headerHeight;\n this.headerRootComp.setHeight(totalHeaderHeight);\n var floatingTopHeight = pinnedRowModel.getPinnedTopTotalHeight();\n if (floatingTopHeight) {\n // adding 1px for cell bottom border\n floatingTopHeight += 1;\n }\n var floatingBottomHeight = pinnedRowModel.getPinnedBottomTotalHeight();\n if (floatingBottomHeight) {\n // adding 1px for cell bottom border\n floatingBottomHeight += 1;\n }\n var floatingTopHeightString = floatingTopHeight + \"px\";\n var floatingBottomHeightString = floatingBottomHeight + \"px\";\n eTop.style.minHeight = floatingTopHeightString;\n eTop.style.height = floatingTopHeightString;\n eTop.style.display = floatingTopHeight ? 'inherit' : 'none';\n eBottom.style.minHeight = floatingBottomHeightString;\n eBottom.style.height = floatingBottomHeightString;\n eBottom.style.display = floatingBottomHeight ? 'inherit' : 'none';\n this.checkBodyHeight();\n };\n GridPanel.prototype.getBodyHeight = function () {\n return this.bodyHeight;\n };\n // called by scrollHorizontally method and alignedGridsService\n GridPanel.prototype.setHorizontalScrollPosition = function (hScrollPosition) {\n this.eCenterViewport.scrollLeft = hScrollPosition;\n // we need to manually do the event handling (rather than wait for the event)\n // for the alignedGridsService, as if we don't, the aligned grid service gets\n // notified async, and then it's 'consuming' flag doesn't get used right, and\n // we can end up with an infinite loop\n this.doHorizontalScroll(hScrollPosition);\n };\n GridPanel.prototype.setVerticalScrollPosition = function (vScrollPosition) {\n this.eBodyViewport.scrollTop = vScrollPosition;\n };\n // called by the headerRootComp and moveColumnController\n GridPanel.prototype.scrollHorizontally = function (pixels) {\n var oldScrollPosition = this.eCenterViewport.scrollLeft;\n this.setHorizontalScrollPosition(oldScrollPosition + pixels);\n return this.eCenterViewport.scrollLeft - oldScrollPosition;\n };\n // called by rowDragFeature\n GridPanel.prototype.scrollVertically = function (pixels) {\n var oldScrollPosition = this.eBodyViewport.scrollTop;\n this.setVerticalScrollPosition(oldScrollPosition + pixels);\n return this.eBodyViewport.scrollTop - oldScrollPosition;\n };\n GridPanel.prototype.addScrollListener = function () {\n this.addDestroyableEventListener(this.eCenterViewport, 'scroll', this.onCenterViewportScroll.bind(this));\n this.addDestroyableEventListener(this.eBodyHorizontalScrollViewport, 'scroll', this.onFakeHorizontalScroll.bind(this));\n this.addDestroyableEventListener(this.eBodyViewport, 'scroll', this.onVerticalScroll.bind(this));\n };\n GridPanel.prototype.onVerticalScroll = function () {\n var scrollTop = this.eBodyViewport.scrollTop;\n this.scrollTop = scrollTop;\n this.animationFrameService.setScrollTop(scrollTop);\n this.redrawRowsAfterScroll();\n };\n GridPanel.prototype.isControllingScroll = function (eDiv) {\n if (!this.lastHorizontalScrollElement) {\n this.lastHorizontalScrollElement = eDiv;\n return true;\n }\n return eDiv === this.lastHorizontalScrollElement;\n };\n GridPanel.prototype.onFakeHorizontalScroll = function () {\n if (!this.isControllingScroll(this.eBodyHorizontalScrollViewport)) {\n return;\n }\n this.onBodyHorizontalScroll(this.eBodyHorizontalScrollViewport);\n };\n GridPanel.prototype.onCenterViewportScroll = function () {\n if (!this.isControllingScroll(this.eCenterViewport)) {\n return;\n }\n this.onBodyHorizontalScroll(this.eCenterViewport);\n };\n GridPanel.prototype.onBodyHorizontalScroll = function (eSource) {\n var _a = this.eCenterViewport, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n // in chrome, fractions can be in the scroll left, eg 250.342234 - which messes up our 'scrollWentPastBounds'\n // formula. so we floor it to allow the formula to work.\n var scrollLeft = Math.floor(utils_1._.getScrollLeft(eSource, this.enableRtl));\n // touch devices allow elastic scroll - which temporally scrolls the panel outside of the viewport\n // (eg user uses touch to go to the left of the grid, but drags past the left, the rows will actually\n // scroll past the left until the user releases the mouse). when this happens, we want ignore the scroll,\n // as otherwise it was causing the rows and header to flicker.\n var scrollWentPastBounds = scrollLeft < 0 || (scrollLeft + clientWidth > scrollWidth);\n if (scrollWentPastBounds) {\n return;\n }\n this.doHorizontalScroll(scrollLeft);\n this.resetLastHorizontalScrollElementDebounce();\n };\n GridPanel.prototype.resetLastHorizontalScrollElement = function () {\n this.lastHorizontalScrollElement = null;\n };\n GridPanel.prototype.doHorizontalScroll = function (scrollLeft) {\n this.scrollLeft = scrollLeft;\n var event = {\n type: events_1.Events.EVENT_BODY_SCROLL,\n api: this.gridApi,\n columnApi: this.columnApi,\n direction: 'horizontal',\n left: this.scrollLeft,\n top: this.scrollTop\n };\n this.eventService.dispatchEvent(event);\n this.horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft);\n this.onHorizontalViewportChanged();\n };\n GridPanel.prototype.redrawRowsAfterScroll = function () {\n var event = {\n type: events_1.Events.EVENT_BODY_SCROLL,\n direction: 'vertical',\n api: this.gridApi,\n columnApi: this.columnApi,\n left: this.scrollLeft,\n top: this.scrollTop\n };\n this.eventService.dispatchEvent(event);\n };\n // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n // out the virtual columns again. gets called from following locations:\n // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged, API (doLayout)\n GridPanel.prototype.onHorizontalViewportChanged = function () {\n var scrollWidth = this.eCenterViewport.clientWidth;\n var scrollPosition = this.getCenterViewportScrollLeft();\n this.columnController.setVirtualViewportPosition(scrollWidth, scrollPosition);\n };\n GridPanel.prototype.getCenterViewportScrollLeft = function () {\n // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n return utils_1._.getScrollLeft(this.eCenterViewport, this.enableRtl);\n };\n GridPanel.prototype.setCenterViewportScrollLeft = function (value) {\n // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n utils_1._.setScrollLeft(this.eCenterViewport, value, this.enableRtl);\n };\n GridPanel.prototype.horizontallyScrollHeaderCenterAndFloatingCenter = function (scrollLeft) {\n if (scrollLeft === undefined) {\n scrollLeft = this.getCenterViewportScrollLeft();\n }\n var offset = this.enableRtl ? scrollLeft : -scrollLeft;\n var _a = this.eCenterViewport, clientWidth = _a.clientWidth, scrollWidth = _a.scrollWidth;\n var scrollWentPastBounds = Math.abs(offset) + clientWidth > scrollWidth;\n if (scrollWentPastBounds ||\n (this.enableRtl && offset < 0) ||\n (!this.enableRtl && offset > 0)) {\n return;\n }\n this.headerRootComp.setHorizontalScroll(offset);\n this.eBottomContainer.style.transform = \"translateX(\" + offset + \"px)\";\n this.eTopContainer.style.transform = \"translateX(\" + offset + \"px)\";\n var partner = this.lastHorizontalScrollElement === this.eCenterViewport ? this.eBodyHorizontalScrollViewport : this.eCenterViewport;\n utils_1._.setScrollLeft(partner, scrollLeft, this.enableRtl);\n };\n // + rangeController\n GridPanel.prototype.addScrollEventListener = function (listener) {\n this.eBodyViewport.addEventListener('scroll', listener);\n };\n // + rangeController\n GridPanel.prototype.removeScrollEventListener = function (listener) {\n this.eBodyViewport.removeEventListener('scroll', listener);\n };\n __decorate([\n context_1.Autowired('alignedGridsService'),\n __metadata(\"design:type\", alignedGridsService_1.AlignedGridsService)\n ], GridPanel.prototype, \"alignedGridsService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], GridPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], GridPanel.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('rowRenderer'),\n __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n ], GridPanel.prototype, \"rowRenderer\", void 0);\n __decorate([\n context_1.Autowired('pinnedRowModel'),\n __metadata(\"design:type\", pinnedRowModel_1.PinnedRowModel)\n ], GridPanel.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], GridPanel.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('animationFrameService'),\n __metadata(\"design:type\", animationFrameService_1.AnimationFrameService)\n ], GridPanel.prototype, \"animationFrameService\", void 0);\n __decorate([\n context_1.Autowired('navigationService'),\n __metadata(\"design:type\", navigationService_1.NavigationService)\n ], GridPanel.prototype, \"navigationService\", void 0);\n __decorate([\n context_1.Autowired('autoHeightCalculator'),\n __metadata(\"design:type\", autoHeightCalculator_1.AutoHeightCalculator)\n ], GridPanel.prototype, \"autoHeightCalculator\", void 0);\n __decorate([\n context_1.Autowired('columnAnimationService'),\n __metadata(\"design:type\", columnAnimationService_1.ColumnAnimationService)\n ], GridPanel.prototype, \"columnAnimationService\", void 0);\n __decorate([\n context_1.Autowired('autoWidthCalculator'),\n __metadata(\"design:type\", autoWidthCalculator_1.AutoWidthCalculator)\n ], GridPanel.prototype, \"autoWidthCalculator\", void 0);\n __decorate([\n context_1.Autowired('paginationAutoPageSizeService'),\n __metadata(\"design:type\", paginationProxy_1.PaginationAutoPageSizeService)\n ], GridPanel.prototype, \"paginationAutoPageSizeService\", void 0);\n __decorate([\n context_1.Autowired('beans'),\n __metadata(\"design:type\", beans_1.Beans)\n ], GridPanel.prototype, \"beans\", void 0);\n __decorate([\n context_1.Autowired('paginationProxy'),\n __metadata(\"design:type\", paginationProxy_1.PaginationProxy)\n ], GridPanel.prototype, \"paginationProxy\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], GridPanel.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], GridPanel.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('dragService'),\n __metadata(\"design:type\", dragService_1.DragService)\n ], GridPanel.prototype, \"dragService\", void 0);\n __decorate([\n context_1.Autowired('mouseEventService'),\n __metadata(\"design:type\", mouseEventService_1.MouseEventService)\n ], GridPanel.prototype, \"mouseEventService\", void 0);\n __decorate([\n context_1.Autowired('focusedCellController'),\n __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n ], GridPanel.prototype, \"focusedCellController\", void 0);\n __decorate([\n context_1.Autowired('$scope'),\n __metadata(\"design:type\", Object)\n ], GridPanel.prototype, \"$scope\", void 0);\n __decorate([\n context_1.Autowired('scrollVisibleService'),\n __metadata(\"design:type\", scrollVisibleService_1.ScrollVisibleService)\n ], GridPanel.prototype, \"scrollVisibleService\", void 0);\n __decorate([\n context_1.Autowired('valueService'),\n __metadata(\"design:type\", valueService_1.ValueService)\n ], GridPanel.prototype, \"valueService\", void 0);\n __decorate([\n context_1.Autowired('dragAndDropService'),\n __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n ], GridPanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n context_1.Autowired('maxDivHeightScaler'),\n __metadata(\"design:type\", maxDivHeightScaler_1.MaxDivHeightScaler)\n ], GridPanel.prototype, \"heightScaler\", void 0);\n __decorate([\n context_1.Autowired('enterprise'),\n __metadata(\"design:type\", Boolean)\n ], GridPanel.prototype, \"enterprise\", void 0);\n __decorate([\n context_1.Autowired('resizeObserverService'),\n __metadata(\"design:type\", resizeObserverService_1.ResizeObserverService)\n ], GridPanel.prototype, \"resizeObserverService\", void 0);\n __decorate([\n context_1.Optional('rangeController'),\n __metadata(\"design:type\", Object)\n ], GridPanel.prototype, \"rangeController\", void 0);\n __decorate([\n context_1.Optional('contextMenuFactory'),\n __metadata(\"design:type\", Object)\n ], GridPanel.prototype, \"contextMenuFactory\", void 0);\n __decorate([\n context_1.Optional('clipboardService'),\n __metadata(\"design:type\", Object)\n ], GridPanel.prototype, \"clipboardService\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eBodyViewport'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eBodyViewport\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eCenterContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eCenterContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eCenterViewport'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eCenterViewport\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eLeftContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eLeftContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eRightContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eRightContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eCenterColsClipper'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eCenterColsClipper\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eHorizontalScrollBody'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eHorizontalScrollBody\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eHorizontalLeftSpacer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eHorizontalLeftSpacer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eHorizontalRightSpacer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eHorizontalRightSpacer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eBodyHorizontalScrollViewport'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eBodyHorizontalScrollViewport\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eBodyHorizontalScrollContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eBodyHorizontalScrollContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eFullWidthContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eFullWidthContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eTop'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eTop\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eLeftTop'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eLeftTop\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eRightTop'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eRightTop\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eTopContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eTopContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eTopViewport'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eTopViewport\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eTopFullWidthContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eTopFullWidthContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eBottom'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eBottom\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eLeftBottom'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eLeftBottom\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eRightBottom'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eRightBottom\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eBottomContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eBottomContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eBottomViewport'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eBottomViewport\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eBottomFullWidthContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], GridPanel.prototype, \"eBottomFullWidthContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('headerRoot'),\n __metadata(\"design:type\", headerRootComp_1.HeaderRootComp)\n ], GridPanel.prototype, \"headerRootComp\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('overlayWrapper'),\n __metadata(\"design:type\", overlayWrapperComponent_1.OverlayWrapperComponent)\n ], GridPanel.prototype, \"overlayWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], GridPanel.prototype, \"init\", null);\n return GridPanel;\n}(component_1.Component));\nexports.GridPanel = GridPanel;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar column_1 = require(\"../../entities/column\");\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar sortController_1 = require(\"../../sortController\");\nvar touchListener_1 = require(\"../../widgets/touchListener\");\nvar eventService_1 = require(\"../../eventService\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar events_1 = require(\"../../events\");\nvar utils_1 = require(\"../../utils\");\nvar HeaderComp = /** @class */ (function (_super) {\n __extends(HeaderComp, _super);\n function HeaderComp() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastMovingChanged = 0;\n return _this;\n }\n HeaderComp.prototype.init = function (params) {\n var template = utils_1._.firstExistingValue(params.template, HeaderComp.TEMPLATE);\n // take account of any newlines & whitespace before/after the actual template\n template = template && template.trim ? template.trim() : template;\n this.setTemplate(template);\n this.params = params;\n this.setupTap();\n this.setupIcons(params.column);\n this.setupMenu();\n this.setupSort();\n this.setupFilterIcon();\n this.setupText(params.displayName);\n };\n HeaderComp.prototype.setupText = function (displayName) {\n var displayNameSanitised = utils_1._.escape(displayName);\n if (this.eText) {\n this.eText.innerHTML = displayNameSanitised;\n }\n };\n HeaderComp.prototype.setupIcons = function (column) {\n this.addInIcon('sortAscending', this.eSortAsc, column);\n this.addInIcon('sortDescending', this.eSortDesc, column);\n this.addInIcon('sortUnSort', this.eSortNone, column);\n this.addInIcon('menu', this.eMenu, column);\n this.addInIcon('filter', this.eFilter, column);\n };\n HeaderComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = utils_1._.createIconNoSpan(iconName, this.gridOptionsWrapper, column);\n eParent.appendChild(eIcon);\n };\n HeaderComp.prototype.setupTap = function () {\n var _this = this;\n var gow = this.gridOptionsWrapper;\n if (gow.isSuppressTouch()) {\n return;\n }\n var suppressMenuHide = gow.isSuppressMenuHide();\n var touchListener = new touchListener_1.TouchListener(this.getGui(), true);\n var menuTouchListener = suppressMenuHide ? new touchListener_1.TouchListener(this.eMenu, true) : touchListener;\n if (this.params.enableMenu) {\n var eventType = suppressMenuHide ? 'EVENT_TAP' : 'EVENT_LONG_TAP';\n var showMenuFn = function (event) {\n gow.getApi().showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);\n };\n this.addDestroyableEventListener(menuTouchListener, touchListener_1.TouchListener[eventType], showMenuFn);\n }\n if (this.params.enableSorting) {\n var tapListener = function (event) {\n var target = event.touchStart.target;\n // When suppressMenuHide is true, a tap on the menu icon will bubble up\n // to the header container, in that case we should not sort\n if (suppressMenuHide && _this.eMenu.contains(target)) {\n return;\n }\n _this.sortController.progressSort(_this.params.column, false, \"uiColumnSorted\");\n };\n this.addDestroyableEventListener(touchListener, touchListener_1.TouchListener.EVENT_TAP, tapListener);\n }\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n if (menuTouchListener !== touchListener) {\n this.addDestroyFunc(function () { return menuTouchListener.destroy(); });\n }\n };\n HeaderComp.prototype.setupMenu = function () {\n var _this = this;\n // if no menu provided in template, do nothing\n if (!this.eMenu) {\n return;\n }\n // we don't show the menu if on an iPad/iPhone, as the user cannot have a pointer device\n // Note: If suppressMenuHide is set to true the menu will be displayed, and if suppressMenuHide\n // is false (default) user will need to use longpress to display the menu.\n var suppressMenuHide = this.gridOptionsWrapper.isSuppressMenuHide();\n var dontShowMenu = !this.params.enableMenu || (utils_1._.isUserAgentIPad() && !suppressMenuHide);\n if (dontShowMenu) {\n utils_1._.removeFromParent(this.eMenu);\n return;\n }\n this.addDestroyableEventListener(this.eMenu, 'click', function () { return _this.showMenu(_this.eMenu); });\n if (!suppressMenuHide) {\n this.eMenu.style.opacity = '0';\n this.addGuiEventListener('mouseover', function () {\n _this.eMenu.style.opacity = '1';\n });\n this.addGuiEventListener('mouseout', function () {\n _this.eMenu.style.opacity = '0';\n });\n }\n var style = this.eMenu.style;\n style.transition = 'opacity 0.2s, border 0.2s';\n style['-webkit-transition'] = 'opacity 0.2s, border 0.2s';\n };\n HeaderComp.prototype.showMenu = function (eventSource) {\n this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource);\n };\n HeaderComp.prototype.removeSortIcons = function () {\n utils_1._.removeFromParent(this.eSortAsc);\n utils_1._.removeFromParent(this.eSortDesc);\n utils_1._.removeFromParent(this.eSortNone);\n utils_1._.removeFromParent(this.eSortOrder);\n };\n HeaderComp.prototype.setupSort = function () {\n var _this = this;\n var enableSorting = this.params.enableSorting;\n if (!enableSorting) {\n this.removeSortIcons();\n return;\n }\n var sortUsingCtrl = this.gridOptionsWrapper.isMultiSortKeyCtrl();\n // keep track of last time the moving changed flag was set\n this.addDestroyableEventListener(this.params.column, column_1.Column.EVENT_MOVING_CHANGED, function () {\n _this.lastMovingChanged = new Date().getTime();\n });\n // add the event on the header, so when clicked, we do sorting\n if (this.eLabel) {\n this.addDestroyableEventListener(this.eLabel, 'click', function (event) {\n // sometimes when moving a column via dragging, this was also firing a clicked event.\n // here is issue raised by user: https://ag-grid.zendesk.com/agent/tickets/1076\n // this check stops sort if a) column is moving or b) column moved less than 200ms ago (so caters for race condition)\n var moving = _this.params.column.isMoving();\n var nowTime = new Date().getTime();\n // typically there is <2ms if moving flag was set recently, as it would be done in same VM turn\n var movedRecently = (nowTime - _this.lastMovingChanged) < 50;\n var columnMoving = moving || movedRecently;\n if (!columnMoving) {\n var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;\n _this.params.progressSort(multiSort);\n }\n });\n }\n this.addDestroyableEventListener(this.params.column, column_1.Column.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.onSortChanged();\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_SORT_CHANGED, this.setMultiSortOrder.bind(this));\n this.setMultiSortOrder();\n };\n HeaderComp.prototype.onSortChanged = function () {\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-asc', this.params.column.isSortAscending());\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-desc', this.params.column.isSortDescending());\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-none', this.params.column.isSortNone());\n if (this.eSortAsc) {\n utils_1._.addOrRemoveCssClass(this.eSortAsc, 'ag-hidden', !this.params.column.isSortAscending());\n }\n if (this.eSortDesc) {\n utils_1._.addOrRemoveCssClass(this.eSortDesc, 'ag-hidden', !this.params.column.isSortDescending());\n }\n if (this.eSortNone) {\n var alwaysHideNoSort = !this.params.column.getColDef().unSortIcon && !this.gridOptionsWrapper.isUnSortIcon();\n utils_1._.addOrRemoveCssClass(this.eSortNone, 'ag-hidden', alwaysHideNoSort || !this.params.column.isSortNone());\n }\n };\n // we listen here for global sort events, NOT column sort events, as we want to do this\n // when sorting has been set on all column (if we listened just for our col (where we\n // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.\n HeaderComp.prototype.setMultiSortOrder = function () {\n if (!this.eSortOrder) {\n return;\n }\n var col = this.params.column;\n var allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();\n var indexThisCol = allColumnsWithSorting.indexOf(col);\n var moreThanOneColSorting = allColumnsWithSorting.length > 1;\n var showIndex = col.isSorting() && moreThanOneColSorting;\n utils_1._.setVisible(this.eSortOrder, showIndex);\n if (indexThisCol >= 0) {\n this.eSortOrder.innerHTML = (indexThisCol + 1).toString();\n }\n else {\n utils_1._.clearElement(this.eSortOrder);\n }\n };\n HeaderComp.prototype.setupFilterIcon = function () {\n if (!this.eFilter) {\n return;\n }\n this.addDestroyableEventListener(this.params.column, column_1.Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.onFilterChanged();\n };\n HeaderComp.prototype.onFilterChanged = function () {\n var filterPresent = this.params.column.isFilterActive();\n utils_1._.addOrRemoveCssClass(this.eFilter, 'ag-hidden', !filterPresent);\n };\n HeaderComp.TEMPLATE = '
' +\n ' ' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], HeaderComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('sortController'),\n __metadata(\"design:type\", sortController_1.SortController)\n ], HeaderComp.prototype, \"sortController\", void 0);\n __decorate([\n context_1.Autowired('menuFactory'),\n __metadata(\"design:type\", Object)\n ], HeaderComp.prototype, \"menuFactory\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], HeaderComp.prototype, \"eventService\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eFilter'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eFilter\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eSortAsc'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eSortAsc\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eSortDesc'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eSortDesc\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eSortNone'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eSortNone\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eSortOrder'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eSortOrder\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eMenu'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eMenu\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eLabel'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eLabel\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eText'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eText\", void 0);\n return HeaderComp;\n}(component_1.Component));\nexports.HeaderComp = HeaderComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar context_2 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar utils_1 = require(\"../utils\");\nvar MouseEventService = /** @class */ (function () {\n function MouseEventService() {\n this.gridInstanceId = MouseEventService_1.gridInstanceSequence.next();\n }\n MouseEventService_1 = MouseEventService;\n MouseEventService.prototype.init = function () {\n this.stampDomElementWithGridInstance();\n };\n // we put the instance id onto the main DOM element. this is used for events, when grids are inside grids,\n // so the grid can work out if the even came from this grid or a grid inside this one. see the ctrl+v logic\n // for where this is used.\n MouseEventService.prototype.stampDomElementWithGridInstance = function () {\n this.eGridDiv[MouseEventService_1.GRID_DOM_KEY] = this.gridInstanceId;\n };\n MouseEventService.prototype.getRenderedCellForEvent = function (event) {\n return utils_1._.getCellCompForEvent(this.gridOptionsWrapper, event);\n };\n // walks the path of the event, and returns true if this grid is the first one that it finds. if doing\n // master / detail grids, and a child grid is found, then it returns false. this stops things like copy/paste\n // getting executed on many grids at the same time.\n MouseEventService.prototype.isEventFromThisGrid = function (event) {\n var path = utils_1._.getEventPath(event);\n for (var i = 0; i < path.length; i++) {\n var element = path[i];\n var instanceId = element[MouseEventService_1.GRID_DOM_KEY];\n if (utils_1._.exists(instanceId)) {\n var eventFromThisGrid = instanceId === this.gridInstanceId;\n return eventFromThisGrid;\n }\n }\n return false;\n };\n MouseEventService.prototype.getGridCellForEvent = function (event) {\n var cellComp = this.getRenderedCellForEvent(event);\n return cellComp ? cellComp.getGridCell() : null;\n };\n var MouseEventService_1;\n MouseEventService.gridInstanceSequence = new utils_1.NumberSequence();\n MouseEventService.GRID_DOM_KEY = '__ag_grid_instance';\n __decorate([\n context_2.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], MouseEventService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_2.Autowired('eGridDiv'),\n __metadata(\"design:type\", HTMLElement)\n ], MouseEventService.prototype, \"eGridDiv\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], MouseEventService.prototype, \"init\", null);\n MouseEventService = MouseEventService_1 = __decorate([\n context_1.Bean('mouseEventService')\n ], MouseEventService);\n return MouseEventService;\n}());\nexports.MouseEventService = MouseEventService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar agCheckbox_1 = require(\"../../widgets/agCheckbox\");\nvar beanStub_1 = require(\"../../context/beanStub\");\nvar context_1 = require(\"../../context/context\");\nvar columnApi_1 = require(\"../../columnController/columnApi\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar events_1 = require(\"../../events\");\nvar eventService_1 = require(\"../../eventService\");\nvar constants_1 = require(\"../../constants\");\nvar selectionController_1 = require(\"../../selectionController\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar SelectAllFeature = /** @class */ (function (_super) {\n __extends(SelectAllFeature, _super);\n function SelectAllFeature(cbSelectAll, column) {\n var _this = _super.call(this) || this;\n _this.cbSelectAllVisible = false;\n _this.processingEventFromCheckbox = false;\n _this.cbSelectAll = cbSelectAll;\n _this.column = column;\n var colDef = column.getColDef();\n _this.filteredOnly = colDef ? !!colDef.headerCheckboxSelectionFilteredOnly : false;\n return _this;\n }\n SelectAllFeature.prototype.postConstruct = function () {\n this.showOrHideSelectAll();\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelectAll.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_SELECTION_CHANGED, this.onSelectionChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_MODEL_UPDATED, this.onModelChanged.bind(this));\n this.addDestroyableEventListener(this.cbSelectAll, agCheckbox_1.AgCheckbox.EVENT_CHANGED, this.onCbSelectAll.bind(this));\n };\n SelectAllFeature.prototype.showOrHideSelectAll = function () {\n this.cbSelectAllVisible = this.isCheckboxSelection();\n this.cbSelectAll.setVisible(this.cbSelectAllVisible);\n if (this.cbSelectAllVisible) {\n // in case user is trying this feature with the wrong model type\n this.checkRightRowModelType();\n // make sure checkbox is showing the right state\n this.updateStateOfCheckbox();\n }\n };\n SelectAllFeature.prototype.onModelChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.onSelectionChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.getNextCheckboxState = function (selectionCount) {\n if (selectionCount.selected === 0 && selectionCount.notSelected === 0) {\n // if no rows, always have it unselected\n return false;\n }\n else if (selectionCount.selected > 0 && selectionCount.notSelected > 0) {\n // if mix of selected and unselected, this is the tri-state\n return null;\n }\n else if (selectionCount.selected > 0) {\n // only selected\n return true;\n }\n else {\n // nothing selected\n return false;\n }\n };\n SelectAllFeature.prototype.updateStateOfCheckbox = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n this.processingEventFromCheckbox = true;\n var selectionCount = this.getSelectionCount();\n var allSelected = this.getNextCheckboxState(selectionCount);\n this.cbSelectAll.setSelected(allSelected);\n this.processingEventFromCheckbox = false;\n };\n SelectAllFeature.prototype.getSelectionCount = function () {\n var _this = this;\n var selectedCount = 0;\n var notSelectedCount = 0;\n var callback = function (node) {\n if (_this.gridOptionsWrapper.isGroupSelectsChildren() && node.group) {\n return;\n }\n if (node.isSelected()) {\n selectedCount++;\n }\n else if (!node.selectable) {\n // don't count non-selectable nodes!\n }\n else {\n notSelectedCount++;\n }\n };\n if (this.filteredOnly) {\n this.gridApi.forEachNodeAfterFilter(callback);\n }\n else {\n this.gridApi.forEachNode(callback);\n }\n return {\n notSelected: notSelectedCount,\n selected: selectedCount\n };\n };\n SelectAllFeature.prototype.checkRightRowModelType = function () {\n var rowModelType = this.rowModel.getType();\n var rowModelMatches = rowModelType === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n if (!rowModelMatches) {\n console.warn(\"ag-Grid: selectAllCheckbox is only available if using normal row model, you are using \" + rowModelType);\n }\n };\n SelectAllFeature.prototype.onCbSelectAll = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n if (!this.cbSelectAllVisible) {\n return;\n }\n var value = this.cbSelectAll.isSelected();\n if (value) {\n this.selectionController.selectAllRowNodes(this.filteredOnly);\n }\n else {\n this.selectionController.deselectAllRowNodes(this.filteredOnly);\n }\n };\n SelectAllFeature.prototype.isCheckboxSelection = function () {\n var result = this.column.getColDef().headerCheckboxSelection;\n if (typeof result === 'function') {\n var func = result;\n result = func({\n column: this.column,\n colDef: this.column.getColDef(),\n columnApi: this.columnApi,\n api: this.gridApi\n });\n }\n if (result) {\n if (this.gridOptionsWrapper.isRowModelServerSide()) {\n console.warn('headerCheckboxSelection is not supported for Server Side Row Model');\n return false;\n }\n if (this.gridOptionsWrapper.isRowModelInfinite()) {\n console.warn('headerCheckboxSelection is not supported for Infinite Row Model');\n return false;\n }\n if (this.gridOptionsWrapper.isRowModelViewport()) {\n console.warn('headerCheckboxSelection is not supported for Viewport Row Model');\n return false;\n }\n // otherwise the row model is compatible, so return true\n return true;\n }\n else {\n return false;\n }\n };\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], SelectAllFeature.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], SelectAllFeature.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], SelectAllFeature.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], SelectAllFeature.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('selectionController'),\n __metadata(\"design:type\", selectionController_1.SelectionController)\n ], SelectAllFeature.prototype, \"selectionController\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], SelectAllFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], SelectAllFeature.prototype, \"postConstruct\", null);\n return SelectAllFeature;\n}(beanStub_1.BeanStub));\nexports.SelectAllFeature = SelectAllFeature;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PropertyKeys = /** @class */ (function () {\n function PropertyKeys() {\n }\n PropertyKeys.STRING_PROPERTIES = [\n 'sortingOrder', 'rowClass', 'rowSelection', 'overlayLoadingTemplate',\n 'overlayNoRowsTemplate', 'quickFilterText', 'rowModelType',\n 'editType', 'domLayout', 'clipboardDeliminator', 'rowGroupPanelShow',\n 'multiSortKey', 'pivotColumnGroupTotals', 'pivotRowTotals', 'pivotPanelShow'\n ];\n PropertyKeys.OBJECT_PROPERTIES = [\n 'components', 'frameworkComponents', 'rowStyle', 'context', 'autoGroupColumnDef', 'groupColumnDef', 'localeText',\n 'icons', 'datasource', 'serverSideDatasource', 'viewportDatasource', 'groupRowRendererParams', 'aggFuncs',\n 'fullWidthCellRendererParams', 'defaultColGroupDef', 'defaultColDef', 'defaultExportParams', 'columnTypes',\n 'rowClassRules', 'detailGridOptions', 'detailCellRendererParams', 'loadingCellRendererParams', 'loadingOverlayComponentParams',\n 'noRowsOverlayComponentParams', 'popupParent', 'colResizeDefault', 'reduxStore', 'statusBar', 'sideBar'\n ];\n PropertyKeys.ARRAY_PROPERTIES = [\n 'slaveGrids', 'alignedGrids', 'rowData',\n 'columnDefs', 'excelStyles', 'pinnedTopRowData', 'pinnedBottomRowData'\n /** @deprecated */\n ];\n PropertyKeys.NUMBER_PROPERTIES = [\n 'rowHeight', 'detailRowHeight', 'rowBuffer', 'colWidth', 'headerHeight', 'groupHeaderHeight',\n 'floatingFiltersHeight', 'pivotHeaderHeight', 'pivotGroupHeaderHeight', 'groupDefaultExpanded',\n 'minColWidth', 'maxColWidth', 'viewportRowModelPageSize', 'viewportRowModelBufferSize',\n 'autoSizePadding', 'maxBlocksInCache', 'maxConcurrentDatasourceRequests',\n 'cacheOverflowSize', 'paginationPageSize', 'cacheBlockSize', 'infiniteInitialRowCount',\n 'scrollbarWidth', 'paginationStartPage', 'infiniteBlockSize', 'batchUpdateWaitMillis',\n 'blockLoadDebounceMillis'\n ];\n PropertyKeys.BOOLEAN_PROPERTIES = [\n 'toolPanelSuppressRowGroups', 'toolPanelSuppressValues', 'toolPanelSuppressPivots', 'toolPanelSuppressPivotMode',\n 'toolPanelSuppressSideButtons', 'toolPanelSuppressColumnFilter', 'toolPanelSuppressColumnSelectAll',\n 'toolPanelSuppressColumnExpandAll', 'suppressMakeColumnVisibleAfterUnGroup',\n 'suppressRowClickSelection', 'suppressCellSelection', 'suppressHorizontalScroll', 'debug',\n 'enableBrowserTooltips', 'enableColResize', 'enableCellExpressions', 'enableSorting', 'enableServerSideSorting',\n 'enableFilter', 'enableServerSideFilter', 'angularCompileRows', 'angularCompileFilters',\n 'angularCompileHeaders', 'groupSuppressAutoColumn', 'groupSelectsChildren',\n 'groupIncludeFooter', 'groupIncludeTotalFooter', 'groupUseEntireRow', 'groupSuppressRow', 'groupSuppressBlankHeader',\n 'forPrint', 'suppressMenuHide', 'rowDeselection', 'unSortIcon', 'suppressMultiSort',\n 'singleClickEdit', 'suppressLoadingOverlay', 'suppressNoRowsOverlay', 'suppressAutoSize',\n 'suppressParentsInRowNodes', 'showToolPanel', 'suppressColumnMoveAnimation', 'suppressMovableColumns',\n 'suppressFieldDotNotation', 'enableRangeSelection', 'deltaSort',\n 'suppressTouch', 'suppressAsyncEvents', 'allowContextMenuWithControlKey',\n 'suppressContextMenu', 'suppressMenuFilterPanel', 'suppressMenuMainPanel', 'suppressMenuColumnPanel',\n 'rememberGroupStateWhenNewData', 'enableCellChangeFlash', 'suppressDragLeaveHidesColumns',\n 'suppressMiddleClickScrolls', 'suppressPreventDefaultOnMouseWheel', 'suppressUseColIdForGroups',\n 'suppressCopyRowsToClipboard', 'copyHeadersToClipboard', 'pivotMode', 'suppressAggFuncInHeader',\n 'suppressColumnVirtualisation', 'suppressAggAtRootLevel', 'suppressFocusAfterRefresh', 'functionsPassive',\n 'functionsReadOnly', 'animateRows', 'groupSelectsFiltered', 'groupRemoveSingleChildren',\n 'groupRemoveLowestSingleChildren', 'enableRtl', 'suppressClickEdit', 'rowDragManaged', 'suppressRowDrag',\n 'enableGroupEdit', 'embedFullWidthRows', 'deprecatedEmbedFullWidthRows', 'suppressTabbing', 'suppressPaginationPanel',\n 'floatingFilter', 'groupHideOpenParents', 'groupMultiAutoColumn', 'pagination', 'stopEditingWhenGridLosesFocus',\n 'paginationAutoPageSize', 'suppressScrollOnNewData', 'purgeClosedRowNodes', 'cacheQuickFilter',\n 'deltaRowDataMode', 'ensureDomOrder', 'accentedSort', 'pivotTotals', 'suppressChangeDetection',\n 'valueCache', 'valueCacheNeverExpires', 'aggregateOnlyChangedColumns', 'suppressAnimationFrame',\n 'suppressExcelExport', 'suppressCsvExport', 'treeData', 'masterDetail', 'suppressMultiRangeSelection',\n 'enterMovesDownAfterEdit', 'enterMovesDown', 'suppressPropertyNamesCheck', 'rowMultiSelectWithClick',\n 'contractColumnSelection', 'suppressEnterpriseResetOnNewColumns', 'enableOldSetFilterModel',\n 'suppressRowHoverHighlight', 'gridAutoHeight', 'suppressRowTransform', 'suppressClipboardPaste',\n 'serverSideSortingAlwaysResets', 'reactNext', 'suppressSetColumnStateEvents', 'enableCharts',\n 'deltaColumnMode', 'suppressMaintainUnsortedOrder', 'enableCellTextSelection', 'suppressBrowserResizeObserver',\n 'suppressMaxRenderedRowRestriction', 'excludeChildrenWhenTreeDataFiltering'\n ];\n PropertyKeys.FUNCTION_PROPERTIES = ['localeTextFunc', 'groupRowInnerRenderer', 'groupRowInnerRendererFramework',\n 'dateComponent', 'dateComponentFramework', 'groupRowRenderer', 'groupRowRendererFramework', 'isExternalFilterPresent',\n 'getRowHeight', 'doesExternalFilterPass', 'getRowClass', 'getRowStyle', 'getRowClassRules',\n 'traverseNode', 'getContextMenuItems', 'getMainMenuItems', 'processRowPostCreate', 'processCellForClipboard',\n 'getNodeChildDetails', 'groupRowAggNodes', 'getRowNodeId', 'isFullWidthCell', 'fullWidthCellRenderer',\n 'fullWidthCellRendererFramework', 'doesDataFlower', 'processSecondaryColDef', 'processSecondaryColGroupDef',\n 'getBusinessKeyForNode', 'sendToClipboard', 'navigateToNextCell', 'tabToNextCell', 'getDetailRowData',\n 'processCellFromClipboard', 'getDocument', 'postProcessPopup', 'getChildCount', 'getDataPath', 'loadingCellRenderer',\n 'loadingCellRendererFramework', 'loadingOverlayComponent', 'loadingOverlayComponentFramework', 'noRowsOverlayComponent',\n 'noRowsOverlayComponentFramework', 'detailCellRenderer', 'detailCellRendererFramework', 'onGridReady',\n 'defaultGroupSortComparator', 'isRowMaster', 'isRowSelectable', 'postSort', 'processHeaderForClipboard',\n 'paginationNumberFormatter', 'processDataFromClipboard', 'getServerSideGroupKey', 'isServerSideGroup',\n 'suppressKeyboardEvent'];\n PropertyKeys.ALL_PROPERTIES = PropertyKeys.ARRAY_PROPERTIES\n .concat(PropertyKeys.OBJECT_PROPERTIES)\n .concat(PropertyKeys.STRING_PROPERTIES)\n .concat(PropertyKeys.NUMBER_PROPERTIES)\n .concat(PropertyKeys.FUNCTION_PROPERTIES)\n .concat(PropertyKeys.BOOLEAN_PROPERTIES);\n // used when doing property checks - this causes noise when using frameworks which can add their own fw specific\n // properties to colDefs, gridOptions etc\n PropertyKeys.FRAMEWORK_PROPERTIES = ['__ob__', '__metadata__', 'mappedColumnProperties', 'hasChildColumns',\n 'toColDef', 'createColDefFromGridColumn'];\n return PropertyKeys;\n}());\nexports.PropertyKeys = PropertyKeys;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar logger_1 = require(\"../logger\");\nvar context_1 = require(\"../context/context\");\nvar context_2 = require(\"../context/context\");\nvar ExpressionService = /** @class */ (function () {\n function ExpressionService() {\n this.expressionToFunctionCache = {};\n }\n ExpressionService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ExpressionService');\n };\n ExpressionService.prototype.evaluate = function (expressionOrFunc, params) {\n if (typeof expressionOrFunc === 'function') {\n // valueGetter is a function, so just call it\n var func = expressionOrFunc;\n return func(params);\n }\n else if (typeof expressionOrFunc === 'string') {\n // valueGetter is an expression, so execute the expression\n var expression = expressionOrFunc;\n return this.evaluateExpression(expression, params);\n }\n else {\n console.error('ag-Grid: value should be either a string or a function', expressionOrFunc);\n }\n };\n ExpressionService.prototype.evaluateExpression = function (expression, params) {\n try {\n var javaScriptFunction = this.createExpressionFunction(expression);\n // the params don't have all these values, rather we add every possible\n // value a params can have, which makes whatever is in the params available.\n var result = javaScriptFunction(params.value, params.context, params.oldValue, params.newValue, params.value, params.node, params.data, params.colDef, params.rowIndex, params.api, params.columnApi, params.getValue, params.column, params.columnGroup);\n return result;\n }\n catch (e) {\n // the expression failed, which can happen, as it's the client that\n // provides the expression. so print a nice message\n // tslint:disable-next-line\n console.log('Processing of the expression failed');\n // tslint:disable-next-line\n console.log('Expression = ' + expression);\n // tslint:disable-next-line\n console.log('Exception = ' + e);\n return null;\n }\n };\n ExpressionService.prototype.createExpressionFunction = function (expression) {\n // check cache first\n if (this.expressionToFunctionCache[expression]) {\n return this.expressionToFunctionCache[expression];\n }\n // if not found in cache, return the function\n var functionBody = this.createFunctionBody(expression);\n var theFunction = new Function('x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, columnApi, getValue, column, columnGroup', functionBody);\n // store in cache\n this.expressionToFunctionCache[expression] = theFunction;\n return theFunction;\n };\n ExpressionService.prototype.createFunctionBody = function (expression) {\n // if the expression has the 'return' word in it, then use as is,\n // if not, then wrap it with return and ';' to make a function\n if (expression.indexOf('return') >= 0) {\n return expression;\n }\n else {\n return 'return ' + expression + ';';\n }\n };\n __decorate([\n __param(0, context_2.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], ExpressionService.prototype, \"setBeans\", null);\n ExpressionService = __decorate([\n context_1.Bean('expressionService')\n ], ExpressionService);\n return ExpressionService;\n}());\nexports.ExpressionService = ExpressionService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// class returns unique instance id's for columns.\n// eg, the following calls (in this order) will result in:\n//\n// getInstanceIdForKey('country') => 0\n// getInstanceIdForKey('country') => 1\n// getInstanceIdForKey('country') => 2\n// getInstanceIdForKey('country') => 3\n// getInstanceIdForKey('age') => 0\n// getInstanceIdForKey('age') => 1\n// getInstanceIdForKey('country') => 4\nvar GroupInstanceIdCreator = /** @class */ (function () {\n function GroupInstanceIdCreator() {\n // this map contains keys to numbers, so we remember what the last call was\n this.existingIds = {};\n }\n GroupInstanceIdCreator.prototype.getInstanceIdForKey = function (key) {\n var lastResult = this.existingIds[key];\n var result;\n if (typeof lastResult !== 'number') {\n // first time this key\n result = 0;\n }\n else {\n result = lastResult + 1;\n }\n this.existingIds[key] = result;\n return result;\n };\n return GroupInstanceIdCreator;\n}());\nexports.GroupInstanceIdCreator = GroupInstanceIdCreator;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar expressionService_1 = require(\"../../valueService/expressionService\");\nvar eventService_1 = require(\"../../eventService\");\nvar constants_1 = require(\"../../constants\");\nvar context_1 = require(\"../../context/context\");\nvar component_1 = require(\"../../widgets/component\");\nvar rowNode_1 = require(\"../../entities/rowNode\");\nvar valueFormatterService_1 = require(\"../valueFormatterService\");\nvar checkboxSelectionComponent_1 = require(\"../checkboxSelectionComponent\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar column_1 = require(\"../../entities/column\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar mouseEventService_1 = require(\"../../gridPanel/mouseEventService\");\nvar userComponentFactory_1 = require(\"../../components/framework/userComponentFactory\");\nvar utils_1 = require(\"../../utils\");\nvar GroupCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCellRenderer, _super);\n function GroupCellRenderer() {\n return _super.call(this, GroupCellRenderer.TEMPLATE) || this;\n }\n GroupCellRenderer.prototype.init = function (params) {\n this.params = params;\n if (this.gridOptionsWrapper.isGroupIncludeTotalFooter()) {\n this.assignBlankValueToGroupFooterCell(params);\n }\n var embeddedRowMismatch = this.isEmbeddedRowMismatch();\n // This allows for empty strings to appear as groups since\n // it will only return for null or undefined.\n var cellIsEmpty = params.value == null;\n this.cellIsBlank = embeddedRowMismatch || cellIsEmpty;\n if (this.cellIsBlank) {\n return;\n }\n this.setupDragOpenParents();\n this.addExpandAndContract();\n this.addCheckboxIfNeeded();\n this.addValueElement();\n this.setupIndent();\n };\n GroupCellRenderer.prototype.assignBlankValueToGroupFooterCell = function (params) {\n // this is not ideal, but it was the only way we could get footer working for the root node\n if (!params.value && params.node.level == -1) {\n params.value = '';\n }\n };\n // if we are doing embedded full width rows, we only show the renderer when\n // in the body, or if pinning in the pinned section, or if pinning and RTL,\n // in the right section. otherwise we would have the cell repeated in each section.\n GroupCellRenderer.prototype.isEmbeddedRowMismatch = function () {\n if (this.params.fullWidth && this.gridOptionsWrapper.isEmbedFullWidthRows()) {\n var pinnedLeftCell = this.params.pinned === column_1.Column.PINNED_LEFT;\n var pinnedRightCell = this.params.pinned === column_1.Column.PINNED_RIGHT;\n var bodyCell = !pinnedLeftCell && !pinnedRightCell;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n if (this.columnController.isPinningLeft()) {\n return !pinnedRightCell;\n }\n else {\n return !bodyCell;\n }\n }\n else {\n if (this.columnController.isPinningLeft()) {\n return !pinnedLeftCell;\n }\n else {\n return !bodyCell;\n }\n }\n }\n else {\n return false;\n }\n };\n GroupCellRenderer.prototype.setIndent = function () {\n if (this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n var params = this.params;\n var rowNode = params.node;\n var paddingCount = rowNode.uiLevel;\n var userProvidedPaddingPixelsTheDeprecatedWay = params.padding >= 0;\n if (userProvidedPaddingPixelsTheDeprecatedWay) {\n this.setPaddingDeprecatedWay(paddingCount, params.padding);\n return;\n }\n if (this.indentClass) {\n this.removeCssClass(this.indentClass);\n }\n this.indentClass = 'ag-row-group-indent-' + paddingCount;\n this.addCssClass(this.indentClass);\n };\n GroupCellRenderer.prototype.setPaddingDeprecatedWay = function (paddingCount, padding) {\n utils_1._.doOnce(function () { return console.warn('ag-Grid: since v14.2, configuring padding for groupCellRenderer should be done with Sass variables and themes. Please see the ag-Grid documentation page for Themes, in particular the property $row-group-indent-size.'); }, 'groupCellRenderer->doDeprecatedWay');\n var paddingPx = paddingCount * padding;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // if doing rtl, padding is on the right\n this.getGui().style.paddingRight = paddingPx + 'px';\n }\n else {\n // otherwise it is on the left\n this.getGui().style.paddingLeft = paddingPx + 'px';\n }\n };\n GroupCellRenderer.prototype.setupIndent = function () {\n // only do this if an indent - as this overwrites the padding that\n // the theme set, which will make things look 'not aligned' for the\n // first group level.\n var node = this.params.node;\n var suppressPadding = this.params.suppressPadding;\n if (!suppressPadding) {\n this.addDestroyableEventListener(node, rowNode_1.RowNode.EVENT_UI_LEVEL_CHANGED, this.setIndent.bind(this));\n this.setIndent();\n }\n };\n GroupCellRenderer.prototype.addValueElement = function () {\n var params = this.params;\n var rowNode = this.displayedGroup;\n if (rowNode.footer) {\n this.createFooterCell();\n }\n else if (rowNode.hasChildren() ||\n utils_1._.get(params.colDef, 'cellRendererParams.innerRenderer', null) ||\n utils_1._.get(params.colDef, 'cellRendererParams.innerRendererFramework', null)) {\n this.createGroupCell();\n if (rowNode.hasChildren()) {\n this.addChildCount();\n }\n }\n else {\n this.createLeafCell();\n }\n };\n GroupCellRenderer.prototype.createFooterCell = function () {\n var footerValue;\n var footerValueGetter = this.params.footerValueGetter;\n if (footerValueGetter) {\n // params is same as we were given, except we set the value as the item to display\n var paramsClone = utils_1._.cloneObject(this.params);\n paramsClone.value = this.params.value;\n if (typeof footerValueGetter === 'function') {\n footerValue = footerValueGetter(paramsClone);\n }\n else if (typeof footerValueGetter === 'string') {\n footerValue = this.expressionService.evaluate(footerValueGetter, paramsClone);\n }\n else {\n console.warn('ag-Grid: footerValueGetter should be either a function or a string (expression)');\n }\n }\n else {\n footerValue = 'Total ' + this.params.value;\n }\n this.eValue.innerHTML = footerValue;\n };\n GroupCellRenderer.prototype.createGroupCell = function () {\n var _this = this;\n var params = this.params;\n var rowGroupColumn = this.displayedGroup.rowGroupColumn;\n // we try and use the cellRenderer of the column used for the grouping if we can\n var columnToUse = rowGroupColumn ? rowGroupColumn : params.column;\n var groupName = this.params.value;\n var valueFormatted = columnToUse ?\n this.valueFormatterService.formatValue(columnToUse, params.node, params.scope, groupName) : null;\n params.valueFormatted = valueFormatted;\n var rendererPromise;\n if (params.fullWidth == true) {\n rendererPromise = this.useFullWidth(params);\n }\n else {\n rendererPromise = this.useInnerRenderer(this.params.colDef.cellRendererParams, columnToUse.getColDef(), params);\n }\n // retain a reference to the created renderer - we'll use this later for cleanup (in destroy)\n if (rendererPromise) {\n rendererPromise.then(function (value) {\n _this.innerCellRenderer = value;\n });\n }\n };\n GroupCellRenderer.prototype.useInnerRenderer = function (groupCellRendererParams, groupedColumnDef, // the column this group row is for, eg 'Country'\n params) {\n // when grouping, the normal case is we use the cell renderer of the grouped column. eg if grouping by country\n // and then rating, we will use the country cell renderer for each country group row and likewise the rating\n // cell renderer for each rating group row.\n //\n // however if the user has innerCellRenderer defined, this gets preference and we don't use cell renderers\n // of the grouped columns.\n //\n // so we check and use in the following order:\n //\n // 1) thisColDef.cellRendererParams.innerRenderer of the column showing the groups (eg auto group column)\n // 2) groupedColDef.cellRenderer of the grouped column\n // 3) groupedColDef.cellRendererParams.innerRenderer\n var _this = this;\n var cellRendererPromise = null;\n // we check if cell renderer provided for the group cell renderer, eg colDef.cellRendererParams.innerRenderer\n var groupInnerRendererClass = this.userComponentFactory\n .lookupComponentClassDef(groupCellRendererParams, \"innerRenderer\");\n if (groupInnerRendererClass && groupInnerRendererClass.component != null\n && groupInnerRendererClass.source != userComponentFactory_1.ComponentSource.DEFAULT) {\n // use the renderer defined in cellRendererParams.innerRenderer\n cellRendererPromise = this.userComponentFactory.newInnerCellRenderer(groupCellRendererParams, params);\n }\n else {\n // otherwise see if we can use the cellRenderer of the column we are grouping by\n var groupColumnRendererClass = this.userComponentFactory\n .lookupComponentClassDef(groupedColumnDef, \"cellRenderer\");\n if (groupColumnRendererClass && groupColumnRendererClass.source != userComponentFactory_1.ComponentSource.DEFAULT) {\n // Only if the original column is using a specific renderer, it it is a using a DEFAULT one ignore it\n cellRendererPromise = this.userComponentFactory.newCellRenderer(groupedColumnDef, params);\n }\n else if (groupColumnRendererClass && groupColumnRendererClass.source == userComponentFactory_1.ComponentSource.DEFAULT\n && (utils_1._.get(groupedColumnDef, 'cellRendererParams.innerRenderer', null))) {\n // EDGE CASE - THIS COMES FROM A COLUMN WHICH HAS BEEN GROUPED DYNAMICALLY, THAT HAS AS RENDERER 'group'\n // AND HAS A INNER CELL RENDERER\n cellRendererPromise = this.userComponentFactory.newInnerCellRenderer(groupedColumnDef.cellRendererParams, params);\n }\n else {\n // This forces the retrieval of the default plain cellRenderer that just renders the values.\n cellRendererPromise = this.userComponentFactory.newCellRenderer({}, params);\n }\n }\n if (cellRendererPromise != null) {\n cellRendererPromise.then(function (rendererToUse) {\n if (rendererToUse == null) {\n _this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n return;\n }\n utils_1._.bindCellRendererToHtmlElement(cellRendererPromise, _this.eValue);\n });\n }\n else {\n this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n return cellRendererPromise;\n };\n GroupCellRenderer.prototype.useFullWidth = function (params) {\n var cellRendererPromise = this.userComponentFactory.newFullWidthGroupRowInnerCellRenderer(params);\n if (cellRendererPromise != null) {\n utils_1._.bindCellRendererToHtmlElement(cellRendererPromise, this.eValue);\n }\n else {\n this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n return cellRendererPromise;\n };\n GroupCellRenderer.prototype.addChildCount = function () {\n // only include the child count if it's included, eg if user doing custom aggregation,\n // then this could be left out, or set to -1, ie no child count\n if (this.params.suppressCount) {\n return;\n }\n this.addDestroyableEventListener(this.displayedGroup, rowNode_1.RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.updateChildCount.bind(this));\n // filtering changes the child count, so need to cater for it\n this.updateChildCount();\n };\n GroupCellRenderer.prototype.updateChildCount = function () {\n var allChildrenCount = this.displayedGroup.allChildrenCount;\n this.eChildCount.innerHTML = allChildrenCount >= 0 ? \"(\" + allChildrenCount + \")\" : \"\";\n };\n GroupCellRenderer.prototype.createLeafCell = function () {\n if (utils_1._.exists(this.params.value)) {\n this.eValue.innerHTML = this.params.valueFormatted ? this.params.valueFormatted : this.params.value;\n }\n };\n GroupCellRenderer.prototype.isUserWantsSelected = function () {\n var paramsCheckbox = this.params.checkbox;\n if (typeof paramsCheckbox === 'function') {\n return paramsCheckbox(this.params);\n }\n else {\n return paramsCheckbox === true;\n }\n };\n GroupCellRenderer.prototype.addCheckboxIfNeeded = function () {\n var rowNode = this.displayedGroup;\n var checkboxNeeded = this.isUserWantsSelected()\n // footers cannot be selected\n && !rowNode.footer\n // pinned rows cannot be selected\n && !rowNode.rowPinned\n // details cannot be selected\n && !rowNode.detail;\n if (checkboxNeeded) {\n var cbSelectionComponent_1 = new checkboxSelectionComponent_1.CheckboxSelectionComponent();\n this.getContext().wireBean(cbSelectionComponent_1);\n cbSelectionComponent_1.init({ rowNode: rowNode, column: this.params.column });\n this.eCheckbox.appendChild(cbSelectionComponent_1.getGui());\n this.addDestroyFunc(function () { return cbSelectionComponent_1.destroy(); });\n }\n utils_1._.addOrRemoveCssClass(this.eCheckbox, 'ag-invisible', !checkboxNeeded);\n };\n GroupCellRenderer.prototype.addExpandAndContract = function () {\n var params = this.params;\n var eGroupCell = params.eGridCell;\n var eExpandedIcon = utils_1._.createIconNoSpan('groupExpanded', this.gridOptionsWrapper, null);\n var eContractedIcon = utils_1._.createIconNoSpan('groupContracted', this.gridOptionsWrapper, null);\n this.eExpanded.appendChild(eExpandedIcon);\n this.eContracted.appendChild(eContractedIcon);\n this.addDestroyableEventListener(this.eExpanded, 'click', this.onExpandClicked.bind(this));\n this.addDestroyableEventListener(this.eContracted, 'click', this.onExpandClicked.bind(this));\n // expand / contract as the user hits enter\n this.addDestroyableEventListener(eGroupCell, 'keydown', this.onKeyDown.bind(this), { capture: true });\n this.addDestroyableEventListener(params.node, rowNode_1.RowNode.EVENT_EXPANDED_CHANGED, this.showExpandAndContractIcons.bind(this));\n this.showExpandAndContractIcons();\n // because we don't show the expand / contract when there are no children, we need to check every time\n // the number of children change.\n this.addDestroyableEventListener(this.displayedGroup, rowNode_1.RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.onAllChildrenCountChanged.bind(this));\n // if editing groups, then double click is to start editing\n if (!this.gridOptionsWrapper.isEnableGroupEdit() && this.isExpandable() && !params.suppressDoubleClickExpand) {\n this.addDestroyableEventListener(eGroupCell, 'dblclick', this.onCellDblClicked.bind(this));\n }\n };\n GroupCellRenderer.prototype.onAllChildrenCountChanged = function () {\n // maybe if no children now, we should hide the expand / contract icons\n this.showExpandAndContractIcons();\n // if we have no children, this impacts the indent\n this.setIndent();\n };\n GroupCellRenderer.prototype.onKeyDown = function (event) {\n if (!event.defaultPrevented && utils_1._.isKeyPressed(event, constants_1.Constants.KEY_ENTER)) {\n var cellEditable = this.params.column.isCellEditable(this.params.node);\n if (cellEditable) {\n return;\n }\n event.preventDefault();\n this.onExpandOrContract();\n }\n };\n GroupCellRenderer.prototype.setupDragOpenParents = function () {\n var column = this.params.column;\n var rowNode = this.params.node;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n this.draggedFromHideOpenParents = false;\n }\n else if (!rowNode.hasChildren()) {\n // if we are here, and we are not a group, then we must of been dragged down,\n // as otherwise the cell would be blank, and if cell is blank, this method is never called.\n this.draggedFromHideOpenParents = true;\n }\n else {\n var rowGroupColumn = rowNode.rowGroupColumn;\n // if the displayGroup column for this col matches the rowGroupColumn we grouped by for this node,\n // then nothing was dragged down\n this.draggedFromHideOpenParents = !column.isRowGroupDisplayed(rowGroupColumn.getId());\n }\n if (this.draggedFromHideOpenParents) {\n var pointer = rowNode.parent;\n while (true) {\n if (utils_1._.missing(pointer)) {\n break;\n }\n if (pointer.rowGroupColumn && column.isRowGroupDisplayed(pointer.rowGroupColumn.getId())) {\n this.displayedGroup = pointer;\n break;\n }\n pointer = pointer.parent;\n }\n }\n // if we didn't find a displayed group, set it to the row node\n if (utils_1._.missing(this.displayedGroup)) {\n this.displayedGroup = rowNode;\n }\n };\n GroupCellRenderer.prototype.onExpandClicked = function (mouseEvent) {\n if (utils_1._.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // so if we expand a node, it does not also get selected.\n utils_1._.stopPropagationForAgGrid(mouseEvent);\n this.onExpandOrContract();\n };\n GroupCellRenderer.prototype.onCellDblClicked = function (mouseEvent) {\n if (utils_1._.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // we want to avoid acting on double click events on the expand / contract icon,\n // as that icons already has expand / collapse functionality on it. otherwise if\n // the icon was double clicked, we would get 'click', 'click', 'dblclick' which\n // is open->close->open, however double click should be open->close only.\n var targetIsExpandIcon = utils_1._.isElementInEventPath(this.eExpanded, mouseEvent)\n || utils_1._.isElementInEventPath(this.eContracted, mouseEvent);\n if (!targetIsExpandIcon) {\n this.onExpandOrContract();\n }\n };\n GroupCellRenderer.prototype.onExpandOrContract = function () {\n // must use the displayedGroup, so if data was dragged down, we expand the parent, not this row\n var rowNode = this.displayedGroup;\n rowNode.setExpanded(!rowNode.expanded);\n };\n GroupCellRenderer.prototype.isExpandable = function () {\n var rowNode = this.params.node;\n var reducedLeafNode = this.columnController.isPivotMode() && rowNode.leafGroup;\n return this.draggedFromHideOpenParents ||\n (rowNode.isExpandable() && !rowNode.footer && !reducedLeafNode);\n };\n GroupCellRenderer.prototype.showExpandAndContractIcons = function () {\n var rowNode = this.params.node;\n if (this.isExpandable()) {\n // if expandable, show one based on expand state.\n // if we were dragged down, means our parent is always expanded\n var expanded = this.draggedFromHideOpenParents ? true : rowNode.expanded;\n utils_1._.setVisible(this.eContracted, !expanded);\n utils_1._.setVisible(this.eExpanded, expanded);\n }\n else {\n // it not expandable, show neither\n utils_1._.setVisible(this.eExpanded, false);\n utils_1._.setVisible(this.eContracted, false);\n }\n var displayedGroup = this.displayedGroup;\n // compensation padding for leaf nodes, so there is blank space instead of the expand icon\n var pivotModeAndLeafGroup = this.columnController.isPivotMode() && displayedGroup.leafGroup;\n var notExpandable = !displayedGroup.isExpandable();\n var addLeafIndentClass = displayedGroup.footer || notExpandable || pivotModeAndLeafGroup;\n this.addOrRemoveCssClass('ag-row-group-leaf-indent', addLeafIndentClass);\n };\n GroupCellRenderer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.innerCellRenderer && this.innerCellRenderer.destroy) {\n this.innerCellRenderer.destroy();\n }\n };\n GroupCellRenderer.prototype.refresh = function () {\n return false;\n };\n GroupCellRenderer.TEMPLATE = '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], GroupCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('expressionService'),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], GroupCellRenderer.prototype, \"expressionService\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], GroupCellRenderer.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('valueFormatterService'),\n __metadata(\"design:type\", valueFormatterService_1.ValueFormatterService)\n ], GroupCellRenderer.prototype, \"valueFormatterService\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], GroupCellRenderer.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('mouseEventService'),\n __metadata(\"design:type\", mouseEventService_1.MouseEventService)\n ], GroupCellRenderer.prototype, \"mouseEventService\", void 0);\n __decorate([\n context_1.Autowired('userComponentFactory'),\n __metadata(\"design:type\", userComponentFactory_1.UserComponentFactory)\n ], GroupCellRenderer.prototype, \"userComponentFactory\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eExpanded'),\n __metadata(\"design:type\", HTMLElement)\n ], GroupCellRenderer.prototype, \"eExpanded\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eContracted'),\n __metadata(\"design:type\", HTMLElement)\n ], GroupCellRenderer.prototype, \"eContracted\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eCheckbox'),\n __metadata(\"design:type\", HTMLElement)\n ], GroupCellRenderer.prototype, \"eCheckbox\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eValue'),\n __metadata(\"design:type\", HTMLElement)\n ], GroupCellRenderer.prototype, \"eValue\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eChildCount'),\n __metadata(\"design:type\", HTMLElement)\n ], GroupCellRenderer.prototype, \"eChildCount\", void 0);\n return GroupCellRenderer;\n}(component_1.Component));\nexports.GroupCellRenderer = GroupCellRenderer;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SideBarDefParser = /** @class */ (function () {\n function SideBarDefParser() {\n }\n SideBarDefParser.parse = function (toParse) {\n if (!toParse) {\n return null;\n }\n if (toParse === true) {\n return {\n toolPanels: [\n SideBarDefParser.DEFAULT_COLUMN_COMP,\n SideBarDefParser.DEFAULT_FILTER_COMP,\n ],\n defaultToolPanel: 'columns'\n };\n }\n if (typeof toParse === 'string') {\n return SideBarDefParser.parse([toParse]);\n }\n if (Array.isArray(toParse)) {\n var comps_1 = [];\n toParse.forEach(function (key) {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[key];\n if (!lookupResult) {\n console.warn(\"ag-grid: the key \" + key + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n comps_1.push(lookupResult);\n });\n if (comps_1.length === 0) {\n return null;\n }\n return {\n toolPanels: comps_1,\n defaultToolPanel: comps_1[0].id\n };\n }\n var result = {\n toolPanels: SideBarDefParser.parseComponents(toParse.toolPanels),\n defaultToolPanel: toParse.defaultToolPanel,\n hiddenByDefault: toParse.hiddenByDefault\n };\n return result;\n };\n SideBarDefParser.parseComponents = function (from) {\n var result = [];\n from.forEach(function (it) {\n var toAdd = null;\n if (typeof it === 'string') {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[it];\n if (!lookupResult) {\n console.warn(\"ag-grid: the key \" + it + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n toAdd = lookupResult;\n }\n else {\n toAdd = it;\n }\n result.push(toAdd);\n });\n return result;\n };\n SideBarDefParser.DEFAULT_COLUMN_COMP = {\n id: 'columns',\n labelDefault: 'Columns',\n labelKey: 'columns',\n iconKey: 'columns',\n toolPanel: 'agColumnsToolPanel',\n };\n SideBarDefParser.DEFAULT_FILTER_COMP = {\n id: 'filters',\n labelDefault: 'Filters',\n labelKey: 'filters',\n iconKey: 'filter',\n toolPanel: 'agFiltersToolPanel',\n };\n SideBarDefParser.DEFAULT_BY_KEY = {\n columns: SideBarDefParser.DEFAULT_COLUMN_COMP,\n filters: SideBarDefParser.DEFAULT_FILTER_COMP\n };\n return SideBarDefParser;\n}());\nexports.SideBarDefParser = SideBarDefParser;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar column_1 = require(\"../../entities/column\");\nvar beanStub_1 = require(\"../../context/beanStub\");\nvar constants_1 = require(\"../../constants\");\nvar utils_1 = require(\"../../utils\");\nvar SetLeftFeature = /** @class */ (function (_super) {\n __extends(SetLeftFeature, _super);\n function SetLeftFeature(columnOrGroup, eCell, beans, colsSpanning) {\n var _this = _super.call(this) || this;\n _this.columnOrGroup = columnOrGroup;\n _this.eCell = eCell;\n _this.colsSpanning = colsSpanning;\n _this.beans = beans;\n _this.printLayout = beans.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n return _this;\n }\n SetLeftFeature.prototype.setColsSpanning = function (colsSpanning) {\n this.colsSpanning = colsSpanning;\n this.onLeftChanged();\n };\n SetLeftFeature.prototype.getColumnOrGroup = function () {\n if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n return this.colsSpanning[this.colsSpanning.length - 1];\n }\n else {\n return this.columnOrGroup;\n }\n };\n SetLeftFeature.prototype.init = function () {\n this.addDestroyableEventListener(this.columnOrGroup, column_1.Column.EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));\n this.setLeftFirstTime();\n };\n SetLeftFeature.prototype.setLeftFirstTime = function () {\n var suppressMoveAnimation = this.beans.gridOptionsWrapper.isSuppressColumnMoveAnimation();\n var oldLeftExists = utils_1._.exists(this.columnOrGroup.getOldLeft());\n var animateColumnMove = this.beans.columnAnimationService.isActive() && oldLeftExists && !suppressMoveAnimation;\n if (animateColumnMove) {\n this.animateInLeft();\n }\n else {\n this.onLeftChanged();\n }\n };\n SetLeftFeature.prototype.animateInLeft = function () {\n var _this = this;\n var left = this.getColumnOrGroup().getLeft();\n var oldLeft = this.getColumnOrGroup().getOldLeft();\n this.setLeft(oldLeft);\n // we must keep track of the left we want to set to, as this would otherwise lead to a race\n // condition, if the user changed the left value many times in one VM turn, then we want to make\n // make sure the actualLeft we set in the timeout below (in the next VM turn) is the correct left\n // position. eg if user changes column position twice, then setLeft() below executes twice in next\n // VM turn, but only one (the correct one) should get applied.\n this.actualLeft = left;\n this.beans.columnAnimationService.executeNextVMTurn(function () {\n // test this left value is the latest one to be applied, and if not, do nothing\n if (_this.actualLeft === left) {\n _this.setLeft(left);\n }\n });\n };\n SetLeftFeature.prototype.onLeftChanged = function () {\n var colOrGroup = this.getColumnOrGroup();\n var left = colOrGroup.getLeft();\n this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n this.setLeft(this.actualLeft);\n };\n SetLeftFeature.prototype.modifyLeftForPrintLayout = function (colOrGroup, leftPosition) {\n if (!this.printLayout) {\n return leftPosition;\n }\n if (colOrGroup.getPinned() === column_1.Column.PINNED_LEFT) {\n return leftPosition;\n }\n else if (colOrGroup.getPinned() === column_1.Column.PINNED_RIGHT) {\n var leftWidth = this.beans.columnController.getPinnedLeftContainerWidth();\n var bodyWidth = this.beans.columnController.getBodyContainerWidth();\n return leftWidth + bodyWidth + leftPosition;\n }\n else {\n // is in body\n var leftWidth = this.beans.columnController.getPinnedLeftContainerWidth();\n return leftWidth + leftPosition;\n }\n };\n SetLeftFeature.prototype.setLeft = function (value) {\n // if the value is null, then that means the column is no longer\n // displayed. there is logic in the rendering to fade these columns\n // out, so we don't try and change their left positions.\n if (utils_1._.exists(value)) {\n this.eCell.style.left = value + \"px\";\n }\n };\n return SetLeftFeature;\n}(beanStub_1.BeanStub));\nexports.SetLeftFeature = SetLeftFeature;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar popupComponent_1 = require(\"../../widgets/popupComponent\");\nvar constants_1 = require(\"../../constants\");\nvar utils_1 = require(\"../../utils\");\nvar LargeTextCellEditor = /** @class */ (function (_super) {\n __extends(LargeTextCellEditor, _super);\n function LargeTextCellEditor() {\n return _super.call(this, LargeTextCellEditor.TEMPLATE) || this;\n }\n LargeTextCellEditor.prototype.init = function (params) {\n this.params = params;\n this.focusAfterAttached = params.cellStartedEdit;\n this.textarea = document.createElement(\"textarea\");\n this.textarea.maxLength = params.maxLength ? params.maxLength : \"200\";\n this.textarea.cols = params.cols ? params.cols : \"60\";\n this.textarea.rows = params.rows ? params.rows : \"10\";\n if (utils_1._.exists(params.value)) {\n this.textarea.value = params.value.toString();\n }\n this.getGui().querySelector('.ag-large-textarea').appendChild(this.textarea);\n this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n };\n LargeTextCellEditor.prototype.onKeyDown = function (event) {\n var key = event.which || event.keyCode;\n if (key == constants_1.Constants.KEY_LEFT ||\n key == constants_1.Constants.KEY_UP ||\n key == constants_1.Constants.KEY_RIGHT ||\n key == constants_1.Constants.KEY_DOWN ||\n (event.shiftKey && key == constants_1.Constants.KEY_ENTER)) { // shift+enter allows for newlines\n event.stopPropagation();\n }\n };\n LargeTextCellEditor.prototype.afterGuiAttached = function () {\n if (this.focusAfterAttached) {\n this.textarea.focus();\n }\n };\n LargeTextCellEditor.prototype.getValue = function () {\n return this.params.parseValue(this.textarea.value);\n };\n LargeTextCellEditor.TEMPLATE = \n // tab index is needed so we can focus, which is needed for keyboard events\n '
' +\n '
' +\n '
';\n return LargeTextCellEditor;\n}(popupComponent_1.PopupComponent));\nexports.LargeTextCellEditor = LargeTextCellEditor;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar utils_1 = require(\"../../utils\");\nvar AnimateSlideCellRenderer = /** @class */ (function (_super) {\n __extends(AnimateSlideCellRenderer, _super);\n function AnimateSlideCellRenderer() {\n var _this = _super.call(this, AnimateSlideCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n _this.eCurrent = _this.queryForHtmlElement('.ag-value-slide-current');\n return _this;\n }\n AnimateSlideCellRenderer.prototype.init = function (params) {\n this.params = params;\n this.refresh(params);\n };\n AnimateSlideCellRenderer.prototype.addSlideAnimation = function () {\n var _this = this;\n this.refreshCount++;\n // below we keep checking this, and stop working on the animation\n // if it no longer matches - this means another animation has started\n // and this one is stale.\n var refreshCountCopy = this.refreshCount;\n // if old animation, remove it\n if (this.ePrevious) {\n this.getGui().removeChild(this.ePrevious);\n }\n this.ePrevious = utils_1._.loadTemplate('');\n this.ePrevious.innerHTML = this.eCurrent.innerHTML;\n this.getGui().insertBefore(this.ePrevious, this.eCurrent);\n // having timeout of 0 allows use to skip to the next css turn,\n // so we know the previous css classes have been applied. so the\n // complex set of setTimeout below creates the animation\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n utils_1._.addCssClass(_this.ePrevious, 'ag-value-slide-out-end');\n }, 50);\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n _this.getGui().removeChild(_this.ePrevious);\n _this.ePrevious = null;\n }, 3000);\n };\n AnimateSlideCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (utils_1._.missing(value)) {\n value = '';\n }\n if (value === this.lastValue) {\n return;\n }\n this.addSlideAnimation();\n this.lastValue = value;\n if (utils_1._.exists(params.valueFormatted)) {\n this.eCurrent.innerHTML = params.valueFormatted;\n }\n else if (utils_1._.exists(params.value)) {\n this.eCurrent.innerHTML = value;\n }\n else {\n utils_1._.clearElement(this.eCurrent);\n }\n return true;\n };\n AnimateSlideCellRenderer.TEMPLATE = '' +\n '' +\n '';\n return AnimateSlideCellRenderer;\n}(component_1.Component));\nexports.AnimateSlideCellRenderer = AnimateSlideCellRenderer;\n","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar eventService_1 = require(\"../../eventService\");\nvar events_1 = require(\"../../events\");\nvar logger_1 = require(\"../../logger\");\nvar infiniteBlock_1 = require(\"./infiniteBlock\");\nvar rowNodeCache_1 = require(\"../cache/rowNodeCache\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar columnApi_1 = require(\"../../columnController/columnApi\");\nvar InfiniteCache = /** @class */ (function (_super) {\n __extends(InfiniteCache, _super);\n function InfiniteCache(params) {\n return _super.call(this, params) || this;\n }\n InfiniteCache.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('InfiniteCache');\n };\n InfiniteCache.prototype.init = function () {\n _super.prototype.init.call(this);\n // start load of data, as the virtualRowCount will remain at 0 otherwise,\n // so we need this to kick things off, otherwise grid would never call getRow()\n this.getRow(0);\n };\n InfiniteCache.prototype.moveItemsDown = function (block, moveFromIndex, moveCount) {\n var startRow = block.getStartRow();\n var endRow = block.getEndRow();\n var indexOfLastRowToMove = moveFromIndex + moveCount;\n // all rows need to be moved down below the insertion index\n for (var currentRowIndex = endRow - 1; currentRowIndex >= startRow; currentRowIndex--) {\n // don't move rows at or before the insertion index\n if (currentRowIndex < indexOfLastRowToMove) {\n continue;\n }\n var indexOfNodeWeWant = currentRowIndex - moveCount;\n var nodeForThisIndex = this.getRow(indexOfNodeWeWant, true);\n if (nodeForThisIndex) {\n block.setRowNode(currentRowIndex, nodeForThisIndex);\n }\n else {\n block.setBlankRowNode(currentRowIndex);\n block.setDirty();\n }\n }\n };\n InfiniteCache.prototype.insertItems = function (block, indexToInsert, items) {\n var pageStartRow = block.getStartRow();\n var pageEndRow = block.getEndRow();\n var newRowNodes = [];\n // next stage is insert the rows into this page, if applicable\n for (var index = 0; index < items.length; index++) {\n var rowIndex = indexToInsert + index;\n var currentRowInThisPage = rowIndex >= pageStartRow && rowIndex < pageEndRow;\n if (currentRowInThisPage) {\n var dataItem = items[index];\n var newRowNode = block.setNewData(rowIndex, dataItem);\n newRowNodes.push(newRowNode);\n }\n }\n return newRowNodes;\n };\n InfiniteCache.prototype.insertItemsAtIndex = function (indexToInsert, items) {\n // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n var _this = this;\n var newNodes = [];\n this.forEachBlockInReverseOrder(function (block) {\n var pageEndRow = block.getEndRow();\n // if the insertion is after this page, then this page is not impacted\n if (pageEndRow <= indexToInsert) {\n return;\n }\n _this.moveItemsDown(block, indexToInsert, items.length);\n var newNodesThisPage = _this.insertItems(block, indexToInsert, items);\n newNodesThisPage.forEach(function (rowNode) { return newNodes.push(rowNode); });\n });\n if (this.isMaxRowFound()) {\n this.hack_setVirtualRowCount(this.getVirtualRowCount() + items.length);\n }\n this.onCacheUpdated();\n var event = {\n type: events_1.Events.EVENT_ROW_DATA_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n // the rowRenderer will not pass dontCreatePage, meaning when rendering the grid,\n // it will want new pages in the cache as it asks for rows. only when we are inserting /\n // removing rows via the api is dontCreatePage set, where we move rows between the pages.\n InfiniteCache.prototype.getRow = function (rowIndex, dontCreatePage) {\n if (dontCreatePage === void 0) { dontCreatePage = false; }\n var blockId = Math.floor(rowIndex / this.cacheParams.blockSize);\n var block = this.getBlock(blockId);\n if (!block) {\n if (dontCreatePage) {\n return null;\n }\n else {\n block = this.createBlock(blockId);\n }\n }\n return block.getRow(rowIndex);\n };\n InfiniteCache.prototype.createBlock = function (blockNumber) {\n var newBlock = new infiniteBlock_1.InfiniteBlock(blockNumber, this.cacheParams);\n this.getContext().wireBean(newBlock);\n this.postCreateBlock(newBlock);\n return newBlock;\n };\n // we have this on infinite row model only, not server side row model,\n // because for server side, it would leave the children in inconsistent\n // state - eg if a node had children, but after the refresh it had data\n // for a different row, then the children would be with the wrong row node.\n InfiniteCache.prototype.refreshCache = function () {\n this.forEachBlockInOrder(function (block) { return block.setDirty(); });\n this.checkBlockToLoad();\n };\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], InfiniteCache.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], InfiniteCache.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], InfiniteCache.prototype, \"gridApi\", void 0);\n __decorate([\n __param(0, context_1.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], InfiniteCache.prototype, \"setBeans\", null);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], InfiniteCache.prototype, \"init\", null);\n return InfiniteCache;\n}(rowNodeCache_1.RowNodeCache));\nexports.InfiniteCache = InfiniteCache;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar beans_1 = require(\"./beans\");\nvar cellComp_1 = require(\"./cellComp\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar utils_1 = require(\"../utils\");\nvar AutoHeightCalculator = /** @class */ (function () {\n function AutoHeightCalculator() {\n }\n AutoHeightCalculator.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n AutoHeightCalculator.prototype.getPreferredHeightForRow = function (rowNode) {\n var _this = this;\n if (!this.eDummyContainer) {\n this.eDummyContainer = document.createElement('div');\n // so any styles on row also get applied in dummy, otherwise\n // the content in dummy may differ to the real\n utils_1._.addCssClass(this.eDummyContainer, 'ag-row ag-row-no-focus');\n }\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n var eBodyContainer = this.gridPanel.getCenterContainer();\n eBodyContainer.appendChild(this.eDummyContainer);\n var cellComps = [];\n var autoRowHeightCols = this.columnController.getAllAutoRowHeightCols();\n var visibleAutoRowHeightCols = autoRowHeightCols.filter(function (col) { return col.isVisible(); });\n visibleAutoRowHeightCols.forEach(function (col) {\n var cellComp = new cellComp_1.CellComp(_this.$scope, _this.beans, col, rowNode, null, true, false);\n cellComp.setParentRow(_this.eDummyContainer);\n cellComps.push(cellComp);\n });\n var template = cellComps.map(function (cellComp) { return cellComp.getCreateTemplate(); }).join(' ');\n this.eDummyContainer.innerHTML = template;\n // this gets any cellComps that are using components to put the components in\n cellComps.forEach(function (cellComp) { return cellComp.afterAttached(); });\n // we should be able to just take the height of the row at this point, however\n // the row isn't expanding to cover the cell heights, i don't know why, i couldn't\n // figure it out so instead looking at the individual cells instead\n var maxCellHeight = 0;\n for (var i = 0; i < this.eDummyContainer.children.length; i++) {\n var child = this.eDummyContainer.children[i];\n if (child.offsetHeight > maxCellHeight) {\n maxCellHeight = child.offsetHeight;\n }\n }\n // we are finished with the dummy container, so get rid of it\n eBodyContainer.removeChild(this.eDummyContainer);\n cellComps.forEach(function (cellComp) {\n // dunno why we need to detach first, doing it here to be consistent with code in RowComp\n cellComp.detach();\n cellComp.destroy();\n });\n // in case anything left over from last time\n utils_1._.clearElement(this.eDummyContainer);\n return maxCellHeight;\n };\n __decorate([\n context_1.Autowired('beans'),\n __metadata(\"design:type\", beans_1.Beans)\n ], AutoHeightCalculator.prototype, \"beans\", void 0);\n __decorate([\n context_1.Autowired(\"$scope\"),\n __metadata(\"design:type\", Object)\n ], AutoHeightCalculator.prototype, \"$scope\", void 0);\n __decorate([\n context_1.Autowired(\"columnController\"),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], AutoHeightCalculator.prototype, \"columnController\", void 0);\n AutoHeightCalculator = __decorate([\n context_1.Bean('autoHeightCalculator')\n ], AutoHeightCalculator);\n return AutoHeightCalculator;\n}());\nexports.AutoHeightCalculator = AutoHeightCalculator;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar eventService_1 = require(\"./eventService\");\nvar events_1 = require(\"./events\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar columnApi_1 = require(\"./columnController/columnApi\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar gridCell_1 = require(\"./entities/gridCell\");\nvar gridApi_1 = require(\"./gridApi\");\nvar cellComp_1 = require(\"./rendering/cellComp\");\nvar utils_1 = require(\"./utils\");\nvar FocusedCellController = /** @class */ (function () {\n function FocusedCellController() {\n }\n FocusedCellController.prototype.init = function () {\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_GROUP_OPENED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_MOVED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_PINNED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_VISIBLE, this.clearFocusedCell.bind(this));\n };\n FocusedCellController.prototype.clearFocusedCell = function () {\n this.focusedCell = null;\n this.onCellFocused(false);\n };\n FocusedCellController.prototype.getFocusedCell = function () {\n return this.focusedCell;\n };\n // we check if the browser is focusing something, and if it is, and\n // it's the cell we think is focused, then return the cell. so this\n // methods returns the cell if a) we think it has focus and b) the\n // browser thinks it has focus. this then returns nothing if we\n // first focus a cell, then second click outside the grid, as then the\n // grid cell will still be focused as far as the grid is concerned,\n // however the browser focus will have moved somewhere else.\n FocusedCellController.prototype.getFocusCellToUseAfterRefresh = function () {\n if (this.gridOptionsWrapper.isSuppressFocusAfterRefresh()) {\n return null;\n }\n if (!this.focusedCell) {\n return null;\n }\n // we check that the browser is actually focusing on the grid, if it is not, then\n // we have nothing to worry about\n var browserFocusedCell = this.getGridCellForDomElement(document.activeElement);\n if (!browserFocusedCell) {\n return null;\n }\n return this.focusedCell;\n };\n FocusedCellController.prototype.getGridCellForDomElement = function (eBrowserCell) {\n var ePointer = eBrowserCell;\n while (ePointer) {\n var cellComp = this.gridOptionsWrapper.getDomData(ePointer, cellComp_1.CellComp.DOM_DATA_KEY_CELL_COMP);\n if (cellComp) {\n return cellComp.getGridCell();\n }\n ePointer = ePointer.parentNode;\n }\n return null;\n };\n FocusedCellController.prototype.setFocusedCell = function (rowIndex, colKey, floating, forceBrowserFocus) {\n if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n var column = utils_1._.makeNull(this.columnController.getGridColumn(colKey));\n this.focusedCell = new gridCell_1.GridCell({ rowIndex: rowIndex,\n floating: utils_1._.makeNull(floating),\n column: column });\n this.onCellFocused(forceBrowserFocus);\n };\n FocusedCellController.prototype.isCellFocused = function (gridCell) {\n if (utils_1._.missing(this.focusedCell)) {\n return false;\n }\n return this.focusedCell.column === gridCell.column && this.isRowFocused(gridCell.rowIndex, gridCell.floating);\n };\n FocusedCellController.prototype.isRowNodeFocused = function (rowNode) {\n return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);\n };\n FocusedCellController.prototype.isAnyCellFocused = function () {\n return !!this.focusedCell;\n };\n FocusedCellController.prototype.isRowFocused = function (rowIndex, floating) {\n if (utils_1._.missing(this.focusedCell)) {\n return false;\n }\n var floatingOrNull = utils_1._.makeNull(floating);\n return this.focusedCell.rowIndex === rowIndex && this.focusedCell.floating === floatingOrNull;\n };\n FocusedCellController.prototype.onCellFocused = function (forceBrowserFocus) {\n var event = {\n type: events_1.Events.EVENT_CELL_FOCUSED,\n forceBrowserFocus: forceBrowserFocus,\n rowIndex: null,\n column: null,\n floating: null,\n api: this.gridApi,\n columnApi: this.columnApi,\n rowPinned: null\n };\n if (this.focusedCell) {\n event.rowIndex = this.focusedCell.rowIndex;\n event.column = this.focusedCell.column;\n event.rowPinned = this.focusedCell.floating;\n }\n this.eventService.dispatchEvent(event);\n };\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], FocusedCellController.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], FocusedCellController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], FocusedCellController.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], FocusedCellController.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], FocusedCellController.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], FocusedCellController.prototype, \"init\", null);\n FocusedCellController = __decorate([\n context_1.Bean('focusedCellController')\n ], FocusedCellController);\n return FocusedCellController;\n}());\nexports.FocusedCellController = FocusedCellController;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar rowNode_1 = require(\"../../entities/rowNode\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar selectionController_1 = require(\"../../selectionController\");\nvar eventService_1 = require(\"../../eventService\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar utils_1 = require(\"../../utils\");\nvar FlattenStage = /** @class */ (function () {\n function FlattenStage() {\n }\n FlattenStage.prototype.execute = function (params) {\n var rootNode = params.rowNode;\n // even if not doing grouping, we do the mapping, as the client might\n // of passed in data that already has a grouping in it somewhere\n var result = [];\n // putting value into a wrapper so it's passed by reference\n var nextRowTop = { value: 0 };\n var skipLeafNodes = this.columnController.isPivotMode();\n // if we are reducing, and not grouping, then we want to show the root node, as that\n // is where the pivot values are\n var showRootNode = skipLeafNodes && rootNode.leafGroup;\n var topList = showRootNode ? [rootNode] : rootNode.childrenAfterSort;\n this.recursivelyAddToRowsToDisplay(topList, result, nextRowTop, skipLeafNodes, 0);\n // don't show total footer when showRootNode is true (i.e. in pivot mode and no groups)\n var includeGroupTotalFooter = !showRootNode && this.gridOptionsWrapper.isGroupIncludeTotalFooter();\n if (includeGroupTotalFooter) {\n this.ensureFooterNodeExists(rootNode);\n this.addRowNodeToRowsToDisplay(rootNode.sibling, result, nextRowTop, 0);\n }\n return result;\n };\n FlattenStage.prototype.recursivelyAddToRowsToDisplay = function (rowsToFlatten, result, nextRowTop, skipLeafNodes, uiLevel) {\n if (utils_1._.missingOrEmpty(rowsToFlatten)) {\n return;\n }\n var groupSuppressRow = this.gridOptionsWrapper.isGroupSuppressRow();\n var hideOpenParents = this.gridOptionsWrapper.isGroupHideOpenParents();\n // these two are mutually exclusive, so if first set, we don't set the second\n var groupRemoveSingleChildren = this.gridOptionsWrapper.isGroupRemoveSingleChildren();\n var groupRemoveLowestSingleChildren = !groupRemoveSingleChildren && this.gridOptionsWrapper.isGroupRemoveLowestSingleChildren();\n for (var i = 0; i < rowsToFlatten.length; i++) {\n var rowNode = rowsToFlatten[i];\n // check all these cases, for working out if this row should be included in the final mapped list\n var isParent = rowNode.hasChildren();\n var isGroupSuppressedNode = groupSuppressRow && isParent;\n var isSkippedLeafNode = skipLeafNodes && !isParent;\n var isRemovedSingleChildrenGroup = groupRemoveSingleChildren && isParent && rowNode.childrenAfterGroup.length === 1;\n var isRemovedLowestSingleChildrenGroup = groupRemoveLowestSingleChildren && isParent && rowNode.leafGroup && rowNode.childrenAfterGroup.length === 1;\n // hide open parents means when group is open, we don't show it. we also need to make sure the\n // group is expandable in the first place (as leaf groups are not expandable if pivot mode is on).\n // the UI will never allow expanding leaf groups, however the user might via the API (or menu option 'expand all')\n var neverAllowToExpand = skipLeafNodes && rowNode.leafGroup;\n var isHiddenOpenParent = hideOpenParents && rowNode.expanded && (!neverAllowToExpand);\n var thisRowShouldBeRendered = !isSkippedLeafNode && !isGroupSuppressedNode && !isHiddenOpenParent && !isRemovedSingleChildrenGroup && !isRemovedLowestSingleChildrenGroup;\n if (thisRowShouldBeRendered) {\n this.addRowNodeToRowsToDisplay(rowNode, result, nextRowTop, uiLevel);\n }\n // if we are pivoting, we never map below the leaf group\n if (skipLeafNodes && rowNode.leafGroup) {\n continue;\n }\n if (isParent) {\n var excludedParent = isRemovedSingleChildrenGroup || isRemovedLowestSingleChildrenGroup;\n // we traverse the group if it is expended, however we always traverse if the parent node\n // was removed (as the group will never be opened if it is not displayed, we show the children instead)\n if (rowNode.expanded || excludedParent) {\n // if the parent was excluded, then ui level is that of the parent\n var uiLevelForChildren = excludedParent ? uiLevel : uiLevel + 1;\n this.recursivelyAddToRowsToDisplay(rowNode.childrenAfterSort, result, nextRowTop, skipLeafNodes, uiLevelForChildren);\n // put a footer in if user is looking for it\n if (this.gridOptionsWrapper.isGroupIncludeFooter()) {\n this.ensureFooterNodeExists(rowNode);\n this.addRowNodeToRowsToDisplay(rowNode.sibling, result, nextRowTop, uiLevel);\n }\n }\n }\n else if (rowNode.master && rowNode.expanded) {\n var detailNode = this.createDetailNode(rowNode);\n this.addRowNodeToRowsToDisplay(detailNode, result, nextRowTop, uiLevel);\n }\n }\n };\n // duplicated method, it's also in floatingRowModel\n FlattenStage.prototype.addRowNodeToRowsToDisplay = function (rowNode, result, nextRowTop, uiLevel) {\n result.push(rowNode);\n var isGroupMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();\n rowNode.setUiLevel(isGroupMultiAutoColumn ? 0 : uiLevel);\n };\n FlattenStage.prototype.ensureFooterNodeExists = function (groupNode) {\n // only create footer node once, otherwise we have daemons and\n // the animate screws up with the daemons hanging around\n if (utils_1._.exists(groupNode.sibling)) {\n return;\n }\n var footerNode = new rowNode_1.RowNode();\n this.context.wireBean(footerNode);\n Object.keys(groupNode).forEach(function (key) {\n footerNode[key] = groupNode[key];\n });\n footerNode.footer = true;\n footerNode.rowTop = null;\n footerNode.oldRowTop = null;\n if (utils_1._.exists(footerNode.id)) {\n footerNode.id = 'rowGroupFooter_' + footerNode.id;\n }\n // get both header and footer to reference each other as siblings. this is never undone,\n // only overwritten. so if a group is expanded, then contracted, it will have a ghost\n // sibling - but that's fine, as we can ignore this if the header is contracted.\n footerNode.sibling = groupNode;\n groupNode.sibling = footerNode;\n };\n FlattenStage.prototype.createDetailNode = function (masterNode) {\n if (utils_1._.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n else {\n var detailNode = new rowNode_1.RowNode();\n this.context.wireBean(detailNode);\n detailNode.detail = true;\n detailNode.selectable = false;\n // flower was renamed to 'detail', but keeping for backwards compatibility\n detailNode.flower = detailNode.detail;\n detailNode.parent = masterNode;\n if (utils_1._.exists(masterNode.id)) {\n detailNode.id = 'detail_' + masterNode.id;\n }\n detailNode.data = masterNode.data;\n detailNode.level = masterNode.level + 1;\n masterNode.detailNode = detailNode;\n masterNode.childFlower = masterNode.detailNode; // for backwards compatibility\n return detailNode;\n }\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], FlattenStage.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('selectionController'),\n __metadata(\"design:type\", selectionController_1.SelectionController)\n ], FlattenStage.prototype, \"selectionController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], FlattenStage.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], FlattenStage.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], FlattenStage.prototype, \"columnController\", void 0);\n FlattenStage = __decorate([\n context_1.Bean('flattenStage')\n ], FlattenStage);\n return FlattenStage;\n}());\nexports.FlattenStage = FlattenStage;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar ColumnAnimationService = /** @class */ (function () {\n function ColumnAnimationService() {\n this.executeNextFuncs = [];\n this.executeLaterFuncs = [];\n this.active = false;\n this.animationThreadCount = 0;\n }\n ColumnAnimationService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n ColumnAnimationService.prototype.isActive = function () {\n return this.active;\n };\n ColumnAnimationService.prototype.start = function () {\n if (this.active) {\n return;\n }\n if (this.gridOptionsWrapper.isSuppressColumnMoveAnimation()) {\n return;\n }\n // if doing RTL, we don't animate open / close as due to how the pixels are inverted,\n // the animation moves all the row the the right rather than to the left (ie it's the static\n // columns that actually get their coordinates updated)\n if (this.gridOptionsWrapper.isEnableRtl()) {\n return;\n }\n this.ensureAnimationCssClassPresent();\n this.active = true;\n };\n ColumnAnimationService.prototype.finish = function () {\n if (!this.active) {\n return;\n }\n this.flush();\n this.active = false;\n };\n ColumnAnimationService.prototype.executeNextVMTurn = function (func) {\n if (this.active) {\n this.executeNextFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.executeLaterVMTurn = function (func) {\n if (this.active) {\n this.executeLaterFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.ensureAnimationCssClassPresent = function () {\n var _this = this;\n // up the count, so we can tell if someone else has updated the count\n // by the time the 'wait' func executes\n this.animationThreadCount++;\n var animationThreadCountCopy = this.animationThreadCount;\n this.gridPanel.setColumnMovingCss(true);\n this.executeLaterFuncs.push(function () {\n // only remove the class if this thread was the last one to update it\n if (_this.animationThreadCount === animationThreadCountCopy) {\n _this.gridPanel.setColumnMovingCss(false);\n }\n });\n };\n ColumnAnimationService.prototype.flush = function () {\n var nowFuncs = this.executeNextFuncs;\n this.executeNextFuncs = [];\n var waitFuncs = this.executeLaterFuncs;\n this.executeLaterFuncs = [];\n if (nowFuncs.length === 0 && waitFuncs.length === 0) {\n return;\n }\n window.setTimeout(function () { return nowFuncs.forEach(function (func) { return func(); }); }, 0);\n window.setTimeout(function () { return waitFuncs.forEach(function (func) { return func(); }); }, 300);\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ColumnAnimationService.prototype, \"gridOptionsWrapper\", void 0);\n ColumnAnimationService = __decorate([\n context_1.Bean('columnAnimationService')\n ], ColumnAnimationService);\n return ColumnAnimationService;\n}());\nexports.ColumnAnimationService = ColumnAnimationService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar eventService_1 = require(\"../eventService\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar animateSlideCellRenderer_1 = require(\"./cellRenderers/animateSlideCellRenderer\");\nvar animateShowChangeCellRenderer_1 = require(\"./cellRenderers/animateShowChangeCellRenderer\");\nvar groupCellRenderer_1 = require(\"./cellRenderers/groupCellRenderer\");\nvar utils_1 = require(\"../utils\");\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRendererMap = {};\n }\n CellRendererFactory_1 = CellRendererFactory;\n CellRendererFactory.prototype.init = function () {\n this.cellRendererMap[CellRendererFactory_1.ANIMATE_SLIDE] = animateSlideCellRenderer_1.AnimateSlideCellRenderer;\n this.cellRendererMap[CellRendererFactory_1.ANIMATE_SHOW_CHANGE] = animateShowChangeCellRenderer_1.AnimateShowChangeCellRenderer;\n this.cellRendererMap[CellRendererFactory_1.GROUP] = groupCellRenderer_1.GroupCellRenderer;\n // this.registerRenderersFromGridOptions();\n };\n // private registerRenderersFromGridOptions(): void {\n // let userProvidedCellRenderers = this.gridOptionsWrapper.getCellRenderers();\n // _.iterateObject(userProvidedCellRenderers, (key: string, cellRenderer: {new(): ICellRenderer} | ICellRendererFunc)=> {\n // this.addCellRenderer(key, cellRenderer);\n // });\n // }\n CellRendererFactory.prototype.addCellRenderer = function (key, cellRenderer) {\n this.cellRendererMap[key] = cellRenderer;\n };\n CellRendererFactory.prototype.getCellRenderer = function (key) {\n var result = this.cellRendererMap[key];\n if (utils_1._.missing(result)) {\n console.warn('ag-Grid: unable to find cellRenderer for key ' + key);\n return null;\n }\n return result;\n };\n var CellRendererFactory_1;\n CellRendererFactory.ANIMATE_SLIDE = 'animateSlide';\n CellRendererFactory.ANIMATE_SHOW_CHANGE = 'animateShowChange';\n CellRendererFactory.GROUP = 'group';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], CellRendererFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('expressionService'),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], CellRendererFactory.prototype, \"expressionService\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], CellRendererFactory.prototype, \"eventService\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], CellRendererFactory.prototype, \"init\", null);\n CellRendererFactory = CellRendererFactory_1 = __decorate([\n context_1.Bean('cellRendererFactory')\n ], CellRendererFactory);\n return CellRendererFactory;\n}());\nexports.CellRendererFactory = CellRendererFactory;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar column_1 = require(\"../entities/column\");\nvar context_1 = require(\"../context/context\");\nvar headerContainer_1 = require(\"./headerContainer\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar component_1 = require(\"../widgets/component\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar gridApi_1 = require(\"../gridApi\");\nvar autoWidthCalculator_1 = require(\"../rendering/autoWidthCalculator\");\nvar constants_1 = require(\"../constants\");\nvar utils_1 = require(\"../utils\");\nvar HeaderRootComp = /** @class */ (function (_super) {\n __extends(HeaderRootComp, _super);\n function HeaderRootComp() {\n return _super.call(this, HeaderRootComp.TEMPLATE) || this;\n }\n HeaderRootComp.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.childContainers.forEach(function (c) { return c.registerGridComp(gridPanel); });\n };\n HeaderRootComp.prototype.postConstruct = function () {\n var _this = this;\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n this.gridApi.registerHeaderRootComp(this);\n this.autoWidthCalculator.registerHeaderRootComp(this);\n var centerContainer = new headerContainer_1.HeaderContainer(this.eHeaderContainer, this.eHeaderViewport, null);\n var pinnedLeftContainer = new headerContainer_1.HeaderContainer(this.ePinnedLeftHeader, null, column_1.Column.PINNED_LEFT);\n var pinnedRightContainer = new headerContainer_1.HeaderContainer(this.ePinnedRightHeader, null, column_1.Column.PINNED_RIGHT);\n this.childContainers = [centerContainer, pinnedLeftContainer, pinnedRightContainer];\n this.childContainers.forEach(function (container) { return _this.getContext().wireBean(container); });\n // shotgun way to get labels to change, eg from sum(amount) to avg(amount)\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshHeader.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n // for setting ag-pivot-on / ag-pivot-off CSS classes\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n this.onPivotModeChanged();\n this.addPreventHeaderScroll();\n if (this.columnController.isReady()) {\n this.refreshHeader();\n }\n };\n HeaderRootComp.prototype.onDomLayoutChanged = function () {\n var newValue = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n if (this.printLayout !== newValue) {\n this.printLayout = newValue;\n this.refreshHeader();\n }\n };\n HeaderRootComp.prototype.setHorizontalScroll = function (offset) {\n this.eHeaderContainer.style.transform = \"translateX(\" + offset + \"px)\";\n };\n HeaderRootComp.prototype.forEachHeaderElement = function (callback) {\n this.childContainers.forEach(function (childContainer) { return childContainer.forEachHeaderElement(callback); });\n };\n HeaderRootComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.childContainers.forEach(function (container) { return container.destroy(); });\n };\n HeaderRootComp.prototype.refreshHeader = function () {\n this.childContainers.forEach(function (container) { return container.refresh(); });\n };\n HeaderRootComp.prototype.onPivotModeChanged = function () {\n var pivotMode = this.columnController.isPivotMode();\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-pivot-on', pivotMode);\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-pivot-off', !pivotMode);\n };\n HeaderRootComp.prototype.setHeight = function (height) {\n var px = height + \"px\";\n this.getGui().style.height = px;\n this.getGui().style.minHeight = px;\n };\n // if the user is in floating filter and hits tab a few times, the header can\n // end up scrolling to show items off the screen, leaving the grid and header\n // and the grid columns no longer in sync.\n HeaderRootComp.prototype.addPreventHeaderScroll = function () {\n var _this = this;\n this.addDestroyableEventListener(this.eHeaderViewport, 'scroll', function () {\n // if the header scrolls, the header will be out of sync. so we reset the\n // header scroll, and then scroll the body, which will in turn set the offset\n // on the header, giving the impression that the header scrolled as expected.\n var scrollLeft = _this.eHeaderViewport.scrollLeft;\n if (scrollLeft !== 0) {\n _this.gridPanel.scrollHorizontally(scrollLeft);\n _this.eHeaderViewport.scrollLeft = 0;\n }\n });\n };\n HeaderRootComp.prototype.setHeaderContainerWidth = function (width) {\n this.eHeaderContainer.style.width = width + \"px\";\n };\n HeaderRootComp.prototype.setLeftVisible = function (visible) {\n utils_1._.setVisible(this.ePinnedLeftHeader, visible);\n };\n HeaderRootComp.prototype.setRightVisible = function (visible) {\n utils_1._.setVisible(this.ePinnedRightHeader, visible);\n };\n HeaderRootComp.TEMPLATE = \"
\\n
\\n
\\n
\\n
\\n
\\n
\";\n __decorate([\n componentAnnotations_1.RefSelector('ePinnedLeftHeader'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderRootComp.prototype, \"ePinnedLeftHeader\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('ePinnedRightHeader'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderRootComp.prototype, \"ePinnedRightHeader\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eHeaderContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderRootComp.prototype, \"eHeaderContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eHeaderViewport'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderRootComp.prototype, \"eHeaderViewport\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], HeaderRootComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], HeaderRootComp.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], HeaderRootComp.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], HeaderRootComp.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('autoWidthCalculator'),\n __metadata(\"design:type\", autoWidthCalculator_1.AutoWidthCalculator)\n ], HeaderRootComp.prototype, \"autoWidthCalculator\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], HeaderRootComp.prototype, \"postConstruct\", null);\n return HeaderRootComp;\n}(component_1.Component));\nexports.HeaderRootComp = HeaderRootComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v20.2.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar beanStub_1 = require(\"../context/beanStub\");\nvar context_1 = require(\"../context/context\");\nvar columnHoverService_1 = require(\"../rendering/columnHoverService\");\nvar HoverFeature = /** @class */ (function (_super) {\n __extends(HoverFeature, _super);\n function HoverFeature(columns, element) {\n var _this = _super.call(this) || this;\n _this.columns = columns;\n _this.addMouseHoverListeners(element);\n return _this;\n }\n HoverFeature.prototype.addMouseHoverListeners = function (element) {\n this.addDestroyableEventListener(element, 'mouseout', this.onMouseOut.bind(this));\n this.addDestroyableEventListener(element, 'mouseover', this.onMouseOver.bind(this));\n };\n HoverFeature.prototype.onMouseOut = function () {\n this.columnHoverService.clearMouseOver();\n };\n HoverFeature.prototype.onMouseOver = function () {\n this.columnHoverService.setMouseOver(this.columns);\n };\n __decorate([\n context_1.Autowired('columnHoverService'),\n __metadata(\"design:type\", columnHoverService_1.ColumnHoverService)\n ], HoverFeature.prototype, \"columnHoverService\", void 0);\n return HoverFeature;\n}(beanStub_1.BeanStub));\nexports.HoverFeature = HoverFeature;\n"],"sourceRoot":""}