{"version":3,"sources":["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/columnController/columnKeyCreator.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/columnController.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/displayedGroupCreator.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/framework/userComponentRegistry.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/framework/agComponentUtils.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/autoGroupColService.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/components/componentUtil.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/columnUtils.js","webpack:///./node_modules/ag-grid-community/dist/lib/constants.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/columnFactory.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/framework/userComponentFactory.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/framework/frameworkComponentWrapper.js","webpack:///./node_modules/ag-grid-community/dist/lib/components/agGridWebComponent.js","webpack:///./node_modules/ag-grid-community/dist/lib/columnController/groupInstanceIdCreator.js"],"names":["Object","defineProperty","exports","value","ColDefUtil","STRING_PROPERTIES","OBJECT_PROPERTIES","ARRAY_PROPERTIES","NUMBER_PROPERTIES","BOOLEAN_PROPERTIES","FUNCTION_PROPERTIES","ALL_PROPERTIES","concat","FRAMEWORK_PROPERTIES","__decorate","this","decorators","target","key","desc","d","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","__metadata","k","v","metadata","columnController_1","context_1","ColumnApi","prototype","sizeColumnsToFit","gridWidth","columnController","setColumnGroupOpened","group","newValue","getColumnGroup","name","instanceId","getOriginalColumnGroup","getDisplayNameForColumn","column","location","getDisplayNameForColumnGroup","columnGroup","getColumn","getPrimaryColumn","setColumnState","columnState","getColumnState","resetColumnState","getColumnGroupState","setColumnGroupState","stateItems","resetColumnGroupState","isPinning","isPinningLeft","isPinningRight","getDisplayedColAfter","col","getDisplayedColBefore","setColumnVisible","visible","setColumnsVisible","keys","setColumnPinned","pinned","setColumnsPinned","getAllColumns","getAllPrimaryColumns","getAllGridColumns","getDisplayedLeftColumns","getDisplayedCenterColumns","getDisplayedRightColumns","getAllDisplayedColumns","getAllDisplayedVirtualColumns","moveColumn","toIndex","console","warn","moveColumnByIndex","fromIndex","moveColumns","columnsToMoveKeys","moveRowGroupColumn","setColumnAggFunc","aggFunc","setColumnWidth","newWidth","finished","setPivotMode","pivotMode","isPivotMode","getSecondaryPivotColumn","pivotKeys","valueColKey","setValueColumns","colKeys","getValueColumns","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","error","hideColumns","colIds","hide","hideColumn","colId","setState","getState","resetState","getAggregationColumns","removeAggregationColumn","removeAggregationColumns","addAggregationColumn","addAggregationColumns","setColumnAggFunction","getDisplayNameForCol","Autowired","ColumnController","Bean","utils_1","ColumnKeyCreator","existingKeys","addExistingKeys","getUniqueKey","colField","_","toStringOrNull","count","idToTry","indexOf","push","__param","paramIndex","decorator","columnGroup_1","column_1","gridOptionsWrapper_1","expressionService_1","columnFactory_1","displayedGroupCreator_1","autoWidthCalculator_1","eventService_1","columnUtils_1","logger_1","events_1","originalColumnGroup_1","groupInstanceIdCreator_1","columnAnimationService_1","autoGroupColService_1","valueCache_1","gridApi_1","columnApi_1","primaryHeaderRowCount","secondaryHeaderRowCount","secondaryColumnsPresent","gridHeaderRowCount","displayedLeftColumns","displayedRightColumns","displayedCenterColumns","allDisplayedColumns","allDisplayedVirtualColumns","allDisplayedCenterVirtualColumns","rowGroupColumns","valueColumns","pivotColumns","ready","autoGroupsNeedBuilding","bodyWidth","leftWidth","rightWidth","bodyWidthDirty","init","gridOptionsWrapper","suppressColumnVirtualisation","isSuppressColumnVirtualisation","isPivotSettingAllowed","usingTreeData","isTreeData","setColumnDefs","columnDefs","source","colsPreviouslyExisted","valueCache","expire","oldPrimaryColumns","primaryColumns","balancedTreeResult","columnFactory","createColumnTree","primaryColumnTree","columnTree","treeDept","getColumnsFromTree","extractRowGroupColumns","extractPivotColumns","createValueColumns","updateGridColumns","updateDisplayedColumns","checkDisplayedVirtualColumns","isDeltaColumnMode","eventEverythingChanged","type","Events","EVENT_COLUMN_EVERYTHING_CHANGED","api","gridApi","columnApi","eventService","dispatchEvent","newColumnsLoadedEvent","EVENT_NEW_COLUMNS_LOADED","isAutoRowHeightActive","autoRowHeightColumns","getAllAutoRowHeightCols","setVirtualViewportLeftAndRight","isEnableRtl","viewportLeft","scrollPosition","scrollWidth","viewportRight","getDisplayedColumnsStartingAt","currentColumn","result","exists","hashBefore","map","getId","join","updateVirtualSets","hashAfter","event_1","EVENT_VIRTUAL_COLUMNS_CHANGED","setVirtualViewportPosition","pivot","event","EVENT_COLUMN_PIVOT_MODE_CHANGED","valueColumnToFind","foundColumn","secondaryColumns","forEach","thisPivotKeys","getColDef","pivotValueColumn","pivotKeyMatches","compareArrays","pivotValueMatches","setBeans","loggerFactory","logger","create","setFirstRightAndLastLeftPinned","lastLeft","firstRight","last","gridColumns","setLastLeftPinned","setFirstRightPinned","_this","columnsAutosized","changesThisTimeAround","actionOnGridColumns","preferredWidth","autoWidthCalculator","getPreferredWidthForColumn","normaliseColumnWidth","setActualWidth","event_2","EVENT_COLUMN_RESIZED","columns","rootColumns","recursiveFindColumns","childColumns","child","Column","OriginalColumnGroup","getChildren","displayedLeftColumnTree","displayedRightColumnTree","displayedCentreColumnTree","getPrimaryColumnTree","getHeaderRowCount","getDisplayedColumnGroups","PINNED_LEFT","PINNED_RIGHT","isColumnDisplayed","getDisplayedLeftColumnsForRow","rowNode","colSpanActive","getDisplayedColumnsForRow","getDisplayedRightColumnsForRow","displayedColumns","filterCallback","emptySpaceBeforeColumn","out_i_1","lastConsideredCol","_loop_1","filterPasses","maxAllowedColSpan","colSpan","Math","min","getColSpan","columnsToCheckFilter","colsToRemove","j","colForFilter","gapBeforeColumn","getAllDisplayedCenterVirtualColumnsForRow","getLeft","isColumnInViewport","bind","columnLeft","columnRight","getActualWidth","leftBounds","rightBounds","columnToMuchLeft","columnToMuchRight","getPinnedLeftContainerWidth","getWidthOfColsInList","getPinnedRightContainerWidth","updatePrimaryColumnList","masterList","actionIsAdd","columnCallback","eventType","missingOrEmpty","atLeastOne","columnToAdd","removeFromArray","setPrimaryColumnList","EVENT_COLUMN_ROW_GROUP_CHANGED","setRowGroupActive","active","isRowGroupActive","isSuppressMakeColumnVisibleAfterUnGroup","setVisible","setPivotActive","EVENT_COLUMN_PIVOT_CHANGED","added","eventName","EVENT_COLUMN_VALUE_CHANGED","setValueActive","isValueActive","getAggFunc","defaultAggFunc","aggFuncService","getDefaultAggFunc","setAggFunc","getMinWidth","isGreaterThanMax","getMaxWidth","getPrimaryOrGridColumn","getGridColumn","shiftKey","sets","width","ratios","defaultIsShift","getColResizeDefault","otherCol","widthDiff","otherColWidth","resizeColumnSets","checkMinAndMaxWidthsForSet","columnResizeSet","minWidthAccumulated","maxWidthAccumulated","maxWidthActive","minWidthPasses","maxWidthPasses","resizeSets","passMinMaxCheck","every","changedCols","allCols","set","newWidths","finishedCols","finishedColsGrew","loopCount","_loop_2","subsetCols","subsetRatios","subsetRatioTotal","pixelsToDistribute","index","thisColFinished","ratioThisCol","ratioScale","colNewWidth","lastCol","round","state_1","atLeastOneColChanged","setLeftValues","updateBodyWidths","event_4","event_3","event_5","splice","columnAnimationService","start","columnsToMove","getGridColumns","failedRules","doesMovePassRules","moveInArray","EVENT_COLUMN_MOVED","finish","proposedColumnOrder","slice","doesMovePassMarryChildren","doesMovePassLockedPositions","foundNonLocked","rulePassed","lockPosition","allColumnsCopy","columnUtils","depthFirstOriginalTreeSearch","gridBalancedTree","marryChildren","getColGroupDef","newIndexes","getLeafColumns","newColIndex","maxIndex","max","apply","minIndex","spread","maxSpread","getBodyContainerWidth","getContainerWidth","newBodyWidth","newLeftWidth","newRightWidth","atLeastOneChanged","event_6","EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED","isPivotActive","getDisplayedColumns","getAllColumnsForQuickFilter","columnsForQuickFilter","isEmpty","isRowGroupEmpty","isVisible","EVENT_COLUMN_VISIBLE","actualPinned","getDomLayout","getPinned","setPinned","EVENT_COLUMN_PINNED","action","createEvent","updatedColumns","resultOfAction","event_7","oldIndex","getDisplayedGroupAfter","getDisplayedLeafColumns","requiredLevel","getLevel","groupPointer","getParent","getPrimaryAndSecondaryAndAutoColumns","groupAutoColumns","createStateItemFromColumn","rowGroupIndex","pivotIndex","getColId","missing","primaryColumnState","groupAutoColumnState","columnStateList","orderColumnStateList","gridColumnIds","sort","itemA","itemB","posA","posB","suppressEverythingEvent","columnStates","letRowGroupIndex","letPivotIndex","rowGroup","stateItem","columnStateBefore","columnsWithNoState","success","rowGroupIndexes","pivotIndexes","autoGroupColumnStates","state","getAutoColumn","syncColumnWithStateItem","syncColumnWithNoState","sortColumnListUsingIndexes","autoCol","orderOfColIds_1","colA","colB","indexA","indexB","putFixedColumnsFirst","event_8","raiseColumnEvents","isSuppressSetColumnStateEvents","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","undefined","event_11","movedColumns","_loop_3","before","after","predicate","movedColumn","find","this_1","event_12","indexes","minColWidth","getMinColWidth","getColumns","columnLookupCallback","foundColumns","getColumnWithValidation","columnList","columnsMatch","groupCol","columnMatches","colDefMatches","idMatches","includeAggFunc","headerName","getHeaderName","wrapHeaderNameWithAggFunc","getDisplayNameForOriginalColumnGroup","originalColumnGroup","colGroupDef","colDef","headerValueGetter","params","getApi","context","getContext","expressionService","evaluate","field","camelCaseToHumanText","isSuppressAggFuncInHeader","aggFuncFound","pivotActiveOnThisColumn","measureActive","aggregationPresent","aggFuncString","localeTextFunc","getLocaleTextFunc","aggFuncStringTranslated","ColumnGroup","allColumnGroups","checkInstanceId","depthFirstAllColumnTreeSearch","matched","getGroupId","getInstanceId","isReady","extractColumns","flag","previousCols","setFlagFunc","getIndexFunc","getValueFunc","colPresentInPrimaryFunc","colMissingFromPrimaryFunc","colNewFunc","removedCols","filter","existingCols","newPrimaryCols","newCols","booleanValue","res","groupState","groupId","open","openByDefault","columnGroupState","node","isExpanded","impactedGroups","groupKey","log","setExpanded","updateGroupsAndDisplayedColumns","EVENT_COLUMN_GROUP_OPENED","keyAsString","calculateColumnsForDisplay","columnsForDisplay","isAutoGroupCol","isValueCol","checkColSpanActiveInCols","calculateColumnsForGroupDisplay","groupDisplayColumns","checkFunc","showRowGroup","getGroupDisplayColumns","buildDisplayedTrees","isSecondaryColumnsPresent","newColsPresent","processSecondaryColumnDefinitions","secondaryBalancedTree","getProcessSecondaryColDefFunc","groupCallback","getProcessSecondaryColGroupDefFunc","searchForColDefs","colDefs2","abstractColDef","isGroup","children","gridColsArePrimary","lastPrimaryOrder","orderGridColsLikeLastPrimary","addAutoGroupToGridColumns","autoHeight","setupQuickFilterColumns","clearDisplayedColumns","EVENT_GRID_COLUMNS_CHANGED","noColsFound","oldColsOrdered","newColsOrdered","newGridColumns","newCol","parent","getOriginalParent","siblings","leafCols","leafCol","presentInNewGriColumns","noYetInSiblings","lastIndex","insertIntoArray","isPrimaryColumnGroupsPresent","locked","unlocked","createGroupAutoColumnsIfNeeded","autoColBalancedTree","createForAutoGroups","displayedLeftHeaderRows","displayedRightHeaderRows","displayedCentreHeaderRows","updateOpenClosedVisibilityInColumnGroups","updateDisplayedColumnsFromTrees","EVENT_DISPLAYED_COLUMNS_CHANGED","addToDisplayedColumns","setupAllDisplayedColumns","setLeftValuesOfColumns","setLeftValuesOfGroups","allColumns","doingRtl","left_1","setLeft","left_2","removeAllFromArray","checkLeft","displayedColumnTree","depthFirstDisplayedColumnTreeSearch","updateDisplayedCenterVirtualColumns","filterOutColumnsWithinViewport","getVirtualHeaderGroupRow","dept","updateDisplayedVirtualGroups","virtualColIds","testGroup","returnValue","addThisItem","getDisplayedChildren","colsToNotSpread","suppressSizeToFit","colsToSpread","colsToFireEventFor","finishedResizing","availablePixels","setMinimum","scale","pixelsForLastCol","moveToNotSpread","onLastCol","visibleColumns","leftVisibleColumns","rightVisibleColumns","centerVisibleColumns","groupInstanceIdCreator","GroupInstanceIdCreator","displayedGroupCreator","createDisplayedGroups","calculateDisplayedColumns","getGroupAutoColumns","groupFullWidthRow","isGroupUseEntireRow","groupSuppressAutoColumn","isGroupSuppressAutoColumn","groupSuppressRow","isGroupSuppressRow","groupingActive","needAutoColumns","newAutoGroupCols","autoGroupColService","createAutoGroupColumns","autoColsDifferent","autoColsEqual","colsA","colsB","bothMissing","atLeastOneListMissing","getGridBalancedTree","GridOptionsWrapper","ExpressionService","ColumnFactory","DisplayedGroupCreator","AutoWidthCalculator","EventService","ColumnUtils","Context","ColumnAnimationService","AutoGroupColService","Optional","ValueCache","GridApi","PostConstruct","Function","Qualifier","LoggerFactory","context_2","sortedVisibleColumns","balancedColumnTree","oldDisplayedGroups","previousRealPath","previousOriginalPath","oldColumnsMapped","mapOldGroupsById","currentOriginalPath","getOriginalPathForColumn","currentRealPath","firstColumn","newGroup","createColumnGroup","addChild","noColumnGroups","leafGroup","setupParentsIntoColumns","originalGroup","getInstanceIdForKey","uniqueId","createUniqueId","reset","wireBean","displayedGroups","recursive","columnsOrGroups","columnOrGroup","getUniqueId","columnsOrGroup","setParent","found","recursePath","nextNode","RegisteredComponentSource","textCellEditor_1","dateFilter_1","headerComp_1","headerGroupComp_1","groupCellRenderer_1","animateShowChangeCellRenderer_1","animateSlideCellRenderer_1","loadingCellRenderer_1","selectCellEditor_1","popupTextCellEditor_1","popupSelectCellEditor_1","largeTextCellEditor_1","numberFilter_1","loadingOverlayComponent_1","noRowsOverlayComponent_1","tooltipComponent_1","defaultDateComponent_1","dateFloatingFilter_1","textFilter_1","numberFloatingFilter_1","textFloatingFilter_1","UserComponentRegistry","agGridDefaults","agDateInput","DefaultDateComponent","agColumnHeader","HeaderComp","agColumnGroupHeader","HeaderGroupComp","agTextColumnFloatingFilter","TextFloatingFilter","agNumberColumnFloatingFilter","NumberFloatingFilter","agDateColumnFloatingFilter","DateFloatingFilter","agAnimateShowChangeCellRenderer","AnimateShowChangeCellRenderer","agAnimateSlideCellRenderer","AnimateSlideCellRenderer","agGroupCellRenderer","GroupCellRenderer","agGroupRowRenderer","agLoadingCellRenderer","LoadingCellRenderer","agCellEditor","TextCellEditor","agTextCellEditor","agSelectCellEditor","SelectCellEditor","agPopupTextCellEditor","PopupTextCellEditor","agPopupSelectCellEditor","PopupSelectCellEditor","agLargeTextCellEditor","LargeTextCellEditor","agTextColumnFilter","TextFilter","agNumberColumnFilter","NumberFilter","agDateColumnFilter","DateFilter","agLoadingOverlay","LoadingOverlayComponent","agNoRowsOverlay","NoRowsOverlayComponent","agTooltipComponent","TooltipComponent","agDeprecatedNames","newComponentName","propertyHolder","text","number","date","animateShowChange","animateSlide","select","largeText","popupSelect","popupText","richSelect","headerComponent","jsComponents","frameworkComponents","enterpriseDefaultComponents","getEnterpriseDefaultComponents","config","registerDefaultComponent","componentName","theClass","gridOptions","components","it","registerComponent","registerFwComponent","rawName","component","translateIfDeprecated","retrieve","componentFromFramework","REGISTERED","DEFAULT","raw","deprecatedInfo","doOnce","componentMetadataProvider_1","AgComponentUtils","adaptFunction","propertyName","hardcodedJsFunction","paramsFromSelector","componentMetadataProvider","functionAdapter","adaptCellRendererFunction","callback","Adapter","refresh","getGui","callbackResult","loadTemplate","doesImplementIComponent","candidate","ComponentMetadataProvider","constants_1","AutoGroupColService_1","doingTreeData","doingMultiAutoColumn","isGroupMultiAutoColumn","rowGroupCol","createOneAutoGroupColumn","defaultAutoColDef","generateDefaultColDef","Constants","GROUP_AUTO_COLUMN_ID","GROUP_AUTO_COLUMN_BUNDLE_ID","userAutoColDef","getAutoGroupColumnDef","mergeDeep","mergeColDefs","noFieldOrValueGetter","valueGetter","filterValueGetter","headerCheckboxSelection","userHasProvidedGroupCellRenderer","cellRenderer","cellRendererFramework","rowGroupColDef","assign","cellRendererParams","innerRenderer","innerRendererParams","agComponentUtils_1","postConstruct","componentMetaData","dateComponent","mandatoryMethodList","optionalMethodList","detailCellRenderer","headerGroupComponent","loadingCellRenderer","loadingOverlayComponent","noRowsOverlayComponent","floatingFilterComponent","floatingFilterWrapperComponent","agComponentUtils","cellEditor","fullWidthCellRenderer","pinnedRowCellRenderer","groupRowInnerRenderer","groupRowRenderer","filterComponent","statusPanel","toolPanel","tooltipComponent","grid_1","initialiseAgGridWithAngular1","angular","angularModule","module","directive","restrict","controller","AngularDirectiveController","scope","$element","$scope","$compile","$attrs","quickFilterOnScope","keyOfGridInScope","agGrid","$eval","eGridDiv","gridParams","grid","Grid","$on","destroy","propertyKeys_1","ComponentUtil","getEventCallbacks","EVENT_CALLBACKS","EVENT_CALLBACKS_NO_PREFIX","EVENTS","getCallbackForEvent","copyAttributesToGridOptions","skipEventDeprecationCheck","checkForDeprecated","pGridOptions","toBoolean","toNumber","funcName","onMethodName","checkEventDeprecation","toUpperCase","substr","processOnChange","changes","currentValue","enableCellTextSelection","setEnableCellTextSelection","showToolPanel","quickFilterText","setQuickFilter","rowData","setRowData","pinnedTopRowData","setPinnedTopRowData","pinnedBottomRowData","setPinnedBottomRowData","datasource","setDatasource","headerHeight","setHeaderHeight","paginationPageSize","paginationSetPageSize","groupRemoveSingleChildren","setGroupRemoveSingleChildren","suppressRowDrag","setSuppressRowDrag","gridAutoHeight","setGridAutoHeight","suppressClipboardPaste","setSuppressClipboardPaste","sideBar","setSideBar","EVENT_COMPONENT_STATE_CHANGED","iterateObject","Number","PropertyKeys","rowDeselected","onRowDeselected","calculateColInitialWidth","getColWidth","originalBalancedTree","tree","STEP_EVERYTHING","STEP_FILTER","STEP_SORT","STEP_MAP","STEP_AGGREGATE","STEP_PIVOT","ROW_BUFFER_SIZE","LAYOUT_INTERVAL","BATCH_WAIT_MILLIS","EXPORT_TYPE_DRAG_COPY","EXPORT_TYPE_CLIPBOARD","EXPORT_TYPE_EXCEL","EXPORT_TYPE_CSV","KEY_BACKSPACE","KEY_TAB","KEY_NEW_LINE","KEY_ENTER","KEY_SHIFT","KEY_ESCAPE","KEY_SPACE","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","KEY_DELETE","KEY_A","KEY_C","KEY_V","KEY_D","KEY_F2","KEY_PAGE_UP","KEY_PAGE_DOWN","KEY_PAGE_HOME","KEY_PAGE_END","ROW_MODEL_TYPE_INFINITE","ROW_MODEL_TYPE_VIEWPORT","ROW_MODEL_TYPE_CLIENT_SIDE","ROW_MODEL_TYPE_SERVER_SIDE","DEPRECATED_ROW_MODEL_TYPE_NORMAL","ALWAYS","ONLY_WHEN_GROUPING","PINNED_TOP","PINNED_BOTTOM","DOM_LAYOUT_NORMAL","DOM_LAYOUT_PRINT","DOM_LAYOUT_AUTO_HEIGHT","columnKeyCreator_1","defaultColumnTypes_1","defs","existingColumns","columnKeyCreator","existingColsCopy","unbalancedTree","recursivelyCreateColumns","findMaxDept","balanceColumnTree","deptFirstCallback","setupExpandable","setOriginalParent","autoGroupCols","fakeTreeItem","createAutoGroupTreeItem","findDepth","nextChild","autoGroup","setChildren","pointer","currentDept","columnDept","newChildren","firstPaddedGroup","currentPaddedGroup","newColId","colGroupDefMerged","createMergedColGroupDef","paddedGroup","hasGroups","some","treeChildren","maxDeptThisLevel","abstractColumn","newDept","level","def","newGroupOrColumn","isColumnGroup","createColumn","getDefaultColGroupDef","checkForDeprecatedItems","colDefMerged","findExistingColumn","setColDef","oldColDef","getUserProvidedColDef","oldColHadId","getDefaultColDef","assignColumnTypes","typeKeys","Array","invalidArray","a","split","allColumnTypes","getColumnTypes","DefaultColumnTypes","t","typeColDef","trim","colDefNoType","headerGroup","headerGroupShow","suppressRowGroup","suppressAggregation","displayName","ComponentSource","userComponentRegistry_1","UserComponentFactory","newDateComponent","createAndInitUserComponent","newHeaderComponent","newHeaderGroupComponent","newFullWidthGroupRowInnerCellRenderer","newFullWidthCellRenderer","cellRendererType","cellRendererName","newCellRenderer","newPinnedRowCellRenderer","newCellEditor","newInnerCellRenderer","newLoadingOverlayComponent","newNoRowsOverlayComponent","newTooltipComponent","newFilterComponent","defaultFilter","modifyParamsCallback","newFloatingFilterComponent","defaultFloatingFilter","newToolPanelComponent","toolPanelDef","newStatusPanelComponent","definitionObject","paramsFromGrid","defaultComponentName","optional","componentAndParams","createComponentInstance","componentInstance","createFinalParams","addReactHacks","paramsAfterCallback","deferredInit","initComponent","Promise","resolve","asPromise","notRelevant","agGridReact","getBean","cloneObject","frameworkComponentWrapper","createUserComponentFromConcreteClass","clazz","agGridParams","internalComponent","lookupComponentClassDef","componentSelectorFunc","hardcodedNameComponent","HardcodedJsComponent","HardcodedFwComponent","componentPropertyValue","usingDefaultComponent","Error","HARDCODED","componentNameToUse","selectorResult","registeredCompClassDef","lookupFromRegisteredComponents","componentNameOpt","registeredComponent","userComponentRegistry","REGISTERED_BY_NAME","userParams","holder","paramsForSelector","componentToUse","FrameworkComponentRaw","thisComponentConfig","wrap","finalParams","BaseComponentWrapper","OriginalConstructor","wrapper","createWrapper","methodName","createMethod","mandatory","addMethod","createMethodProxy","hasMethod","callMethod","componentUtil_1","registered","initialiseAgGridWithWebComponents","document","registerElement","AgileGridProto","HTMLElement","__agGridSetProperty","get","__agGridGetProperty","enumerable","configurable","agGridProtoNoType","__attributes","changeObject","onChange","_initialised","_gridOptions","setGridOptions","options","globalEventListener","_agGrid","createdCallback","attributes","attribute","setPropertyFromAttribute","toCamelCase","nodeName","nodeValue","attachedCallback","detachedCallback","attributeChangedCallback","attributeName","eventLowerCase","toLowerCase","browserEvent","Event","browserEventNoType","agGridDetails","callbackMethod","myString","replace","g","existingIds","lastResult"],"mappings":";;;;;;GAOAA,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtD,IAAIC,EAA4B,WAC5B,SAASA,KAkJT,OAhJAA,EAAWC,kBAAoB,CAC3B,aACA,kBACA,cACA,iBACA,oBACA,YACA,UACA,QACA,OACA,QACA,OACA,mBACA,eACA,gBACA,YACA,eACA,WACA,cACA,SACA,UACA,eACA,aACA,SACA,iBAEJD,EAAWE,kBAAoB,CAC3B,uBACA,gCACA,6BACA,YACA,qBACA,sBACA,mBACA,iCACA,8BACA,kBACA,eACA,mBACA,kBACA,2BACA,wBACA,0BACA,gCACA,mCACA,mBACA,yBACA,4BACA,WAEJF,EAAWG,iBAAmB,CAC1B,WACA,eACA,kBACA,WACA,sBACA,iBACA,SAEJH,EAAWI,kBAAoB,CAC3B,WACA,QACA,WACA,WACA,gBACA,cAEJJ,EAAWK,mBAAqB,CAC5B,oBACA,oBACA,gBACA,gBACA,OACA,WACA,QACA,oBACA,0BACA,sCACA,eACA,kBACA,kBACA,iBACA,eACA,cACA,aACA,aACA,oBACA,iBACA,mBACA,iBACA,cACA,cACA,WACA,gBACA,oBACA,wBACA,UACA,YACA,aACA,WACA,YACA,mBAEJL,EAAWM,oBAAsB,CAC7B,qBACA,cACA,cACA,oBACA,aACA,eACA,wBACA,wBACA,iBACA,0BACA,cACA,aACA,SACA,kBACA,wBACA,UACA,UACA,qBACA,kBACA,qBACA,gBACA,sBACA,oBACA,UACA,qBACA,mBACA,4BACA,uBACA,sBAEJN,EAAWO,eAAiBP,EAAWG,iBAClCK,OAAOR,EAAWE,mBAClBM,OAAOR,EAAWC,mBAClBO,OAAOR,EAAWI,mBAClBI,OAAOR,EAAWM,qBAClBE,OAAOR,EAAWK,oBAGvBL,EAAWS,qBAAuB,CAAC,SAAU,eAAgB,yBAA0B,kBACnF,WAAY,8BACTT,EAnJoB,GAqJ/BF,EAAQE,WAAaA,G;;;;;;GCtJrB,IAAIU,EAAcC,MAAQA,KAAKD,YAAe,SAAUE,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUC,OAAQC,EA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","file":"js/chunk-vendors~1b6438b2.01b7c3f2.js","sourcesContent":["/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ColDefUtil = /** @class */ (function () {\n function ColDefUtil() {\n }\n ColDefUtil.STRING_PROPERTIES = [\n 'headerName',\n 'columnGroupShow',\n 'headerClass',\n 'toolPanelClass',\n 'headerValueGetter',\n 'pivotKeys',\n 'groupId',\n 'colId',\n 'sort',\n 'field',\n 'type',\n 'tooltipComponent',\n 'tooltipField',\n 'headerTooltip',\n 'cellClass',\n 'showRowGroup',\n 'template',\n 'templateUrl',\n 'filter',\n 'aggFunc',\n 'cellRenderer',\n 'cellEditor',\n 'pinned',\n 'chartDataType'\n ];\n ColDefUtil.OBJECT_PROPERTIES = [\n 'headerGroupComponent',\n 'headerGroupComponentFramework',\n 'headerGroupComponentParams',\n 'cellStyle',\n 'cellRendererParams',\n 'cellEditorFramework',\n 'cellEditorParams',\n 'pinnedRowCellRendererFramework',\n 'pinnedRowCellRendererParams',\n 'filterFramework',\n 'filterParams',\n 'pivotValueColumn',\n 'headerComponent',\n 'headerComponentFramework',\n 'headerComponentParams',\n 'floatingFilterComponent',\n 'floatingFilterComponentParams',\n 'floatingFilterComponentFramework',\n 'tooltipComponent',\n 'tooltipComponentParams',\n 'tooltipComponentFramework',\n 'refData'\n ];\n ColDefUtil.ARRAY_PROPERTIES = [\n 'children',\n 'sortingOrder',\n 'allowedAggFuncs',\n 'menuTabs',\n 'pivotTotalColumnIds',\n 'cellClassRules',\n 'icons'\n ];\n ColDefUtil.NUMBER_PROPERTIES = [\n 'sortedAt',\n 'width',\n 'minWidth',\n 'maxWidth',\n 'rowGroupIndex',\n 'pivotIndex'\n ];\n ColDefUtil.BOOLEAN_PROPERTIES = [\n 'suppressCellFlash',\n 'suppressToolPanel',\n 'openByDefault',\n 'marryChildren',\n 'hide',\n 'rowGroup',\n 'pivot',\n 'checkboxSelection',\n 'headerCheckboxSelection',\n 'headerCheckboxSelectionFilteredOnly',\n 'suppressMenu',\n 'suppressSorting',\n 'suppressMovable',\n 'suppressFilter',\n 'lockPosition',\n 'lockVisible',\n 'lockPinned',\n 'unSortIcon',\n 'suppressSizeToFit',\n 'suppressResize',\n 'suppressAutoSize',\n 'enableRowGroup',\n 'enablePivot',\n 'enableValue',\n 'editable',\n 'suppressPaste',\n 'suppressNavigable',\n 'enableCellChangeFlash',\n 'rowDrag',\n 'dndSource',\n 'autoHeight',\n 'sortable',\n 'resizable',\n 'singleClickEdit'\n ];\n ColDefUtil.FUNCTION_PROPERTIES = [\n 'dndSourceOnRowDrag',\n 'valueGetter',\n 'valueSetter',\n 'filterValueGetter',\n 'keyCreator',\n 'cellRenderer',\n 'cellRendererFramework',\n 'pinnedRowCellRenderer',\n 'valueFormatter',\n 'pinnedRowValueFormatter',\n 'valueParser',\n 'comparator',\n 'equals',\n 'pivotComparator',\n 'suppressKeyboardEvent',\n 'colSpan',\n 'rowSpan',\n 'getQuickFilterText',\n 'newValueHandler',\n 'onCellValueChanged',\n 'onCellClicked',\n 'onCellDoubleClicked',\n 'onCellContextMenu',\n 'tooltip',\n 'tooltipValueGetter',\n 'tooltipComponent',\n 'tooltipComponentFramework',\n 'cellRendererSelector',\n 'cellEditorSelector'\n ];\n ColDefUtil.ALL_PROPERTIES = ColDefUtil.ARRAY_PROPERTIES\n .concat(ColDefUtil.OBJECT_PROPERTIES)\n .concat(ColDefUtil.STRING_PROPERTIES)\n .concat(ColDefUtil.NUMBER_PROPERTIES)\n .concat(ColDefUtil.FUNCTION_PROPERTIES)\n .concat(ColDefUtil.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 ColDefUtil.FRAMEWORK_PROPERTIES = ['__ob__', '__metadata__', 'mappedColumnProperties', 'hasChildColumns',\n 'toColDef', 'createColDefFromGridColumn'];\n return ColDefUtil;\n}());\nexports.ColDefUtil = ColDefUtil;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\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 columnController_1 = require(\"./columnController\");\nvar context_1 = require(\"../context/context\");\nvar ColumnApi = /** @class */ (function () {\n function ColumnApi() {\n }\n ColumnApi.prototype.sizeColumnsToFit = function (gridWidth) { this.columnController.sizeColumnsToFit(gridWidth, 'api'); };\n ColumnApi.prototype.setColumnGroupOpened = function (group, newValue) { this.columnController.setColumnGroupOpened(group, newValue, 'api'); };\n ColumnApi.prototype.getColumnGroup = function (name, instanceId) { return this.columnController.getColumnGroup(name, instanceId); };\n ColumnApi.prototype.getOriginalColumnGroup = function (name) { return this.columnController.getOriginalColumnGroup(name); };\n ColumnApi.prototype.getDisplayNameForColumn = function (column, location) { return this.columnController.getDisplayNameForColumn(column, location); };\n ColumnApi.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) { return this.columnController.getDisplayNameForColumnGroup(columnGroup, location); };\n ColumnApi.prototype.getColumn = function (key) { return this.columnController.getPrimaryColumn(key); };\n ColumnApi.prototype.setColumnState = function (columnState) { return this.columnController.setColumnState(columnState, false, 'api'); };\n ColumnApi.prototype.getColumnState = function () { return this.columnController.getColumnState(); };\n ColumnApi.prototype.resetColumnState = function () { this.columnController.resetColumnState(false, 'api'); };\n ColumnApi.prototype.getColumnGroupState = function () { return this.columnController.getColumnGroupState(); };\n ColumnApi.prototype.setColumnGroupState = function (stateItems) { this.columnController.setColumnGroupState(stateItems, 'api'); };\n ColumnApi.prototype.resetColumnGroupState = function () { this.columnController.resetColumnGroupState('api'); };\n ColumnApi.prototype.isPinning = function () { return this.columnController.isPinningLeft() || this.columnController.isPinningRight(); };\n ColumnApi.prototype.isPinningLeft = function () { return this.columnController.isPinningLeft(); };\n ColumnApi.prototype.isPinningRight = function () { return this.columnController.isPinningRight(); };\n ColumnApi.prototype.getDisplayedColAfter = function (col) { return this.columnController.getDisplayedColAfter(col); };\n ColumnApi.prototype.getDisplayedColBefore = function (col) { return this.columnController.getDisplayedColBefore(col); };\n ColumnApi.prototype.setColumnVisible = function (key, visible) { this.columnController.setColumnVisible(key, visible, 'api'); };\n ColumnApi.prototype.setColumnsVisible = function (keys, visible) { this.columnController.setColumnsVisible(keys, visible, 'api'); };\n ColumnApi.prototype.setColumnPinned = function (key, pinned) { this.columnController.setColumnPinned(key, pinned, 'api'); };\n ColumnApi.prototype.setColumnsPinned = function (keys, pinned) { this.columnController.setColumnsPinned(keys, pinned, 'api'); };\n ColumnApi.prototype.getAllColumns = function () { return this.columnController.getAllPrimaryColumns(); };\n ColumnApi.prototype.getAllGridColumns = function () { return this.columnController.getAllGridColumns(); };\n ColumnApi.prototype.getDisplayedLeftColumns = function () { return this.columnController.getDisplayedLeftColumns(); };\n ColumnApi.prototype.getDisplayedCenterColumns = function () { return this.columnController.getDisplayedCenterColumns(); };\n ColumnApi.prototype.getDisplayedRightColumns = function () { return this.columnController.getDisplayedRightColumns(); };\n ColumnApi.prototype.getAllDisplayedColumns = function () { return this.columnController.getAllDisplayedColumns(); };\n ColumnApi.prototype.getAllDisplayedVirtualColumns = function () { return this.columnController.getAllDisplayedVirtualColumns(); };\n ColumnApi.prototype.moveColumn = function (key, toIndex) {\n if (typeof key === 'number') {\n // moveColumn used to take indexes, so this is advising user who hasn't moved to new method name\n console.warn('ag-Grid: you are using moveColumn(fromIndex, toIndex) - moveColumn takes a column key and a destination index, not two indexes, to move with indexes use moveColumnByIndex(from,to) instead');\n this.columnController.moveColumnByIndex(key, toIndex, 'api');\n }\n else {\n this.columnController.moveColumn(key, toIndex, 'api');\n }\n };\n ColumnApi.prototype.moveColumnByIndex = function (fromIndex, toIndex) { this.columnController.moveColumnByIndex(fromIndex, toIndex, 'api'); };\n ColumnApi.prototype.moveColumns = function (columnsToMoveKeys, toIndex) { this.columnController.moveColumns(columnsToMoveKeys, toIndex, 'api'); };\n ColumnApi.prototype.moveRowGroupColumn = function (fromIndex, toIndex) { this.columnController.moveRowGroupColumn(fromIndex, toIndex); };\n ColumnApi.prototype.setColumnAggFunc = function (column, aggFunc) { this.columnController.setColumnAggFunc(column, aggFunc); };\n ColumnApi.prototype.setColumnWidth = function (key, newWidth, finished) {\n if (finished === void 0) { finished = true; }\n this.columnController.setColumnWidth(key, newWidth, false, finished);\n };\n ColumnApi.prototype.setPivotMode = function (pivotMode) { this.columnController.setPivotMode(pivotMode); };\n ColumnApi.prototype.isPivotMode = function () { return this.columnController.isPivotMode(); };\n ColumnApi.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) { return this.columnController.getSecondaryPivotColumn(pivotKeys, valueColKey); };\n ColumnApi.prototype.setValueColumns = function (colKeys) { this.columnController.setValueColumns(colKeys, 'api'); };\n ColumnApi.prototype.getValueColumns = function () { return this.columnController.getValueColumns(); };\n ColumnApi.prototype.removeValueColumn = function (colKey) { this.columnController.removeValueColumn(colKey, 'api'); };\n ColumnApi.prototype.removeValueColumns = function (colKeys) { this.columnController.removeValueColumns(colKeys, 'api'); };\n ColumnApi.prototype.addValueColumn = function (colKey) { this.columnController.addValueColumn(colKey, 'api'); };\n ColumnApi.prototype.addValueColumns = function (colKeys) { this.columnController.addValueColumns(colKeys, 'api'); };\n ColumnApi.prototype.setRowGroupColumns = function (colKeys) { this.columnController.setRowGroupColumns(colKeys, 'api'); };\n ColumnApi.prototype.removeRowGroupColumn = function (colKey) { this.columnController.removeRowGroupColumn(colKey, 'api'); };\n ColumnApi.prototype.removeRowGroupColumns = function (colKeys) { this.columnController.removeRowGroupColumns(colKeys, 'api'); };\n ColumnApi.prototype.addRowGroupColumn = function (colKey) { this.columnController.addRowGroupColumn(colKey, 'api'); };\n ColumnApi.prototype.addRowGroupColumns = function (colKeys) { this.columnController.addRowGroupColumns(colKeys, 'api'); };\n ColumnApi.prototype.getRowGroupColumns = function () { return this.columnController.getRowGroupColumns(); };\n ColumnApi.prototype.setPivotColumns = function (colKeys) { this.columnController.setPivotColumns(colKeys, 'api'); };\n ColumnApi.prototype.removePivotColumn = function (colKey) { this.columnController.removePivotColumn(colKey, 'api'); };\n ColumnApi.prototype.removePivotColumns = function (colKeys) { this.columnController.removePivotColumns(colKeys, 'api'); };\n ColumnApi.prototype.addPivotColumn = function (colKey) { this.columnController.addPivotColumn(colKey, 'api'); };\n ColumnApi.prototype.addPivotColumns = function (colKeys) { this.columnController.addPivotColumns(colKeys, 'api'); };\n ColumnApi.prototype.getPivotColumns = function () { return this.columnController.getPivotColumns(); };\n ColumnApi.prototype.getLeftDisplayedColumnGroups = function () { return this.columnController.getLeftDisplayedColumnGroups(); };\n ColumnApi.prototype.getCenterDisplayedColumnGroups = function () { return this.columnController.getCenterDisplayedColumnGroups(); };\n ColumnApi.prototype.getRightDisplayedColumnGroups = function () { return this.columnController.getRightDisplayedColumnGroups(); };\n ColumnApi.prototype.getAllDisplayedColumnGroups = function () { return this.columnController.getAllDisplayedColumnGroups(); };\n ColumnApi.prototype.autoSizeColumn = function (key) { return this.columnController.autoSizeColumn(key, 'api'); };\n ColumnApi.prototype.autoSizeColumns = function (keys) { return this.columnController.autoSizeColumns(keys, 'api'); };\n ColumnApi.prototype.autoSizeAllColumns = function () { this.columnController.autoSizeAllColumns('api'); };\n ColumnApi.prototype.setSecondaryColumns = function (colDefs) { this.columnController.setSecondaryColumns(colDefs, 'api'); };\n ColumnApi.prototype.getSecondaryColumns = function () { return this.columnController.getSecondaryColumns(); };\n ColumnApi.prototype.getPrimaryColumns = function () { return this.columnController.getAllPrimaryColumns(); };\n // below goes through deprecated items, prints message to user, then calls the new version of the same method\n ColumnApi.prototype.columnGroupOpened = function (group, newValue) {\n console.error('ag-Grid: columnGroupOpened no longer exists, use setColumnGroupOpened');\n this.setColumnGroupOpened(group, newValue);\n };\n ColumnApi.prototype.hideColumns = function (colIds, hide) {\n console.error('ag-Grid: hideColumns is deprecated, use setColumnsVisible');\n this.columnController.setColumnsVisible(colIds, !hide, 'api');\n };\n ColumnApi.prototype.hideColumn = function (colId, hide) {\n console.error('ag-Grid: hideColumn is deprecated, use setColumnVisible');\n this.columnController.setColumnVisible(colId, !hide, 'api');\n };\n ColumnApi.prototype.setState = function (columnState) {\n console.error('ag-Grid: setState is deprecated, use setColumnState');\n return this.setColumnState(columnState);\n };\n ColumnApi.prototype.getState = function () {\n console.error('ag-Grid: getState is deprecated, use getColumnState');\n return this.getColumnState();\n };\n ColumnApi.prototype.resetState = function () {\n console.error('ag-Grid: resetState is deprecated, use resetColumnState');\n this.resetColumnState();\n };\n ColumnApi.prototype.getAggregationColumns = function () {\n console.error('ag-Grid: getAggregationColumns is deprecated, use getValueColumns');\n return this.columnController.getValueColumns();\n };\n ColumnApi.prototype.removeAggregationColumn = function (colKey) {\n console.error('ag-Grid: removeAggregationColumn is deprecated, use removeValueColumn');\n this.columnController.removeValueColumn(colKey, 'api');\n };\n ColumnApi.prototype.removeAggregationColumns = function (colKeys) {\n console.error('ag-Grid: removeAggregationColumns is deprecated, use removeValueColumns');\n this.columnController.removeValueColumns(colKeys, 'api');\n };\n ColumnApi.prototype.addAggregationColumn = function (colKey) {\n console.error('ag-Grid: addAggregationColumn is deprecated, use addValueColumn');\n this.columnController.addValueColumn(colKey, 'api');\n };\n ColumnApi.prototype.addAggregationColumns = function (colKeys) {\n console.error('ag-Grid: addAggregationColumns is deprecated, use addValueColumns');\n this.columnController.addValueColumns(colKeys, 'api');\n };\n ColumnApi.prototype.setColumnAggFunction = function (column, aggFunc) {\n console.error('ag-Grid: setColumnAggFunction is deprecated, use setColumnAggFunc');\n this.columnController.setColumnAggFunc(column, aggFunc, 'api');\n };\n ColumnApi.prototype.getDisplayNameForCol = function (column) {\n console.error('ag-Grid: getDisplayNameForCol is deprecated, use getDisplayNameForColumn');\n return this.getDisplayNameForColumn(column, null);\n };\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], ColumnApi.prototype, \"columnController\", void 0);\n ColumnApi = __decorate([\n context_1.Bean('columnApi')\n ], ColumnApi);\n return ColumnApi;\n}());\nexports.ColumnApi = ColumnApi;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// class returns a unique id to use for the column. it checks the existing columns, and if the requested\n// id is already taken, it will start appending numbers until it gets a unique id.\n// eg, if the col field is 'name', it will try ids: {name, name_1, name_2...}\n// if no field or id provided in the col, it will try the ids of natural numbers\nvar utils_1 = require(\"../utils\");\nvar ColumnKeyCreator = /** @class */ (function () {\n function ColumnKeyCreator() {\n this.existingKeys = [];\n }\n ColumnKeyCreator.prototype.addExistingKeys = function (keys) {\n this.existingKeys = this.existingKeys.concat(keys);\n };\n ColumnKeyCreator.prototype.getUniqueKey = function (colId, colField) {\n // in case user passed in number for colId, convert to string\n colId = utils_1._.toStringOrNull(colId);\n var count = 0;\n while (true) {\n var idToTry = void 0;\n if (colId) {\n idToTry = colId;\n if (count !== 0) {\n idToTry += '_' + count;\n }\n }\n else if (colField) {\n idToTry = colField;\n if (count !== 0) {\n idToTry += '_' + count;\n }\n }\n else {\n idToTry = '' + count;\n }\n if (this.existingKeys.indexOf(idToTry) < 0) {\n this.existingKeys.push(idToTry);\n return idToTry;\n }\n count++;\n }\n };\n return ColumnKeyCreator;\n}());\nexports.ColumnKeyCreator = ColumnKeyCreator;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\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 columnGroup_1 = require(\"../entities/columnGroup\");\nvar column_1 = require(\"../entities/column\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar columnFactory_1 = require(\"./columnFactory\");\nvar displayedGroupCreator_1 = require(\"./displayedGroupCreator\");\nvar autoWidthCalculator_1 = require(\"../rendering/autoWidthCalculator\");\nvar eventService_1 = require(\"../eventService\");\nvar columnUtils_1 = require(\"./columnUtils\");\nvar logger_1 = require(\"../logger\");\nvar events_1 = require(\"../events\");\nvar originalColumnGroup_1 = require(\"../entities/originalColumnGroup\");\nvar groupInstanceIdCreator_1 = require(\"./groupInstanceIdCreator\");\nvar context_1 = require(\"../context/context\");\nvar columnAnimationService_1 = require(\"../rendering/columnAnimationService\");\nvar autoGroupColService_1 = require(\"./autoGroupColService\");\nvar valueCache_1 = require(\"../valueService/valueCache\");\nvar gridApi_1 = require(\"../gridApi\");\nvar columnApi_1 = require(\"./columnApi\");\nvar utils_1 = require(\"../utils\");\nvar ColumnController = /** @class */ (function () {\n function ColumnController() {\n // header row count, based on user provided columns\n this.primaryHeaderRowCount = 0;\n this.secondaryHeaderRowCount = 0;\n this.secondaryColumnsPresent = false;\n // header row count, either above, or based on pivoting if we are pivoting\n this.gridHeaderRowCount = 0;\n // these are the lists used by the rowRenderer to render nodes. almost the leaf nodes of the above\n // displayed trees, however it also takes into account if the groups are open or not.\n this.displayedLeftColumns = [];\n this.displayedRightColumns = [];\n this.displayedCenterColumns = [];\n // all three lists above combined\n this.allDisplayedColumns = [];\n // same as above, except trimmed down to only columns within the viewport\n this.allDisplayedVirtualColumns = [];\n this.allDisplayedCenterVirtualColumns = [];\n this.rowGroupColumns = [];\n this.valueColumns = [];\n this.pivotColumns = [];\n this.ready = false;\n this.autoGroupsNeedBuilding = false;\n this.pivotMode = false;\n this.bodyWidth = 0;\n this.leftWidth = 0;\n this.rightWidth = 0;\n this.bodyWidthDirty = true;\n }\n ColumnController.prototype.init = function () {\n var pivotMode = this.gridOptionsWrapper.isPivotMode();\n this.suppressColumnVirtualisation = this.gridOptionsWrapper.isSuppressColumnVirtualisation();\n if (this.isPivotSettingAllowed(pivotMode)) {\n this.pivotMode = pivotMode;\n }\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n };\n ColumnController.prototype.setColumnDefs = function (columnDefs, source) {\n if (source === void 0) { source = \"api\"; }\n var colsPreviouslyExisted = !!this.columnDefs;\n this.columnDefs = columnDefs;\n // always invalidate cache on changing columns, as the column id's for the new columns\n // could overlap with the old id's, so the cache would return old values for new columns.\n this.valueCache.expire();\n // NOTE ==================\n // we should be destroying the existing columns and groups if they exist, for example, the original column\n // group adds a listener to the columns, it should be also removing the listeners\n this.autoGroupsNeedBuilding = true;\n var oldPrimaryColumns = this.primaryColumns;\n var balancedTreeResult = this.columnFactory.createColumnTree(columnDefs, true, oldPrimaryColumns);\n this.primaryColumnTree = balancedTreeResult.columnTree;\n this.primaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n this.primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n this.extractRowGroupColumns(source, oldPrimaryColumns);\n this.extractPivotColumns(source, oldPrimaryColumns);\n this.createValueColumns(source, oldPrimaryColumns);\n this.ready = true;\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n this.checkDisplayedVirtualColumns();\n if (this.gridOptionsWrapper.isDeltaColumnMode() && colsPreviouslyExisted) {\n this.resetColumnState(true, source);\n }\n var eventEverythingChanged = {\n type: events_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(eventEverythingChanged);\n var newColumnsLoadedEvent = {\n type: events_1.Events.EVENT_NEW_COLUMNS_LOADED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(newColumnsLoadedEvent);\n };\n ColumnController.prototype.isAutoRowHeightActive = function () {\n return this.autoRowHeightColumns && this.autoRowHeightColumns.length > 0;\n };\n ColumnController.prototype.getAllAutoRowHeightCols = function () {\n return this.autoRowHeightColumns;\n };\n ColumnController.prototype.setVirtualViewportLeftAndRight = function () {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.viewportLeft = this.bodyWidth - this.scrollPosition - this.scrollWidth;\n this.viewportRight = this.bodyWidth - this.scrollPosition;\n }\n else {\n this.viewportLeft = this.scrollPosition;\n this.viewportRight = this.scrollWidth + this.scrollPosition;\n }\n };\n // used by clipboard service, to know what columns to paste into\n ColumnController.prototype.getDisplayedColumnsStartingAt = function (column) {\n var currentColumn = column;\n var result = [];\n while (currentColumn && utils_1._.exists(currentColumn)) {\n result.push(currentColumn);\n currentColumn = this.getDisplayedColAfter(currentColumn);\n }\n return result;\n };\n // checks what columns are currently displayed due to column virtualisation. fires an event\n // if the list of columns has changed.\n // + setColumnWidth(), setVirtualViewportPosition(), setColumnDefs(), sizeColumnsToFit()\n ColumnController.prototype.checkDisplayedVirtualColumns = function () {\n // check displayCenterColumnTree exists first, as it won't exist when grid is initialising\n if (utils_1._.exists(this.displayedCenterColumns)) {\n var hashBefore = this.allDisplayedVirtualColumns.map(function (column) { return column.getId(); }).join('#');\n this.updateVirtualSets();\n var hashAfter = this.allDisplayedVirtualColumns.map(function (column) { return column.getId(); }).join('#');\n if (hashBefore !== hashAfter) {\n var event_1 = {\n type: events_1.Events.EVENT_VIRTUAL_COLUMNS_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n }\n };\n ColumnController.prototype.setVirtualViewportPosition = function (scrollWidth, scrollPosition) {\n if (scrollWidth !== this.scrollWidth || scrollPosition !== this.scrollPosition || this.bodyWidthDirty) {\n this.scrollWidth = scrollWidth;\n this.scrollPosition = scrollPosition;\n // we need to call setVirtualViewportLeftAndRight() at least once after the body width changes,\n // as the viewport can stay the same, but in RTL, if body width changes, we need to work out the\n // virtual columns again\n this.bodyWidthDirty = true;\n this.setVirtualViewportLeftAndRight();\n if (this.ready) {\n this.checkDisplayedVirtualColumns();\n }\n }\n };\n ColumnController.prototype.isPivotMode = function () {\n return this.pivotMode;\n };\n ColumnController.prototype.isPivotSettingAllowed = function (pivot) {\n if (pivot) {\n if (this.gridOptionsWrapper.isTreeData()) {\n console.warn(\"ag-Grid: Pivot mode not available in conjunction Tree Data i.e. 'gridOptions.treeData: true'\");\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n };\n ColumnController.prototype.setPivotMode = function (pivotMode, source) {\n if (source === void 0) { source = \"api\"; }\n if (pivotMode === this.pivotMode) {\n return;\n }\n if (!this.isPivotSettingAllowed(this.pivotMode)) {\n return;\n }\n this.pivotMode = pivotMode;\n // we need to update grid columns to cover the scenario where user has groupSuppressAutoColumn=true, as\n // this means we don't use auto group column UNLESS we are in pivot mode (it's mandatory in pivot mode),\n // so need to updateGridColumn() to check it autoGroupCol needs to be added / removed\n this.autoGroupsNeedBuilding = true;\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n var event = {\n type: events_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) {\n if (!this.secondaryColumnsPresent) {\n return null;\n }\n var valueColumnToFind = this.getPrimaryColumn(valueColKey);\n var foundColumn = null;\n if (this.secondaryColumns) {\n this.secondaryColumns.forEach(function (column) {\n var thisPivotKeys = column.getColDef().pivotKeys;\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n var pivotKeyMatches = utils_1._.compareArrays(thisPivotKeys, pivotKeys);\n var pivotValueMatches = pivotValueColumn === valueColumnToFind;\n if (pivotKeyMatches && pivotValueMatches) {\n foundColumn = column;\n }\n });\n }\n return foundColumn;\n };\n ColumnController.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ColumnController');\n };\n ColumnController.prototype.setFirstRightAndLastLeftPinned = function (source) {\n var lastLeft;\n var firstRight;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n lastLeft = this.displayedLeftColumns ? this.displayedLeftColumns[0] : null;\n firstRight = this.displayedRightColumns ? utils_1._.last(this.displayedRightColumns) : null;\n }\n else {\n lastLeft = this.displayedLeftColumns ? utils_1._.last(this.displayedLeftColumns) : null;\n firstRight = this.displayedRightColumns ? this.displayedRightColumns[0] : null;\n }\n this.gridColumns.forEach(function (column) {\n column.setLastLeftPinned(column === lastLeft, source);\n column.setFirstRightPinned(column === firstRight, source);\n });\n };\n ColumnController.prototype.autoSizeColumns = function (keys, source) {\n // because of column virtualisation, we can only do this function on columns that are\n // actually rendered, as non-rendered columns (outside the viewport and not rendered\n // due to column virtualisation) are not present. this can result in all rendered columns\n // getting narrowed, which in turn introduces more rendered columns on the RHS which\n // did not get autosized in the original run, leaving the visible grid with columns on\n // the LHS sized, but RHS no. so we keep looping through teh visible columns until\n // no more cols are available (rendered) to be resized\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n // keep track of which cols we have resized in here\n var columnsAutosized = [];\n // initialise with anything except 0 so that while loop executes at least once\n var changesThisTimeAround = -1;\n while (changesThisTimeAround !== 0) {\n changesThisTimeAround = 0;\n this.actionOnGridColumns(keys, function (column) {\n // if already autosized, skip it\n if (columnsAutosized.indexOf(column) >= 0) {\n return false;\n }\n // get how wide this col should be\n var preferredWidth = _this.autoWidthCalculator.getPreferredWidthForColumn(column);\n // preferredWidth = -1 if this col is not on the screen\n if (preferredWidth > 0) {\n var newWidth = _this.normaliseColumnWidth(column, preferredWidth);\n column.setActualWidth(newWidth, source);\n columnsAutosized.push(column);\n changesThisTimeAround++;\n }\n return true;\n }, source);\n }\n if (columnsAutosized.length > 0) {\n var event_2 = {\n type: events_1.Events.EVENT_COLUMN_RESIZED,\n columns: columnsAutosized,\n column: columnsAutosized.length === 1 ? columnsAutosized[0] : null,\n finished: true,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: \"autosizeColumns\"\n };\n this.eventService.dispatchEvent(event_2);\n }\n };\n ColumnController.prototype.autoSizeColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.autoSizeColumns([key], source);\n }\n };\n ColumnController.prototype.autoSizeAllColumns = function (source) {\n if (source === void 0) { source = \"api\"; }\n var allDisplayedColumns = this.getAllDisplayedColumns();\n this.autoSizeColumns(allDisplayedColumns, source);\n };\n ColumnController.prototype.getColumnsFromTree = function (rootColumns) {\n var result = [];\n recursiveFindColumns(rootColumns);\n return result;\n function recursiveFindColumns(childColumns) {\n for (var i = 0; i < childColumns.length; i++) {\n var child = childColumns[i];\n if (child instanceof column_1.Column) {\n result.push(child);\n }\n else if (child instanceof originalColumnGroup_1.OriginalColumnGroup) {\n recursiveFindColumns(child.getChildren());\n }\n }\n }\n };\n ColumnController.prototype.getAllDisplayedColumnGroups = function () {\n if (this.displayedLeftColumnTree && this.displayedRightColumnTree && this.displayedCentreColumnTree) {\n return this.displayedLeftColumnTree\n .concat(this.displayedCentreColumnTree)\n .concat(this.displayedRightColumnTree);\n }\n else {\n return null;\n }\n };\n // + columnSelectPanel\n ColumnController.prototype.getPrimaryColumnTree = function () {\n return this.primaryColumnTree;\n };\n // + gridPanel -> for resizing the body and setting top margin\n ColumnController.prototype.getHeaderRowCount = function () {\n return this.gridHeaderRowCount;\n };\n // + headerRenderer -> setting pinned body width\n ColumnController.prototype.getLeftDisplayedColumnGroups = function () {\n return this.displayedLeftColumnTree;\n };\n // + headerRenderer -> setting pinned body width\n ColumnController.prototype.getRightDisplayedColumnGroups = function () {\n return this.displayedRightColumnTree;\n };\n // + headerRenderer -> setting pinned body width\n ColumnController.prototype.getCenterDisplayedColumnGroups = function () {\n return this.displayedCentreColumnTree;\n };\n ColumnController.prototype.getDisplayedColumnGroups = function (type) {\n switch (type) {\n case column_1.Column.PINNED_LEFT:\n return this.getLeftDisplayedColumnGroups();\n case column_1.Column.PINNED_RIGHT:\n return this.getRightDisplayedColumnGroups();\n default:\n return this.getCenterDisplayedColumnGroups();\n }\n };\n // gridPanel -> ensureColumnVisible\n ColumnController.prototype.isColumnDisplayed = function (column) {\n return this.getAllDisplayedColumns().indexOf(column) >= 0;\n };\n // + csvCreator\n ColumnController.prototype.getAllDisplayedColumns = function () {\n return this.allDisplayedColumns;\n };\n ColumnController.prototype.getAllDisplayedVirtualColumns = function () {\n return this.allDisplayedVirtualColumns;\n };\n ColumnController.prototype.getDisplayedLeftColumnsForRow = function (rowNode) {\n if (!this.colSpanActive) {\n return this.displayedLeftColumns;\n }\n else {\n return this.getDisplayedColumnsForRow(rowNode, this.displayedLeftColumns);\n }\n };\n ColumnController.prototype.getDisplayedRightColumnsForRow = function (rowNode) {\n if (!this.colSpanActive) {\n return this.displayedRightColumns;\n }\n else {\n return this.getDisplayedColumnsForRow(rowNode, this.displayedRightColumns);\n }\n };\n ColumnController.prototype.getDisplayedColumnsForRow = function (rowNode, displayedColumns, filterCallback, emptySpaceBeforeColumn) {\n var result = [];\n var lastConsideredCol = null;\n var _loop_1 = function (i) {\n var col = displayedColumns[i];\n var maxAllowedColSpan = displayedColumns.length - i;\n var colSpan = Math.min(col.getColSpan(rowNode), maxAllowedColSpan);\n var columnsToCheckFilter = [col];\n if (colSpan > 1) {\n var colsToRemove = colSpan - 1;\n for (var j = 1; j <= colsToRemove; j++) {\n columnsToCheckFilter.push(displayedColumns[i + j]);\n }\n i += colsToRemove;\n }\n // see which cols we should take out for column virtualisation\n var filterPasses;\n if (filterCallback) {\n // if user provided a callback, means some columns may not be in the viewport.\n // the user will NOT provide a callback if we are talking about pinned areas,\n // as pinned areas have no horizontal scroll and do not virtualise the columns.\n // if lots of columns, that means column spanning, and we set filterPasses = true\n // if one or more of the columns spanned pass the filter.\n filterPasses = false;\n columnsToCheckFilter.forEach(function (colForFilter) {\n if (filterCallback(colForFilter)) {\n filterPasses = true;\n }\n });\n }\n else {\n filterPasses = true;\n }\n if (filterPasses) {\n if (result.length === 0 && lastConsideredCol) {\n var gapBeforeColumn = emptySpaceBeforeColumn ? emptySpaceBeforeColumn(col) : false;\n if (gapBeforeColumn) {\n result.push(lastConsideredCol);\n }\n }\n result.push(col);\n }\n lastConsideredCol = col;\n out_i_1 = i;\n };\n var out_i_1;\n for (var i = 0; i < displayedColumns.length; i++) {\n _loop_1(i);\n i = out_i_1;\n }\n return result;\n };\n // + rowRenderer\n // if we are not column spanning, this just returns back the virtual centre columns,\n // however if we are column spanning, then different rows can have different virtual\n // columns, so we have to work out the list for each individual row.\n ColumnController.prototype.getAllDisplayedCenterVirtualColumnsForRow = function (rowNode) {\n var _this = this;\n if (!this.colSpanActive) {\n return this.allDisplayedCenterVirtualColumns;\n }\n var emptySpaceBeforeColumn = function (col) { return col.getLeft() > _this.viewportLeft; };\n // if doing column virtualisation, then we filter based on the viewport.\n var filterCallback = this.suppressColumnVirtualisation ? null : this.isColumnInViewport.bind(this);\n return this.getDisplayedColumnsForRow(rowNode, this.displayedCenterColumns, filterCallback, emptySpaceBeforeColumn);\n };\n ColumnController.prototype.isColumnInViewport = function (col) {\n var columnLeft = col.getLeft();\n var columnRight = col.getLeft() + col.getActualWidth();\n // adding 200 for buffer size, so some cols off viewport are rendered.\n // this helps horizontal scrolling so user rarely sees white space (unless\n // they scroll horizontally fast). however we are conservative, as the more\n // buffer the slower the vertical redraw speed\n var leftBounds = this.viewportLeft - 200;\n var rightBounds = this.viewportRight + 200;\n var columnToMuchLeft = columnLeft < leftBounds && columnRight < leftBounds;\n var columnToMuchRight = columnLeft > rightBounds && columnRight > rightBounds;\n return !columnToMuchLeft && !columnToMuchRight;\n };\n // used by:\n // + angularGrid -> setting pinned body width\n // note: this should be cached\n ColumnController.prototype.getPinnedLeftContainerWidth = function () {\n return this.getWidthOfColsInList(this.displayedLeftColumns);\n };\n // note: this should be cached\n ColumnController.prototype.getPinnedRightContainerWidth = function () {\n return this.getWidthOfColsInList(this.displayedRightColumns);\n };\n ColumnController.prototype.updatePrimaryColumnList = function (keys, masterList, actionIsAdd, columnCallback, eventType, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n if (!keys || utils_1._.missingOrEmpty(keys)) {\n return;\n }\n var atLeastOne = false;\n keys.forEach(function (key) {\n var columnToAdd = _this.getPrimaryColumn(key);\n if (!columnToAdd) {\n return;\n }\n if (actionIsAdd) {\n if (masterList.indexOf(columnToAdd) >= 0) {\n return;\n }\n masterList.push(columnToAdd);\n }\n else {\n if (masterList.indexOf(columnToAdd) < 0) {\n return;\n }\n utils_1._.removeFromArray(masterList, columnToAdd);\n }\n columnCallback(columnToAdd);\n atLeastOne = true;\n });\n if (!atLeastOne) {\n return;\n }\n if (this.autoGroupsNeedBuilding) {\n this.updateGridColumns();\n }\n this.updateDisplayedColumns(source);\n var event = {\n type: eventType,\n columns: masterList,\n column: masterList.length === 1 ? masterList[0] : null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.setRowGroupColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.setPrimaryColumnList(colKeys, this.rowGroupColumns, events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.setRowGroupActive.bind(this), source);\n };\n ColumnController.prototype.setRowGroupActive = function (active, column, source) {\n if (active === column.isRowGroupActive()) {\n return;\n }\n column.setRowGroupActive(active, source);\n if (!active && !this.gridOptionsWrapper.isSuppressMakeColumnVisibleAfterUnGroup()) {\n column.setVisible(true, source);\n }\n };\n ColumnController.prototype.addRowGroupColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.addRowGroupColumns([key], source);\n }\n };\n ColumnController.prototype.addRowGroupColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.updatePrimaryColumnList(keys, this.rowGroupColumns, true, this.setRowGroupActive.bind(this, true), events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);\n };\n ColumnController.prototype.removeRowGroupColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.updatePrimaryColumnList(keys, this.rowGroupColumns, false, this.setRowGroupActive.bind(this, false), events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);\n };\n ColumnController.prototype.removeRowGroupColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.removeRowGroupColumns([key], source);\n }\n };\n ColumnController.prototype.addPivotColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.pivotColumns, true, function (column) { return column.setPivotActive(true, source); }, events_1.Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n };\n ColumnController.prototype.setPivotColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.setPrimaryColumnList(colKeys, this.pivotColumns, events_1.Events.EVENT_COLUMN_PIVOT_CHANGED, function (added, column) {\n column.setPivotActive(added, source);\n }, source);\n };\n ColumnController.prototype.addPivotColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n this.addPivotColumns([key], source);\n };\n ColumnController.prototype.removePivotColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.pivotColumns, false, function (column) { return column.setPivotActive(false, source); }, events_1.Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n };\n ColumnController.prototype.removePivotColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n this.removePivotColumns([key], source);\n };\n ColumnController.prototype.setPrimaryColumnList = function (colKeys, masterList, eventName, columnCallback, source) {\n var _this = this;\n masterList.length = 0;\n if (utils_1._.exists(colKeys)) {\n colKeys.forEach(function (key) {\n var column = _this.getPrimaryColumn(key);\n if (column) {\n masterList.push(column);\n }\n });\n }\n this.primaryColumns.forEach(function (column) {\n var added = masterList.indexOf(column) >= 0;\n columnCallback(added, column);\n });\n if (this.autoGroupsNeedBuilding) {\n this.updateGridColumns();\n }\n this.updateDisplayedColumns(source);\n var event = {\n type: eventName,\n columns: masterList,\n column: masterList.length === 1 ? masterList[0] : null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.setValueColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.setPrimaryColumnList(colKeys, this.valueColumns, events_1.Events.EVENT_COLUMN_VALUE_CHANGED, this.setValueActive.bind(this), source);\n };\n ColumnController.prototype.setValueActive = function (active, column, source) {\n if (active === column.isValueActive()) {\n return;\n }\n column.setValueActive(active, source);\n if (active && !column.getAggFunc()) {\n var defaultAggFunc = this.aggFuncService.getDefaultAggFunc(column);\n column.setAggFunc(defaultAggFunc);\n }\n };\n ColumnController.prototype.addValueColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.valueColumns, true, this.setValueActive.bind(this, true), events_1.Events.EVENT_COLUMN_VALUE_CHANGED, source);\n };\n ColumnController.prototype.addValueColumn = function (colKey, source) {\n if (source === void 0) { source = \"api\"; }\n if (colKey) {\n this.addValueColumns([colKey], source);\n }\n };\n ColumnController.prototype.removeValueColumn = function (colKey, source) {\n if (source === void 0) { source = \"api\"; }\n this.removeValueColumns([colKey], source);\n };\n ColumnController.prototype.removeValueColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.valueColumns, false, this.setValueActive.bind(this, false), events_1.Events.EVENT_COLUMN_VALUE_CHANGED, source);\n };\n // returns the width we can set to this col, taking into consideration min and max widths\n ColumnController.prototype.normaliseColumnWidth = function (column, newWidth) {\n if (newWidth < column.getMinWidth()) {\n newWidth = column.getMinWidth();\n }\n if (column.isGreaterThanMax(newWidth)) {\n newWidth = column.getMaxWidth();\n }\n return newWidth;\n };\n ColumnController.prototype.getPrimaryOrGridColumn = function (key) {\n var column = this.getPrimaryColumn(key);\n if (column) {\n return column;\n }\n else {\n return this.getGridColumn(key);\n }\n };\n ColumnController.prototype.setColumnWidth = function (key, // @key - the column who's size we want to change\n newWidth, // @newWidth - width in pixels\n shiftKey, // @takeFromAdjacent - if user has 'shift' pressed, then pixels are taken from adjacent column\n finished, // @finished - ends up in the event, tells the user if more events are to come\n source) {\n if (source === void 0) { source = \"api\"; }\n var col = this.getPrimaryOrGridColumn(key);\n if (!col) {\n return;\n }\n var sets = [];\n sets.push({\n width: newWidth,\n ratios: [1],\n columns: [col]\n });\n // if user wants to do shift resize by default, then we invert the shift operation\n var defaultIsShift = this.gridOptionsWrapper.getColResizeDefault() === 'shift';\n if (defaultIsShift) {\n shiftKey = !shiftKey;\n }\n if (shiftKey) {\n var otherCol = this.getDisplayedColAfter(col);\n if (!otherCol) {\n return;\n }\n var widthDiff = col.getActualWidth() - newWidth;\n var otherColWidth = otherCol.getActualWidth() + widthDiff;\n sets.push({\n width: otherColWidth,\n ratios: [1],\n columns: [otherCol]\n });\n }\n this.resizeColumnSets(sets, finished, source);\n };\n ColumnController.prototype.checkMinAndMaxWidthsForSet = function (columnResizeSet) {\n var columns = columnResizeSet.columns, width = columnResizeSet.width;\n // every col has a min width, so sum them all up and see if we have enough room\n // for all the min widths\n var minWidthAccumulated = 0;\n var maxWidthAccumulated = 0;\n var maxWidthActive = true;\n columns.forEach(function (col) {\n minWidthAccumulated += col.getMinWidth();\n if (col.getMaxWidth() > 0) {\n maxWidthAccumulated += col.getMaxWidth();\n }\n else {\n // if at least one columns has no max width, it means the group of columns\n // then has no max width, as at least one column can take as much width as possible\n maxWidthActive = false;\n }\n });\n var minWidthPasses = width >= minWidthAccumulated;\n var maxWidthPasses = !maxWidthActive || (width <= maxWidthAccumulated);\n return minWidthPasses && maxWidthPasses;\n };\n // method takes sets of columns and resizes them. either all sets will be resized, or nothing\n // be resized. this is used for example when user tries to resize a group and holds shift key,\n // then both the current group (grows), and the adjacent group (shrinks), will get resized,\n // so that's two sets for this method.\n ColumnController.prototype.resizeColumnSets = function (resizeSets, finished, source) {\n var passMinMaxCheck = utils_1._.every(resizeSets, this.checkMinAndMaxWidthsForSet.bind(this));\n if (!passMinMaxCheck) {\n // even though we are not going to resize beyond min/max size, we still need to raise event when finished\n if (finished) {\n var columns = resizeSets && resizeSets.length > 0 ? resizeSets[0].columns : null;\n var event_3 = {\n type: events_1.Events.EVENT_COLUMN_RESIZED,\n columns: columns,\n column: columns && columns.length === 1 ? columns[0] : null,\n finished: finished,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_3);\n }\n return; // don't resize!\n }\n var changedCols = [];\n var allCols = [];\n resizeSets.forEach(function (set) {\n var width = set.width, columns = set.columns, ratios = set.ratios;\n // keep track of pixels used, and last column gets the remaining,\n // to cater for rounding errors, and min width adjustments\n var newWidths = {};\n var finishedCols = {};\n columns.forEach(function (col) { return allCols.push(col); });\n // the loop below goes through each col. if a col exceeds it's min/max width,\n // it then gets set to its min/max width and the column is removed marked as 'finished'\n // and the calculation is done again leaving this column out. take for example columns\n // {A, width: 50, maxWidth: 100}\n // {B, width: 50}\n // {C, width: 50}\n // and then the set is set to width 600 - on the first pass the grid tries to set each column\n // to 200. it checks A and sees 200 > 100 and so sets the width to 100. col A is then marked\n // as 'finished' and the calculation is done again with the remaining cols B and C, which end up\n // splitting the remaining 500 pixels.\n var finishedColsGrew = true;\n var loopCount = 0;\n var _loop_2 = function () {\n loopCount++;\n if (loopCount > 1000) {\n // this should never happen, but in the future, someone might introduce a bug here,\n // so we stop the browser from hanging and report bug properly\n console.error('ag-Grid: infinite loop in resizeColumnSets');\n return \"break\";\n }\n finishedColsGrew = false;\n var subsetCols = [];\n var subsetRatios = [];\n var subsetRatioTotal = 0;\n var pixelsToDistribute = width;\n columns.forEach(function (col, index) {\n var thisColFinished = finishedCols[col.getId()];\n if (thisColFinished) {\n pixelsToDistribute -= newWidths[col.getId()];\n }\n else {\n subsetCols.push(col);\n var ratioThisCol = ratios[index];\n subsetRatioTotal += ratioThisCol;\n subsetRatios.push(ratioThisCol);\n }\n });\n // because we are not using all of the ratios (cols can be missing),\n // we scale the ratio. if all columns are included, then subsetRatioTotal=1,\n // and so the ratioScale will be 1.\n var ratioScale = 1 / subsetRatioTotal;\n subsetCols.forEach(function (col, index) {\n var lastCol = index === (subsetCols.length - 1);\n var colNewWidth;\n if (lastCol) {\n colNewWidth = pixelsToDistribute;\n }\n else {\n colNewWidth = Math.round(ratios[index] * width * ratioScale);\n pixelsToDistribute -= colNewWidth;\n }\n if (colNewWidth < col.getMinWidth()) {\n colNewWidth = col.getMinWidth();\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n }\n else if (col.getMaxWidth() > 0 && colNewWidth > col.getMaxWidth()) {\n colNewWidth = col.getMaxWidth();\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n }\n newWidths[col.getId()] = colNewWidth;\n });\n };\n while (finishedColsGrew) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n columns.forEach(function (col) {\n var newWidth = newWidths[col.getId()];\n if (col.getActualWidth() !== newWidth) {\n col.setActualWidth(newWidth);\n changedCols.push(col);\n }\n });\n });\n // if no cols changed, then no need to update more or send event.\n var atLeastOneColChanged = changedCols.length > 0;\n if (atLeastOneColChanged) {\n this.setLeftValues(source);\n this.updateBodyWidths();\n this.checkDisplayedVirtualColumns();\n }\n // check for change first, to avoid unnecessary firing of events\n // however we always fire 'finished' events. this is important\n // when groups are resized, as if the group is changing slowly,\n // eg 1 pixel at a time, then each change will fire change events\n // in all the columns in the group, but only one with get the pixel.\n if (atLeastOneColChanged || finished) {\n var event_4 = {\n type: events_1.Events.EVENT_COLUMN_RESIZED,\n columns: allCols,\n column: allCols.length === 1 ? allCols[0] : null,\n finished: finished,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_4);\n }\n };\n ColumnController.prototype.setColumnAggFunc = function (column, aggFunc, source) {\n if (source === void 0) { source = \"api\"; }\n if (column) {\n column.setAggFunc(aggFunc);\n var event_5 = {\n type: events_1.Events.EVENT_COLUMN_VALUE_CHANGED,\n columns: [column],\n column: column,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_5);\n }\n };\n ColumnController.prototype.moveRowGroupColumn = function (fromIndex, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n var column = this.rowGroupColumns[fromIndex];\n this.rowGroupColumns.splice(fromIndex, 1);\n this.rowGroupColumns.splice(toIndex, 0, column);\n var event = {\n type: events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED,\n columns: this.rowGroupColumns,\n column: this.rowGroupColumns.length === 1 ? this.rowGroupColumns[0] : null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.moveColumns = function (columnsToMoveKeys, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n if (toIndex > this.gridColumns.length - columnsToMoveKeys.length) {\n console.warn('ag-Grid: tried to insert columns in invalid location, toIndex = ' + toIndex);\n console.warn('ag-Grid: remember that you should not count the moving columns when calculating the new index');\n return;\n }\n // we want to pull all the columns out first and put them into an ordered list\n var columnsToMove = this.getGridColumns(columnsToMoveKeys);\n var failedRules = !this.doesMovePassRules(columnsToMove, toIndex);\n if (failedRules) {\n return;\n }\n utils_1._.moveInArray(this.gridColumns, columnsToMove, toIndex);\n this.updateDisplayedColumns(source);\n var event = {\n type: events_1.Events.EVENT_COLUMN_MOVED,\n columns: columnsToMove,\n column: columnsToMove.length === 1 ? columnsToMove[0] : null,\n toIndex: toIndex,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n this.columnAnimationService.finish();\n };\n ColumnController.prototype.doesMovePassRules = function (columnsToMove, toIndex) {\n // make a copy of what the grid columns would look like after the move\n var proposedColumnOrder = this.gridColumns.slice();\n utils_1._.moveInArray(proposedColumnOrder, columnsToMove, toIndex);\n // then check that the new proposed order of the columns passes all rules\n if (!this.doesMovePassMarryChildren(proposedColumnOrder)) {\n return false;\n }\n if (!this.doesMovePassLockedPositions(proposedColumnOrder)) {\n return false;\n }\n return true;\n };\n ColumnController.prototype.doesMovePassLockedPositions = function (proposedColumnOrder) {\n var foundNonLocked = false;\n var rulePassed = true;\n // go though the cols, see if any non-locked appear before any locked\n proposedColumnOrder.forEach(function (col) {\n if (col.getColDef().lockPosition) {\n if (foundNonLocked) {\n rulePassed = false;\n }\n }\n else {\n foundNonLocked = true;\n }\n });\n return rulePassed;\n };\n ColumnController.prototype.doesMovePassMarryChildren = function (allColumnsCopy) {\n var rulePassed = true;\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (child) {\n if (!(child instanceof originalColumnGroup_1.OriginalColumnGroup)) {\n return;\n }\n var columnGroup = child;\n var marryChildren = columnGroup.getColGroupDef() && columnGroup.getColGroupDef().marryChildren;\n if (!marryChildren) {\n return;\n }\n var newIndexes = [];\n columnGroup.getLeafColumns().forEach(function (col) {\n var newColIndex = allColumnsCopy.indexOf(col);\n newIndexes.push(newColIndex);\n });\n var maxIndex = Math.max.apply(Math, newIndexes);\n var minIndex = Math.min.apply(Math, newIndexes);\n // spread is how far the first column in this group is away from the last column\n var spread = maxIndex - minIndex;\n var maxSpread = columnGroup.getLeafColumns().length - 1;\n // if the columns\n if (spread > maxSpread) {\n rulePassed = false;\n }\n // console.log(`maxIndex = ${maxIndex}, minIndex = ${minIndex}, spread = ${spread}, maxSpread = ${maxSpread}, fail = ${spread > (count-1)}`)\n // console.log(allColumnsCopy.map( col => col.getColDef().field).join(','));\n });\n return rulePassed;\n };\n ColumnController.prototype.moveColumn = function (key, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n this.moveColumns([key], toIndex, source);\n };\n ColumnController.prototype.moveColumnByIndex = function (fromIndex, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n var column = this.gridColumns[fromIndex];\n this.moveColumn(column, toIndex, source);\n };\n // used by:\n // + angularGrid -> for setting body width\n // + rowController -> setting main row widths (when inserting and resizing)\n // need to cache this\n ColumnController.prototype.getBodyContainerWidth = function () {\n return this.bodyWidth;\n };\n ColumnController.prototype.getContainerWidth = function (pinned) {\n switch (pinned) {\n case column_1.Column.PINNED_LEFT:\n return this.leftWidth;\n case column_1.Column.PINNED_RIGHT:\n return this.rightWidth;\n default:\n return this.bodyWidth;\n }\n };\n // after setColumnWidth or updateGroupsAndDisplayedColumns\n ColumnController.prototype.updateBodyWidths = function () {\n var newBodyWidth = this.getWidthOfColsInList(this.displayedCenterColumns);\n var newLeftWidth = this.getWidthOfColsInList(this.displayedLeftColumns);\n var newRightWidth = this.getWidthOfColsInList(this.displayedRightColumns);\n // this is used by virtual col calculation, for RTL only, as a change to body width can impact displayed\n // columns, due to RTL inverting the y coordinates\n this.bodyWidthDirty = this.bodyWidth !== newBodyWidth;\n var atLeastOneChanged = this.bodyWidth !== newBodyWidth || this.leftWidth !== newLeftWidth || this.rightWidth !== newRightWidth;\n if (atLeastOneChanged) {\n this.bodyWidth = newBodyWidth;\n this.leftWidth = newLeftWidth;\n this.rightWidth = newRightWidth;\n // when this fires, it is picked up by the gridPanel, which ends up in\n // gridPanel calling setWidthAndScrollPosition(), which in turn calls setVirtualViewportPosition()\n var event_6 = {\n type: events_1.Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_6);\n }\n };\n // + rowController\n ColumnController.prototype.getValueColumns = function () {\n return this.valueColumns ? this.valueColumns : [];\n };\n // + rowController\n ColumnController.prototype.getPivotColumns = function () {\n return this.pivotColumns ? this.pivotColumns : [];\n };\n // + clientSideRowModel\n ColumnController.prototype.isPivotActive = function () {\n return this.pivotColumns && this.pivotColumns.length > 0 && this.pivotMode;\n };\n // + toolPanel\n ColumnController.prototype.getRowGroupColumns = function () {\n return this.rowGroupColumns ? this.rowGroupColumns : [];\n };\n // + rowController -> while inserting rows\n ColumnController.prototype.getDisplayedCenterColumns = function () {\n return this.displayedCenterColumns;\n };\n // + rowController -> while inserting rows\n ColumnController.prototype.getDisplayedLeftColumns = function () {\n return this.displayedLeftColumns;\n };\n ColumnController.prototype.getDisplayedRightColumns = function () {\n return this.displayedRightColumns;\n };\n ColumnController.prototype.getDisplayedColumns = function (type) {\n switch (type) {\n case column_1.Column.PINNED_LEFT:\n return this.getDisplayedLeftColumns();\n case column_1.Column.PINNED_RIGHT:\n return this.getDisplayedRightColumns();\n default:\n return this.getDisplayedCenterColumns();\n }\n };\n // used by:\n // + clientSideRowController -> sorting, building quick filter text\n // + headerRenderer -> sorting (clearing icon)\n ColumnController.prototype.getAllPrimaryColumns = function () {\n return this.primaryColumns ? this.primaryColumns.slice() : null;\n };\n ColumnController.prototype.getSecondaryColumns = function () {\n return this.secondaryColumns ? this.secondaryColumns.slice() : null;\n };\n ColumnController.prototype.getAllColumnsForQuickFilter = function () {\n return this.columnsForQuickFilter;\n };\n // + moveColumnController\n ColumnController.prototype.getAllGridColumns = function () {\n return this.gridColumns;\n };\n ColumnController.prototype.isEmpty = function () {\n return utils_1._.missingOrEmpty(this.gridColumns);\n };\n ColumnController.prototype.isRowGroupEmpty = function () {\n return utils_1._.missingOrEmpty(this.rowGroupColumns);\n };\n ColumnController.prototype.setColumnVisible = function (key, visible, source) {\n if (source === void 0) { source = \"api\"; }\n this.setColumnsVisible([key], visible, source);\n };\n ColumnController.prototype.setColumnsVisible = function (keys, visible, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n this.actionOnGridColumns(keys, function (column) {\n if (column.isVisible() !== visible) {\n column.setVisible(visible, source);\n return true;\n }\n else {\n return false;\n }\n }, source, function () {\n var event = {\n type: events_1.Events.EVENT_COLUMN_VISIBLE,\n visible: visible,\n column: null,\n columns: null,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: source\n };\n return event;\n });\n this.columnAnimationService.finish();\n };\n ColumnController.prototype.setColumnPinned = function (key, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.setColumnsPinned([key], pinned, source);\n }\n };\n ColumnController.prototype.setColumnsPinned = function (keys, pinned, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n if (this.gridOptionsWrapper.getDomLayout() === 'print') {\n console.warn(\"Changing the column pinning status is not allowed with domLayout='print'\");\n return;\n }\n this.columnAnimationService.start();\n var actualPinned;\n if (pinned === true || pinned === column_1.Column.PINNED_LEFT) {\n actualPinned = column_1.Column.PINNED_LEFT;\n }\n else if (pinned === column_1.Column.PINNED_RIGHT) {\n actualPinned = column_1.Column.PINNED_RIGHT;\n }\n else {\n actualPinned = null;\n }\n this.actionOnGridColumns(keys, function (col) {\n if (col.getPinned() !== actualPinned) {\n col.setPinned(actualPinned);\n return true;\n }\n else {\n return false;\n }\n }, source, function () {\n var event = {\n type: events_1.Events.EVENT_COLUMN_PINNED,\n pinned: actualPinned,\n column: null,\n columns: null,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: source\n };\n return event;\n });\n this.columnAnimationService.finish();\n };\n // does an action on a set of columns. provides common functionality for looking up the\n // columns based on key, getting a list of effected columns, and then updated the event\n // with either one column (if it was just one col) or a list of columns\n // used by: autoResize, setVisible, setPinned\n ColumnController.prototype.actionOnGridColumns = function (// the column keys this action will be on\n keys, \n // the action to do - if this returns false, the column was skipped\n // and won't be included in the event\n action, \n // should return back a column event of the right type\n source, createEvent) {\n var _this = this;\n if (utils_1._.missingOrEmpty(keys)) {\n return;\n }\n var updatedColumns = [];\n keys.forEach(function (key) {\n var column = _this.getGridColumn(key);\n if (!column) {\n return;\n }\n // need to check for false with type (ie !== instead of !=)\n // as not returning anything (undefined) would also be false\n var resultOfAction = action(column);\n if (resultOfAction !== false) {\n updatedColumns.push(column);\n }\n });\n if (updatedColumns.length === 0) {\n return;\n }\n this.updateDisplayedColumns(source);\n if (utils_1._.exists(createEvent) && createEvent) {\n var event_7 = createEvent();\n event_7.columns = updatedColumns;\n event_7.column = updatedColumns.length === 1 ? updatedColumns[0] : null;\n this.eventService.dispatchEvent(event_7);\n }\n };\n ColumnController.prototype.getDisplayedColBefore = function (col) {\n var allDisplayedColumns = this.getAllDisplayedColumns();\n var oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex > 0) {\n return allDisplayedColumns[oldIndex - 1];\n }\n else {\n return null;\n }\n };\n // used by:\n // + rowRenderer -> for navigation\n ColumnController.prototype.getDisplayedColAfter = function (col) {\n var allDisplayedColumns = this.getAllDisplayedColumns();\n var oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex < (allDisplayedColumns.length - 1)) {\n return allDisplayedColumns[oldIndex + 1];\n }\n else {\n return null;\n }\n };\n ColumnController.prototype.getDisplayedGroupAfter = function (columnGroup) {\n // pick one col in this group at random\n var col = columnGroup.getDisplayedLeafColumns()[0];\n var requiredLevel = columnGroup.getOriginalColumnGroup().getLevel();\n while (true) {\n // keep moving to the next col, until we get to another group\n col = this.getDisplayedColAfter(col);\n // if no col after, means no group after\n if (!col) {\n return null;\n }\n // get group at same level as the one we are looking for\n var groupPointer = col.getParent();\n while (groupPointer.getOriginalColumnGroup().getLevel() !== requiredLevel) {\n groupPointer = groupPointer.getParent();\n }\n if (groupPointer !== columnGroup) {\n return groupPointer;\n }\n }\n };\n ColumnController.prototype.isPinningLeft = function () {\n return this.displayedLeftColumns.length > 0;\n };\n ColumnController.prototype.isPinningRight = function () {\n return this.displayedRightColumns.length > 0;\n };\n ColumnController.prototype.getPrimaryAndSecondaryAndAutoColumns = function () {\n var result = this.primaryColumns ? this.primaryColumns.slice(0) : [];\n if (this.groupAutoColumns && utils_1._.exists(this.groupAutoColumns)) {\n this.groupAutoColumns.forEach(function (col) { return result.push(col); });\n }\n if (this.secondaryColumnsPresent && this.secondaryColumns) {\n this.secondaryColumns.forEach(function (column) { return result.push(column); });\n }\n return result;\n };\n ColumnController.prototype.createStateItemFromColumn = function (column) {\n var rowGroupIndex = column.isRowGroupActive() ? this.rowGroupColumns.indexOf(column) : null;\n var pivotIndex = column.isPivotActive() ? this.pivotColumns.indexOf(column) : null;\n var aggFunc = column.isValueActive() ? column.getAggFunc() : null;\n return {\n colId: column.getColId(),\n hide: !column.isVisible(),\n aggFunc: aggFunc,\n width: column.getActualWidth(),\n pivotIndex: pivotIndex,\n pinned: column.getPinned(),\n rowGroupIndex: rowGroupIndex\n };\n };\n ColumnController.prototype.getColumnState = function () {\n if (utils_1._.missing(this.primaryColumns)) {\n return [];\n }\n var primaryColumnState = this.primaryColumns.map(this.createStateItemFromColumn.bind(this));\n var groupAutoColumnState = this.groupAutoColumns\n // if groupAutoCols, then include them\n ? this.groupAutoColumns.map(this.createStateItemFromColumn.bind(this))\n // otherwise no\n : [];\n var columnStateList = groupAutoColumnState.concat(primaryColumnState);\n if (!this.pivotMode) {\n this.orderColumnStateList(columnStateList);\n }\n return columnStateList;\n };\n ColumnController.prototype.orderColumnStateList = function (columnStateList) {\n var gridColumnIds = this.gridColumns.map(function (column) { return column.getColId(); });\n columnStateList.sort(function (itemA, itemB) {\n var posA = gridColumnIds.indexOf(itemA.colId);\n var posB = gridColumnIds.indexOf(itemB.colId);\n return posA - posB;\n });\n };\n ColumnController.prototype.resetColumnState = function (suppressEverythingEvent, source) {\n // NOTE = there is one bug here that no customer has noticed - if a column has colDef.lockPosition,\n // this is ignored below when ordering the cols. to work, we should always put lockPosition cols first.\n // As a work around, developers should just put lockPosition columns first in their colDef list.\n if (suppressEverythingEvent === void 0) { suppressEverythingEvent = false; }\n if (source === void 0) { source = \"api\"; }\n // we can't use 'allColumns' as the order might of messed up, so get the primary ordered list\n var primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n var columnStates = [];\n // we start at 1000, so if user has mix of rowGroup and group specified, it will work with both.\n // eg IF user has ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=true,\n // THEN result will be ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=1000\n var letRowGroupIndex = 1000;\n var letPivotIndex = 1000;\n if (primaryColumns) {\n primaryColumns.forEach(function (column) {\n var rowGroupIndex = column.getColDef().rowGroupIndex;\n var rowGroup = column.getColDef().rowGroup;\n var pivotIndex = column.getColDef().pivotIndex;\n var pivot = column.getColDef().pivot;\n var stateItem = {\n colId: column.getColId(),\n aggFunc: column.getColDef().aggFunc,\n hide: column.getColDef().hide,\n pinned: column.getColDef().pinned,\n rowGroupIndex: rowGroupIndex,\n pivotIndex: column.getColDef().pivotIndex,\n width: column.getColDef().width\n };\n if (utils_1._.missing(rowGroupIndex) && rowGroup) {\n stateItem.rowGroupIndex = letRowGroupIndex++;\n }\n if (utils_1._.missing(pivotIndex) && pivot) {\n stateItem.pivotIndex = letPivotIndex++;\n }\n columnStates.push(stateItem);\n });\n }\n this.setColumnState(columnStates, suppressEverythingEvent, source);\n };\n ColumnController.prototype.setColumnState = function (columnStates, suppressEverythingEvent, source) {\n var _this = this;\n if (suppressEverythingEvent === void 0) { suppressEverythingEvent = false; }\n if (source === void 0) { source = \"api\"; }\n if (utils_1._.missingOrEmpty(this.primaryColumns)) {\n return false;\n }\n var columnStateBefore = this.getColumnState();\n this.autoGroupsNeedBuilding = true;\n // at the end below, this list will have all columns we got no state for\n var columnsWithNoState = this.primaryColumns.slice();\n this.rowGroupColumns = [];\n this.valueColumns = [];\n this.pivotColumns = [];\n var success = true;\n var rowGroupIndexes = {};\n var pivotIndexes = {};\n var autoGroupColumnStates = [];\n if (columnStates) {\n columnStates.forEach(function (state) {\n // auto group columns are re-created so deferring syncing with ColumnState\n if (utils_1._.exists(_this.getAutoColumn(state.colId))) {\n autoGroupColumnStates.push(state);\n return;\n }\n var column = _this.getPrimaryColumn(state.colId);\n if (!column) {\n console.warn('ag-grid: column ' + state.colId + ' not found');\n success = false;\n }\n else {\n _this.syncColumnWithStateItem(column, state, rowGroupIndexes, pivotIndexes, source);\n utils_1._.removeFromArray(columnsWithNoState, column);\n }\n });\n }\n // anything left over, we got no data for, so add in the column as non-value, non-rowGroup and hidden\n columnsWithNoState.forEach(this.syncColumnWithNoState.bind(this));\n // sort the lists according to the indexes that were provided\n this.rowGroupColumns.sort(this.sortColumnListUsingIndexes.bind(this, rowGroupIndexes));\n this.pivotColumns.sort(this.sortColumnListUsingIndexes.bind(this, pivotIndexes));\n this.updateGridColumns();\n // sync newly created auto group columns with ColumnState\n autoGroupColumnStates.forEach(function (stateItem) {\n var autoCol = _this.getAutoColumn(stateItem.colId);\n _this.syncColumnWithStateItem(autoCol, stateItem, rowGroupIndexes, pivotIndexes, source);\n });\n if (columnStates) {\n var orderOfColIds_1 = columnStates.map(function (stateItem) { return stateItem.colId; });\n this.gridColumns.sort(function (colA, colB) {\n var indexA = orderOfColIds_1.indexOf(colA.getId());\n var indexB = orderOfColIds_1.indexOf(colB.getId());\n return indexA - indexB;\n });\n }\n // this is already done in updateGridColumns, however we changed the order above (to match the order of the state\n // columns) so we need to do it again. we could of put logic into the order above to take into account fixed\n // columns, however if we did then we would have logic for updating fixed columns twice. reusing the logic here\n // is less sexy for the code here, but it keeps consistency.\n this.putFixedColumnsFirst();\n this.updateDisplayedColumns(source);\n if (!suppressEverythingEvent) {\n var event_8 = {\n type: events_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_8);\n }\n this.raiseColumnEvents(columnStateBefore, source);\n return success;\n };\n ColumnController.prototype.raiseColumnEvents = function (columnStateBefore, source) {\n var _this = this;\n if (this.gridOptionsWrapper.isSuppressSetColumnStateEvents()) {\n return;\n }\n var columnStateAfter = this.getColumnState();\n // raises generic ColumnEvents where all columns are returned rather than what has changed\n var raiseEventWithAllColumns = function (eventType, idMapper, columns) {\n var unchanged = utils_1._.compareArrays(columnStateBefore.map(idMapper).sort(), columnStateAfter.map(idMapper).sort());\n if (unchanged) {\n return;\n }\n // returning all columns rather than what has changed!\n var event = {\n type: eventType,\n columns: columns,\n column: columns.length === 1 ? columns[0] : null,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: source\n };\n _this.eventService.dispatchEvent(event);\n };\n // determines which columns have changed according to supplied predicate\n var getChangedColumns = function (changedPredicate) {\n var changedColumns = [];\n var columnStateBeforeMap = {};\n columnStateBefore.forEach(function (col) {\n columnStateBeforeMap[col.colId] = col;\n });\n _this.gridColumns.forEach(function (column) {\n var colStateBefore = columnStateBeforeMap[column.getColId()];\n if (!colStateBefore || changedPredicate(colStateBefore, column)) {\n changedColumns.push(column);\n }\n });\n return changedColumns;\n };\n // generic ColumnEvents which return current column list\n var valueColumnIdMapper = function (cs) { return cs.colId + '-' + cs.aggFunc; };\n raiseEventWithAllColumns(events_1.Events.EVENT_COLUMN_VALUE_CHANGED, valueColumnIdMapper, this.valueColumns);\n var pivotColumnIdMapper = function (cs) { return cs.colId + '-' + cs.pivotIndex; };\n raiseEventWithAllColumns(events_1.Events.EVENT_COLUMN_PIVOT_CHANGED, pivotColumnIdMapper, this.pivotColumns);\n var rowGroupColumnIdMapper = function (cs) { return cs.colId + '-' + cs.rowGroupIndex; };\n raiseEventWithAllColumns(events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, rowGroupColumnIdMapper, this.rowGroupColumns);\n // specific ColumnEvents which return what's changed\n var pinnedChangePredicate = function (cs, c) { return cs.pinned !== c.getPinned(); };\n this.raiseColumnPinnedEvent(getChangedColumns(pinnedChangePredicate), source);\n var visibilityChangePredicate = function (cs, c) { return cs.hide === c.isVisible(); };\n var cols = getChangedColumns(visibilityChangePredicate);\n this.raiseColumnVisibleEvent(cols, source);\n var resizeChangePredicate = function (cs, c) { return cs.width !== c.getActualWidth(); };\n this.raiseColumnResizeEvent(getChangedColumns(resizeChangePredicate), source);\n // special handling for moved column events\n this.raiseColumnMovedEvent(columnStateBefore, source);\n };\n ColumnController.prototype.raiseColumnPinnedEvent = function (changedColumns, source) {\n if (changedColumns.length > 0) {\n var event_9 = {\n type: events_1.Events.EVENT_COLUMN_PINNED,\n pinned: null,\n columns: changedColumns,\n column: null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_9);\n }\n };\n ColumnController.prototype.raiseColumnVisibleEvent = function (changedColumns, source) {\n if (changedColumns.length > 0) {\n var event_10 = {\n type: events_1.Events.EVENT_COLUMN_VISIBLE,\n visible: undefined,\n columns: changedColumns,\n column: null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_10);\n }\n };\n ColumnController.prototype.raiseColumnResizeEvent = function (changedColumns, source) {\n if (changedColumns.length > 0) {\n var event_11 = {\n type: events_1.Events.EVENT_COLUMN_RESIZED,\n columns: changedColumns,\n column: null,\n finished: true,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_11);\n }\n };\n ColumnController.prototype.raiseColumnMovedEvent = function (columnStateBefore, source) {\n var movedColumns = [];\n var columnStateAfter = this.getColumnState();\n var _loop_3 = function (i) {\n var before = columnStateBefore[i];\n var after = columnStateAfter[i];\n // don't consider column if reintroduced or hidden\n if (!before || after.hide) {\n return \"continue\";\n }\n if (before.colId !== after.colId) {\n var predicate = function (column) { return column.getColId() === after.colId; };\n var movedColumn = utils_1._.find(this_1.allDisplayedColumns, predicate);\n movedColumns.push(movedColumn);\n }\n };\n var this_1 = this;\n for (var i = 0; i < columnStateAfter.length; i++) {\n _loop_3(i);\n }\n if (movedColumns.length > 0) {\n var event_12 = {\n type: events_1.Events.EVENT_COLUMN_MOVED,\n columns: movedColumns,\n column: null,\n toIndex: undefined,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_12);\n }\n };\n ColumnController.prototype.sortColumnListUsingIndexes = function (indexes, colA, colB) {\n var indexA = indexes[colA.getId()];\n var indexB = indexes[colB.getId()];\n return indexA - indexB;\n };\n ColumnController.prototype.syncColumnWithNoState = function (column, source) {\n column.setVisible(false, source);\n column.setAggFunc(null);\n column.setPinned(null);\n column.setRowGroupActive(false, source);\n column.setPivotActive(false, source);\n column.setValueActive(false, source);\n };\n ColumnController.prototype.syncColumnWithStateItem = function (column, stateItem, rowGroupIndexes, pivotIndexes, source) {\n if (!column) {\n return;\n }\n // following ensures we are left with boolean true or false, eg converts (null, undefined, 0) all to true\n column.setVisible(!stateItem.hide, source);\n // sets pinned to 'left' or 'right'\n column.setPinned(stateItem.pinned);\n // if width provided and valid, use it, otherwise stick with the old width\n var minColWidth = this.gridOptionsWrapper.getMinColWidth();\n if (stateItem.width && minColWidth &&\n (stateItem.width >= minColWidth)) {\n column.setActualWidth(stateItem.width, source);\n }\n if (typeof stateItem.aggFunc === 'string') {\n column.setAggFunc(stateItem.aggFunc);\n column.setValueActive(true, source);\n this.valueColumns.push(column);\n }\n else {\n if (utils_1._.exists(stateItem.aggFunc)) {\n console.warn('ag-Grid: stateItem.aggFunc must be a string. if using your own aggregation ' +\n 'functions, register the functions first before using them in get/set state. This is because it is' +\n 'intended for the column state to be stored and retrieved as simple JSON.');\n }\n column.setAggFunc(null);\n column.setValueActive(false, source);\n }\n if (typeof stateItem.rowGroupIndex === 'number') {\n this.rowGroupColumns.push(column);\n column.setRowGroupActive(true, source);\n rowGroupIndexes[column.getId()] = stateItem.rowGroupIndex;\n }\n else {\n column.setRowGroupActive(false, source);\n }\n if (typeof stateItem.pivotIndex === 'number') {\n this.pivotColumns.push(column);\n column.setPivotActive(true, source);\n pivotIndexes[column.getId()] = stateItem.pivotIndex;\n }\n else {\n column.setPivotActive(false, source);\n }\n };\n ColumnController.prototype.getGridColumns = function (keys) {\n return this.getColumns(keys, this.getGridColumn.bind(this));\n };\n ColumnController.prototype.getColumns = function (keys, columnLookupCallback) {\n var foundColumns = [];\n if (keys) {\n keys.forEach(function (key) {\n var column = columnLookupCallback(key);\n if (column) {\n foundColumns.push(column);\n }\n });\n }\n return foundColumns;\n };\n // used by growGroupPanel\n ColumnController.prototype.getColumnWithValidation = function (key) {\n if (key == null) {\n return null;\n }\n var column = this.getGridColumn(key);\n if (!column) {\n console.warn('ag-Grid: could not find column ' + key);\n }\n return column;\n };\n ColumnController.prototype.getPrimaryColumn = function (key) {\n return this.getColumn(key, this.primaryColumns);\n };\n ColumnController.prototype.getGridColumn = function (key) {\n return this.getColumn(key, this.gridColumns);\n };\n ColumnController.prototype.getColumn = function (key, columnList) {\n if (!key) {\n return null;\n }\n for (var i = 0; i < columnList.length; i++) {\n if (this.columnsMatch(columnList[i], key)) {\n return columnList[i];\n }\n }\n return this.getAutoColumn(key);\n };\n ColumnController.prototype.getAutoColumn = function (key) {\n var _this = this;\n if (!this.groupAutoColumns || !utils_1._.exists(this.groupAutoColumns) || utils_1._.missing(this.groupAutoColumns)) {\n return null;\n }\n return utils_1._.find(this.groupAutoColumns, function (groupCol) {\n return _this.columnsMatch(groupCol, key);\n });\n };\n ColumnController.prototype.columnsMatch = function (column, key) {\n var columnMatches = column === key;\n var colDefMatches = column.getColDef() === key;\n var idMatches = column.getColId() == key;\n return columnMatches || colDefMatches || idMatches;\n };\n ColumnController.prototype.getDisplayNameForColumn = function (column, location, includeAggFunc) {\n if (includeAggFunc === void 0) { includeAggFunc = false; }\n if (!column) {\n return null;\n }\n var headerName = this.getHeaderName(column.getColDef(), column, null, null, location);\n if (includeAggFunc) {\n return this.wrapHeaderNameWithAggFunc(column, headerName);\n }\n else {\n return headerName;\n }\n };\n ColumnController.prototype.getDisplayNameForOriginalColumnGroup = function (columnGroup, originalColumnGroup, location) {\n var colGroupDef = originalColumnGroup ? originalColumnGroup.getColGroupDef() : null;\n if (colGroupDef) {\n return this.getHeaderName(colGroupDef, null, columnGroup, originalColumnGroup, location);\n }\n else {\n return null;\n }\n };\n ColumnController.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) {\n return this.getDisplayNameForOriginalColumnGroup(columnGroup, columnGroup.getOriginalColumnGroup(), location);\n };\n // location is where the column is going to appear, ie who is calling us\n ColumnController.prototype.getHeaderName = function (colDef, column, columnGroup, originalColumnGroup, location) {\n var headerValueGetter = colDef.headerValueGetter;\n if (headerValueGetter) {\n var params = {\n colDef: colDef,\n column: column,\n columnGroup: columnGroup,\n originalColumnGroup: originalColumnGroup,\n location: location,\n api: this.gridOptionsWrapper.getApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n if (typeof headerValueGetter === 'function') {\n // valueGetter is a function, so just call it\n return headerValueGetter(params);\n }\n else if (typeof headerValueGetter === 'string') {\n // valueGetter is an expression, so execute the expression\n return this.expressionService.evaluate(headerValueGetter, params);\n }\n else {\n console.warn('ag-grid: headerValueGetter must be a function or a string');\n return '';\n }\n }\n else if (colDef.headerName != null) {\n return colDef.headerName;\n }\n else if (colDef.field) {\n return utils_1._.camelCaseToHumanText(colDef.field);\n }\n else {\n return '';\n }\n };\n /*\n private getHeaderGroupName(columnGroup: ColumnGroup): string {\n let colGroupDef = columnGroup.getOriginalColumnGroup().getColGroupDef();\n let headerValueGetter = colGroupDef.headerValueGetter;\n\n if (headerValueGetter) {\n let params = {\n columnGroup: columnGroup,\n colDef: colGroupDef,\n api: this.gridOptionsWrapper.getApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n\n if (typeof headerValueGetter === 'function') {\n // valueGetter is a function, so just call it\n return headerValueGetter(params);\n } else if (typeof headerValueGetter === 'string') {\n // valueGetter is an expression, so execute the expression\n return this.expressionService.evaluate(headerValueGetter, params);\n } else {\n console.warn('ag-grid: headerValueGetter must be a function or a string');\n return '';\n }\n } else {\n return colGroupDef.headerName;\n }\n }\n */\n ColumnController.prototype.wrapHeaderNameWithAggFunc = function (column, headerName) {\n if (this.gridOptionsWrapper.isSuppressAggFuncInHeader()) {\n return headerName;\n }\n // only columns with aggregation active can have aggregations\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n var pivotActiveOnThisColumn = utils_1._.exists(pivotValueColumn);\n var aggFunc = null;\n var aggFuncFound;\n // otherwise we have a measure that is active, and we are doing aggregation on it\n if (pivotActiveOnThisColumn) {\n aggFunc = pivotValueColumn ? pivotValueColumn.getAggFunc() : null;\n aggFuncFound = true;\n }\n else {\n var measureActive = column.isValueActive();\n var aggregationPresent = this.pivotMode || !this.isRowGroupEmpty();\n if (measureActive && aggregationPresent) {\n aggFunc = column.getAggFunc();\n aggFuncFound = true;\n }\n else {\n aggFuncFound = false;\n }\n }\n if (aggFuncFound) {\n var aggFuncString = (typeof aggFunc === 'string') ? aggFunc : 'func';\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n return aggFuncStringTranslated + \"(\" + headerName + \")\";\n }\n else {\n return headerName;\n }\n };\n // returns the group with matching colId and instanceId. If instanceId is missing,\n // matches only on the colId.\n ColumnController.prototype.getColumnGroup = function (colId, instanceId) {\n if (!colId) {\n return null;\n }\n if (colId instanceof columnGroup_1.ColumnGroup) {\n return colId;\n }\n var allColumnGroups = this.getAllDisplayedColumnGroups();\n var checkInstanceId = typeof instanceId === 'number';\n var result = null;\n this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n if (child instanceof columnGroup_1.ColumnGroup) {\n var columnGroup = child;\n var matched = void 0;\n if (checkInstanceId) {\n matched = colId === columnGroup.getGroupId() && instanceId === columnGroup.getInstanceId();\n }\n else {\n matched = colId === columnGroup.getGroupId();\n }\n if (matched) {\n result = columnGroup;\n }\n }\n });\n return result;\n };\n ColumnController.prototype.isReady = function () {\n return this.ready;\n };\n ColumnController.prototype.createValueColumns = function (source, oldPrimaryColumns) {\n this.valueColumns = this.extractColumns(oldPrimaryColumns, this.valueColumns, function (col, flag) { return col.setValueActive(flag, source); }, \n // aggFunc doesn't have index variant, cos order of value cols doesn't matter, so always return null\n function () { return null; }, \n // aggFunc is a string, so return it's existence\n function (colDef) { return !!colDef.aggFunc; });\n // all new columns added will have aggFunc missing, so set it to what is in the colDef\n this.valueColumns.forEach(function (col) {\n if (!col.getAggFunc()) {\n col.setAggFunc(col.getColDef().aggFunc);\n }\n });\n };\n ColumnController.prototype.extractRowGroupColumns = function (source, oldPrimaryColumns) {\n this.rowGroupColumns = this.extractColumns(oldPrimaryColumns, this.rowGroupColumns, function (col, flag) { return col.setRowGroupActive(flag, source); }, function (colDef) { return colDef.rowGroupIndex; }, function (colDef) { return colDef.rowGroup; });\n };\n ColumnController.prototype.extractColumns = function (oldPrimaryColumns, previousCols, setFlagFunc, getIndexFunc, getValueFunc) {\n var _this = this;\n if (!previousCols) {\n previousCols = [];\n }\n // remove cols that no longer exist\n var colPresentInPrimaryFunc = function (col) { return _this.primaryColumns.indexOf(col) >= 0; };\n var colMissingFromPrimaryFunc = function (col) { return _this.primaryColumns.indexOf(col) < 0; };\n var colNewFunc = function (col) { return !oldPrimaryColumns || oldPrimaryColumns.indexOf(col) < 0; };\n var removedCols = previousCols.filter(colMissingFromPrimaryFunc);\n var existingCols = previousCols.filter(colPresentInPrimaryFunc);\n var newPrimaryCols = this.primaryColumns.filter(colNewFunc);\n removedCols.forEach(function (col) { return setFlagFunc(col, false); });\n var newCols = [];\n // we only want to work on new columns, as old columns already got processed first time around\n // pull out items with xxxIndex\n newPrimaryCols.forEach(function (col) {\n var index = getIndexFunc(col.getColDef());\n if (typeof index === 'number') {\n newCols.push(col);\n }\n });\n // then sort them\n newCols.sort(function (colA, colB) {\n var indexA = getIndexFunc(colA.getColDef());\n var indexB = getIndexFunc(colB.getColDef());\n if (indexA === indexB) {\n return 0;\n }\n else if (indexA < indexB) {\n return -1;\n }\n else {\n return 1;\n }\n });\n // now just pull out items xxx (boolean value), they will be added at the end\n // after the indexed ones, but in the order the columns appear\n newPrimaryCols.forEach(function (col) {\n var booleanValue = getValueFunc(col.getColDef());\n if (booleanValue) {\n // if user already specified xxxIndex then we skip it as this col already included\n if (newCols.indexOf(col) >= 0) {\n return;\n }\n newCols.push(col);\n }\n });\n newCols.forEach(function (col) { return setFlagFunc(col, true); });\n var res = existingCols.concat(newCols);\n return res;\n };\n ColumnController.prototype.extractPivotColumns = function (source, oldPrimaryColumns) {\n this.pivotColumns = this.extractColumns(oldPrimaryColumns, this.pivotColumns, function (col, flag) { return col.setPivotActive(flag, source); }, function (colDef) { return colDef.pivotIndex; }, function (colDef) { return colDef.pivot; });\n };\n ColumnController.prototype.resetColumnGroupState = function (source) {\n if (source === void 0) { source = \"api\"; }\n var stateItems = [];\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.primaryColumnTree, function (child) {\n if (child instanceof originalColumnGroup_1.OriginalColumnGroup) {\n var groupState = {\n groupId: child.getGroupId(),\n open: child.getColGroupDef().openByDefault\n };\n stateItems.push(groupState);\n }\n });\n this.setColumnGroupState(stateItems, source);\n };\n ColumnController.prototype.getColumnGroupState = function () {\n var columnGroupState = [];\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {\n if (node instanceof originalColumnGroup_1.OriginalColumnGroup) {\n var originalColumnGroup = node;\n columnGroupState.push({\n groupId: originalColumnGroup.getGroupId(),\n open: originalColumnGroup.isExpanded()\n });\n }\n });\n return columnGroupState;\n };\n ColumnController.prototype.setColumnGroupState = function (stateItems, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n var impactedGroups = [];\n stateItems.forEach(function (stateItem) {\n var groupKey = stateItem.groupId;\n var newValue = stateItem.open;\n var originalColumnGroup = _this.getOriginalColumnGroup(groupKey);\n if (!originalColumnGroup) {\n return;\n }\n if (originalColumnGroup.isExpanded() === newValue) {\n return;\n }\n _this.logger.log('columnGroupOpened(' + originalColumnGroup.getGroupId() + ',' + newValue + ')');\n originalColumnGroup.setExpanded(newValue);\n impactedGroups.push(originalColumnGroup);\n });\n this.updateGroupsAndDisplayedColumns(source);\n this.setFirstRightAndLastLeftPinned(source);\n impactedGroups.forEach(function (originalColumnGroup) {\n var event = {\n type: events_1.Events.EVENT_COLUMN_GROUP_OPENED,\n columnGroup: originalColumnGroup,\n api: _this.gridApi,\n columnApi: _this.columnApi\n };\n _this.eventService.dispatchEvent(event);\n });\n this.columnAnimationService.finish();\n };\n // called by headerRenderer - when a header is opened or closed\n ColumnController.prototype.setColumnGroupOpened = function (key, newValue, source) {\n if (source === void 0) { source = \"api\"; }\n var keyAsString;\n if (key instanceof originalColumnGroup_1.OriginalColumnGroup) {\n keyAsString = key.getId();\n }\n else {\n keyAsString = key;\n }\n this.setColumnGroupState([{ groupId: keyAsString, open: newValue }], source);\n };\n ColumnController.prototype.getOriginalColumnGroup = function (key) {\n if (key instanceof originalColumnGroup_1.OriginalColumnGroup) {\n return key;\n }\n if (typeof key !== 'string') {\n console.error('ag-Grid: group key must be a string');\n }\n // otherwise, search for the column group by id\n var res = null;\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {\n if (node instanceof originalColumnGroup_1.OriginalColumnGroup) {\n var originalColumnGroup = node;\n if (originalColumnGroup.getId() === key) {\n res = originalColumnGroup;\n }\n }\n });\n return res;\n };\n ColumnController.prototype.calculateColumnsForDisplay = function () {\n var _this = this;\n var columnsForDisplay;\n if (this.pivotMode && !this.secondaryColumnsPresent) {\n // pivot mode is on, but we are not pivoting, so we only\n // show columns we are aggregating on\n columnsForDisplay = utils_1._.filter(this.gridColumns, function (column) {\n var isAutoGroupCol = _this.groupAutoColumns && _this.groupAutoColumns.indexOf(column) >= 0;\n var isValueCol = _this.valueColumns && _this.valueColumns.indexOf(column) >= 0;\n return isAutoGroupCol || isValueCol;\n });\n }\n else {\n // otherwise continue as normal. this can be working on the primary\n // or secondary columns, whatever the gridColumns are set to\n columnsForDisplay = utils_1._.filter(this.gridColumns, function (column) {\n // keep col if a) it's auto-group or b) it's visible\n var isAutoGroupCol = _this.groupAutoColumns && _this.groupAutoColumns.indexOf(column) >= 0;\n return isAutoGroupCol || column.isVisible();\n });\n }\n return columnsForDisplay;\n };\n ColumnController.prototype.checkColSpanActiveInCols = function (columns) {\n var result = false;\n columns.forEach(function (col) {\n if (utils_1._.exists(col.getColDef().colSpan)) {\n result = true;\n }\n });\n return result;\n };\n ColumnController.prototype.calculateColumnsForGroupDisplay = function () {\n var _this = this;\n this.groupDisplayColumns = [];\n var checkFunc = function (col) {\n var colDef = col.getColDef();\n if (colDef && utils_1._.exists(colDef.showRowGroup)) {\n _this.groupDisplayColumns.push(col);\n }\n };\n this.gridColumns.forEach(checkFunc);\n if (this.groupAutoColumns) {\n this.groupAutoColumns.forEach(checkFunc);\n }\n };\n ColumnController.prototype.getGroupDisplayColumns = function () {\n return this.groupDisplayColumns;\n };\n ColumnController.prototype.updateDisplayedColumns = function (source) {\n var columnsForDisplay = this.calculateColumnsForDisplay();\n this.buildDisplayedTrees(columnsForDisplay);\n this.calculateColumnsForGroupDisplay();\n // also called when group opened/closed\n this.updateGroupsAndDisplayedColumns(source);\n // also called when group opened/closed\n this.setFirstRightAndLastLeftPinned(source);\n };\n ColumnController.prototype.isSecondaryColumnsPresent = function () {\n return this.secondaryColumnsPresent;\n };\n ColumnController.prototype.setSecondaryColumns = function (colDefs, source) {\n if (source === void 0) { source = \"api\"; }\n var newColsPresent = colDefs && colDefs.length > 0;\n // if not cols passed, and we had to cols anyway, then do nothing\n if (!newColsPresent && !this.secondaryColumnsPresent) {\n return;\n }\n if (newColsPresent) {\n this.processSecondaryColumnDefinitions(colDefs);\n var balancedTreeResult = this.columnFactory.createColumnTree(colDefs, false);\n this.secondaryBalancedTree = balancedTreeResult.columnTree;\n this.secondaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n this.secondaryColumns = this.getColumnsFromTree(this.secondaryBalancedTree);\n this.secondaryColumnsPresent = true;\n }\n else {\n this.secondaryBalancedTree = null;\n this.secondaryHeaderRowCount = -1;\n this.secondaryColumns = null;\n this.secondaryColumnsPresent = false;\n }\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n };\n ColumnController.prototype.processSecondaryColumnDefinitions = function (colDefs) {\n var columnCallback = this.gridOptionsWrapper.getProcessSecondaryColDefFunc();\n var groupCallback = this.gridOptionsWrapper.getProcessSecondaryColGroupDefFunc();\n if (!columnCallback && !groupCallback) {\n return undefined;\n }\n if (colDefs) {\n searchForColDefs(colDefs);\n }\n function searchForColDefs(colDefs2) {\n colDefs2.forEach(function (abstractColDef) {\n var isGroup = utils_1._.exists(abstractColDef.children);\n if (isGroup) {\n var colGroupDef = abstractColDef;\n if (groupCallback) {\n groupCallback(colGroupDef);\n }\n searchForColDefs(colGroupDef.children);\n }\n else {\n var colDef = abstractColDef;\n if (columnCallback) {\n columnCallback(colDef);\n }\n }\n });\n }\n };\n // called from: setColumnState, setColumnDefs, setSecondaryColumns\n ColumnController.prototype.updateGridColumns = function () {\n if (this.gridColsArePrimary) {\n this.lastPrimaryOrder = this.gridColumns;\n }\n if (this.secondaryColumns && this.secondaryBalancedTree) {\n this.gridBalancedTree = this.secondaryBalancedTree.slice();\n this.gridHeaderRowCount = this.secondaryHeaderRowCount;\n this.gridColumns = this.secondaryColumns.slice();\n this.gridColsArePrimary = false;\n }\n else {\n this.gridBalancedTree = this.primaryColumnTree.slice();\n this.gridHeaderRowCount = this.primaryHeaderRowCount;\n this.gridColumns = this.primaryColumns.slice();\n this.gridColsArePrimary = true;\n // updateGridColumns gets called after user adds a row group. we want to maintain the order of the columns\n // when this happens (eg if user moved a column) rather than revert back to the original column order.\n // likewise if changing in/out of pivot mode, we want to maintain the order of the primary cols\n this.orderGridColsLikeLastPrimary();\n }\n this.addAutoGroupToGridColumns();\n this.autoRowHeightColumns = this.gridColumns.filter(function (col) { return col.getColDef().autoHeight; });\n this.putFixedColumnsFirst();\n this.setupQuickFilterColumns();\n this.clearDisplayedColumns();\n this.colSpanActive = this.checkColSpanActiveInCols(this.gridColumns);\n var event = {\n type: events_1.Events.EVENT_GRID_COLUMNS_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.orderGridColsLikeLastPrimary = function () {\n var _this = this;\n if (utils_1._.missing(this.lastPrimaryOrder)) {\n return;\n }\n // only do the sort if at least one column is accounted for. columns will be not accounted for\n // if changing from secondary to primary columns\n var noColsFound = true;\n this.gridColumns.forEach(function (col) {\n if (_this.lastPrimaryOrder.indexOf(col) >= 0) {\n noColsFound = false;\n }\n });\n if (noColsFound) {\n return;\n }\n // order cols in the same order as before. we need to make sure that all\n // cols still exists, so filter out any that no longer exist.\n var oldColsOrdered = this.lastPrimaryOrder.filter(function (col) { return _this.gridColumns.indexOf(col) >= 0; });\n var newColsOrdered = this.gridColumns.filter(function (col) { return oldColsOrdered.indexOf(col) < 0; });\n // add in the new columns, at the end (if no group), or at the end of the group (if a group)\n var newGridColumns = oldColsOrdered.slice();\n newColsOrdered.forEach(function (newCol) {\n var parent = newCol.getOriginalParent();\n // if no parent, means we are not grouping, so just add the column to the end\n if (!parent) {\n newGridColumns.push(newCol);\n return;\n }\n // find the group the column belongs to. if no siblings at the current level (eg col in group on it's\n // own) then go up one level and look for siblings there.\n var siblings = [];\n while (!siblings.length && parent) {\n var leafCols = parent.getLeafColumns();\n leafCols.forEach(function (leafCol) {\n var presentInNewGriColumns = newGridColumns.indexOf(leafCol) >= 0;\n var noYetInSiblings = siblings.indexOf(leafCol) < 0;\n if (presentInNewGriColumns && noYetInSiblings) {\n siblings.push(leafCol);\n }\n });\n parent = parent.getOriginalParent();\n }\n // if no siblings exist at any level, this means the col is in a group (or parent groups) on it's own\n if (!siblings.length) {\n newGridColumns.push(newCol);\n return;\n }\n // find index of last column in the group\n var indexes = siblings.map(function (col) { return newGridColumns.indexOf(col); });\n var lastIndex = Math.max.apply(Math, indexes);\n utils_1._.insertIntoArray(newGridColumns, newCol, lastIndex + 1);\n });\n this.gridColumns = newGridColumns;\n };\n ColumnController.prototype.isPrimaryColumnGroupsPresent = function () {\n return this.primaryHeaderRowCount > 1;\n };\n // if we are using autoGroupCols, then they should be included for quick filter. this covers the\n // following scenarios:\n // a) user provides 'field' into autoGroupCol of normal grid, so now because a valid col to filter leafs on\n // b) using tree data and user depends on autoGroupCol for first col, and we also want to filter on this\n // (tree data is a bit different, as parent rows can be filtered on, unlike row grouping)\n ColumnController.prototype.setupQuickFilterColumns = function () {\n if (this.groupAutoColumns) {\n this.columnsForQuickFilter = this.primaryColumns.concat(this.groupAutoColumns);\n }\n else {\n this.columnsForQuickFilter = this.primaryColumns;\n }\n };\n ColumnController.prototype.putFixedColumnsFirst = function () {\n var locked = this.gridColumns.filter(function (c) { return c.getColDef().lockPosition; });\n var unlocked = this.gridColumns.filter(function (c) { return !c.getColDef().lockPosition; });\n this.gridColumns = locked.concat(unlocked);\n };\n ColumnController.prototype.addAutoGroupToGridColumns = function () {\n // add in auto-group here\n this.createGroupAutoColumnsIfNeeded();\n if (utils_1._.missing(this.groupAutoColumns)) {\n return;\n }\n this.gridColumns = this.groupAutoColumns ? this.groupAutoColumns.concat(this.gridColumns) : this.gridColumns;\n var autoColBalancedTree = this.columnFactory.createForAutoGroups(this.groupAutoColumns, this.gridBalancedTree);\n this.gridBalancedTree = autoColBalancedTree.concat(this.gridBalancedTree);\n };\n // gets called after we copy down grid columns, to make sure any part of the gui\n // that tries to draw, eg the header, it will get empty lists of columns rather\n // than stale columns. for example, the header will received gridColumnsChanged\n // event, so will try and draw, but it will draw successfully when it acts on the\n // virtualColumnsChanged event\n ColumnController.prototype.clearDisplayedColumns = function () {\n this.displayedLeftColumnTree = [];\n this.displayedRightColumnTree = [];\n this.displayedCentreColumnTree = [];\n this.displayedLeftHeaderRows = {};\n this.displayedRightHeaderRows = {};\n this.displayedCentreHeaderRows = {};\n this.displayedLeftColumns = [];\n this.displayedRightColumns = [];\n this.displayedCenterColumns = [];\n this.allDisplayedColumns = [];\n this.allDisplayedVirtualColumns = [];\n };\n ColumnController.prototype.updateGroupsAndDisplayedColumns = function (source) {\n this.updateOpenClosedVisibilityInColumnGroups();\n this.updateDisplayedColumnsFromTrees(source);\n this.updateVirtualSets();\n this.updateBodyWidths();\n // this event is picked up by the gui, headerRenderer and rowRenderer, to recalculate what columns to display\n var event = {\n type: events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.updateDisplayedColumnsFromTrees = function (source) {\n this.addToDisplayedColumns(this.displayedLeftColumnTree, this.displayedLeftColumns);\n this.addToDisplayedColumns(this.displayedCentreColumnTree, this.displayedCenterColumns);\n this.addToDisplayedColumns(this.displayedRightColumnTree, this.displayedRightColumns);\n this.setupAllDisplayedColumns();\n this.setLeftValues(source);\n };\n ColumnController.prototype.setupAllDisplayedColumns = function () {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.allDisplayedColumns = this.displayedRightColumns\n .concat(this.displayedCenterColumns)\n .concat(this.displayedLeftColumns);\n }\n else {\n this.allDisplayedColumns = this.displayedLeftColumns\n .concat(this.displayedCenterColumns)\n .concat(this.displayedRightColumns);\n }\n };\n // sets the left pixel position of each column\n ColumnController.prototype.setLeftValues = function (source) {\n this.setLeftValuesOfColumns(source);\n this.setLeftValuesOfGroups();\n };\n ColumnController.prototype.setLeftValuesOfColumns = function (source) {\n var _this = this;\n // go through each list of displayed columns\n var allColumns = this.primaryColumns.slice(0);\n // let totalColumnWidth = this.getWidthOfColsInList()\n var doingRtl = this.gridOptionsWrapper.isEnableRtl();\n [this.displayedLeftColumns, this.displayedRightColumns, this.displayedCenterColumns].forEach(function (columns) {\n if (doingRtl) {\n // when doing RTL, we start at the top most pixel (ie RHS) and work backwards\n var left_1 = _this.getWidthOfColsInList(columns);\n columns.forEach(function (column) {\n left_1 -= column.getActualWidth();\n column.setLeft(left_1, source);\n });\n }\n else {\n // otherwise normal LTR, we start at zero\n var left_2 = 0;\n columns.forEach(function (column) {\n column.setLeft(left_2, source);\n left_2 += column.getActualWidth();\n });\n }\n utils_1._.removeAllFromArray(allColumns, columns);\n });\n // items left in allColumns are columns not displayed, so remove the left position. this is\n // important for the rows, as if a col is made visible, then taken out, then made visible again,\n // we don't want the animation of the cell floating in from the old position, whatever that was.\n allColumns.forEach(function (column) {\n column.setLeft(null, source);\n });\n };\n ColumnController.prototype.setLeftValuesOfGroups = function () {\n // a groups left value is the lest left value of it's children\n [this.displayedLeftColumnTree, this.displayedRightColumnTree, this.displayedCentreColumnTree].forEach(function (columns) {\n columns.forEach(function (column) {\n if (column instanceof columnGroup_1.ColumnGroup) {\n var columnGroup = column;\n columnGroup.checkLeft();\n }\n });\n });\n };\n ColumnController.prototype.addToDisplayedColumns = function (displayedColumnTree, displayedColumns) {\n displayedColumns.length = 0;\n this.columnUtils.depthFirstDisplayedColumnTreeSearch(displayedColumnTree, function (child) {\n if (child instanceof column_1.Column) {\n displayedColumns.push(child);\n }\n });\n };\n ColumnController.prototype.updateDisplayedCenterVirtualColumns = function () {\n if (this.suppressColumnVirtualisation) {\n // no virtualisation, so don't filter\n this.allDisplayedCenterVirtualColumns = this.displayedCenterColumns;\n }\n else {\n // filter out what should be visible\n this.allDisplayedCenterVirtualColumns = this.filterOutColumnsWithinViewport();\n }\n this.allDisplayedVirtualColumns = this.allDisplayedCenterVirtualColumns\n .concat(this.displayedLeftColumns)\n .concat(this.displayedRightColumns);\n // return map of virtual col id's, for easy lookup when building the groups.\n // the map will be colId=>true, ie col id's mapping to 'true'.\n var result = {};\n this.allDisplayedVirtualColumns.forEach(function (col) {\n result[col.getId()] = true;\n });\n return result;\n };\n ColumnController.prototype.getVirtualHeaderGroupRow = function (type, dept) {\n var result;\n switch (type) {\n case column_1.Column.PINNED_LEFT:\n result = this.displayedLeftHeaderRows[dept];\n break;\n case column_1.Column.PINNED_RIGHT:\n result = this.displayedRightHeaderRows[dept];\n break;\n default:\n result = this.displayedCentreHeaderRows[dept];\n break;\n }\n if (utils_1._.missing(result)) {\n result = [];\n }\n return result;\n };\n ColumnController.prototype.updateDisplayedVirtualGroups = function (virtualColIds) {\n // go through each group, see if any of it's cols are displayed, and if yes,\n // then this group is included\n this.displayedLeftHeaderRows = {};\n this.displayedRightHeaderRows = {};\n this.displayedCentreHeaderRows = {};\n testGroup(this.displayedLeftColumnTree, this.displayedLeftHeaderRows, 0);\n testGroup(this.displayedRightColumnTree, this.displayedRightHeaderRows, 0);\n testGroup(this.displayedCentreColumnTree, this.displayedCentreHeaderRows, 0);\n function testGroup(children, result, dept) {\n var returnValue = false;\n for (var i = 0; i < children.length; i++) {\n // see if this item is within viewport\n var child = children[i];\n var addThisItem = void 0;\n if (child instanceof column_1.Column) {\n // for column, test if column is included\n addThisItem = virtualColIds[child.getId()] === true;\n }\n else {\n // if group, base decision on children\n var columnGroup = child;\n addThisItem = testGroup(columnGroup.getDisplayedChildren(), result, dept + 1);\n }\n if (addThisItem) {\n returnValue = true;\n if (!result[dept]) {\n result[dept] = [];\n }\n result[dept].push(child);\n }\n }\n return returnValue;\n }\n };\n ColumnController.prototype.updateVirtualSets = function () {\n var virtualColIds = this.updateDisplayedCenterVirtualColumns();\n this.updateDisplayedVirtualGroups(virtualColIds);\n };\n ColumnController.prototype.filterOutColumnsWithinViewport = function () {\n return utils_1._.filter(this.displayedCenterColumns, this.isColumnInViewport.bind(this));\n };\n // called from api\n ColumnController.prototype.sizeColumnsToFit = function (gridWidth, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n // avoid divide by zero\n var allDisplayedColumns = this.getAllDisplayedColumns();\n if (gridWidth <= 0 || allDisplayedColumns.length === 0) {\n return;\n }\n var colsToNotSpread = utils_1._.filter(allDisplayedColumns, function (column) {\n return column.getColDef().suppressSizeToFit === true;\n });\n var colsToSpread = utils_1._.filter(allDisplayedColumns, function (column) {\n return column.getColDef().suppressSizeToFit !== true;\n });\n // make a copy of the cols that are going to be resized\n var colsToFireEventFor = colsToSpread.slice(0);\n var finishedResizing = false;\n while (!finishedResizing) {\n finishedResizing = true;\n var availablePixels = gridWidth - this.getWidthOfColsInList(colsToNotSpread);\n if (availablePixels <= 0) {\n // no width, set everything to minimum\n colsToSpread.forEach(function (column) {\n column.setMinimum(source);\n });\n }\n else {\n var scale = availablePixels / this.getWidthOfColsInList(colsToSpread);\n // we set the pixels for the last col based on what's left, as otherwise\n // we could be a pixel or two short or extra because of rounding errors.\n var pixelsForLastCol = availablePixels;\n // backwards through loop, as we are removing items as we go\n for (var i = colsToSpread.length - 1; i >= 0; i--) {\n var column = colsToSpread[i];\n var newWidth = Math.round(column.getActualWidth() * scale);\n if (newWidth < column.getMinWidth()) {\n column.setMinimum(source);\n moveToNotSpread(column);\n finishedResizing = false;\n }\n else if (column.isGreaterThanMax(newWidth)) {\n column.setActualWidth(column.getMaxWidth(), source);\n moveToNotSpread(column);\n finishedResizing = false;\n }\n else {\n var onLastCol = i === 0;\n if (onLastCol) {\n column.setActualWidth(pixelsForLastCol, source);\n }\n else {\n column.setActualWidth(newWidth, source);\n }\n }\n pixelsForLastCol -= newWidth;\n }\n }\n }\n this.setLeftValues(source);\n this.updateBodyWidths();\n colsToFireEventFor.forEach(function (column) {\n var event = {\n type: events_1.Events.EVENT_COLUMN_RESIZED,\n column: column,\n columns: [column],\n finished: true,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: \"sizeColumnsToFit\"\n };\n _this.eventService.dispatchEvent(event);\n });\n function moveToNotSpread(column) {\n utils_1._.removeFromArray(colsToSpread, column);\n colsToNotSpread.push(column);\n }\n };\n ColumnController.prototype.buildDisplayedTrees = function (visibleColumns) {\n var leftVisibleColumns = utils_1._.filter(visibleColumns, function (column) {\n return column.getPinned() === 'left';\n });\n var rightVisibleColumns = utils_1._.filter(visibleColumns, function (column) {\n return column.getPinned() === 'right';\n });\n var centerVisibleColumns = utils_1._.filter(visibleColumns, function (column) {\n return column.getPinned() !== 'left' && column.getPinned() !== 'right';\n });\n var groupInstanceIdCreator = new groupInstanceIdCreator_1.GroupInstanceIdCreator();\n this.displayedLeftColumnTree = this.displayedGroupCreator.createDisplayedGroups(leftVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, column_1.Column.PINNED_LEFT, this.displayedLeftColumnTree);\n this.displayedRightColumnTree = this.displayedGroupCreator.createDisplayedGroups(rightVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, column_1.Column.PINNED_RIGHT, this.displayedRightColumnTree);\n this.displayedCentreColumnTree = this.displayedGroupCreator.createDisplayedGroups(centerVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, null, this.displayedCentreColumnTree);\n };\n ColumnController.prototype.updateOpenClosedVisibilityInColumnGroups = function () {\n var allColumnGroups = this.getAllDisplayedColumnGroups();\n this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n if (child instanceof columnGroup_1.ColumnGroup) {\n var columnGroup = child;\n columnGroup.calculateDisplayedColumns();\n }\n });\n };\n ColumnController.prototype.getGroupAutoColumns = function () {\n return this.groupAutoColumns;\n };\n ColumnController.prototype.createGroupAutoColumnsIfNeeded = function () {\n if (!this.autoGroupsNeedBuilding) {\n return;\n }\n this.autoGroupsNeedBuilding = false;\n var groupFullWidthRow = this.gridOptionsWrapper.isGroupUseEntireRow(this.pivotMode);\n // we never suppress auto col for pivot mode, as there is no way for user to provide group columns\n // in pivot mode. pivot mode has auto group column (provide by grid) and value columns (provided by\n // pivot feature in the grid).\n var groupSuppressAutoColumn = this.gridOptionsWrapper.isGroupSuppressAutoColumn() && !this.pivotMode;\n var groupSuppressRow = this.gridOptionsWrapper.isGroupSuppressRow();\n var groupingActive = this.rowGroupColumns.length > 0 || this.usingTreeData;\n var needAutoColumns = groupingActive && !groupSuppressAutoColumn && !groupFullWidthRow && !groupSuppressRow;\n if (needAutoColumns) {\n var newAutoGroupCols = this.autoGroupColService.createAutoGroupColumns(this.rowGroupColumns);\n var autoColsDifferent = !this.autoColsEqual(newAutoGroupCols, this.groupAutoColumns);\n if (autoColsDifferent) {\n this.groupAutoColumns = newAutoGroupCols;\n }\n }\n else {\n this.groupAutoColumns = null;\n }\n };\n ColumnController.prototype.autoColsEqual = function (colsA, colsB) {\n var bothMissing = !colsA && !colsB;\n if (bothMissing) {\n return true;\n }\n var atLeastOneListMissing = !colsA || !colsB;\n if (atLeastOneListMissing) {\n return false;\n }\n if (colsA.length !== colsB.length) {\n return false;\n }\n for (var i = 0; i < colsA.length; i++) {\n var colA = colsA[i];\n var colB = colsB[i];\n if (colA.getColId() !== colB.getColId()) {\n return false;\n }\n }\n return true;\n };\n ColumnController.prototype.getWidthOfColsInList = function (columnList) {\n var result = 0;\n for (var i = 0; i < columnList.length; i++) {\n result += columnList[i].getActualWidth();\n }\n return result;\n };\n ColumnController.prototype.getGridBalancedTree = function () {\n return this.gridBalancedTree;\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ColumnController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('expressionService'),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], ColumnController.prototype, \"expressionService\", void 0);\n __decorate([\n context_1.Autowired('columnFactory'),\n __metadata(\"design:type\", columnFactory_1.ColumnFactory)\n ], ColumnController.prototype, \"columnFactory\", void 0);\n __decorate([\n context_1.Autowired('displayedGroupCreator'),\n __metadata(\"design:type\", displayedGroupCreator_1.DisplayedGroupCreator)\n ], ColumnController.prototype, \"displayedGroupCreator\", void 0);\n __decorate([\n context_1.Autowired('autoWidthCalculator'),\n __metadata(\"design:type\", autoWidthCalculator_1.AutoWidthCalculator)\n ], ColumnController.prototype, \"autoWidthCalculator\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], ColumnController.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('columnUtils'),\n __metadata(\"design:type\", columnUtils_1.ColumnUtils)\n ], ColumnController.prototype, \"columnUtils\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], ColumnController.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired('columnAnimationService'),\n __metadata(\"design:type\", columnAnimationService_1.ColumnAnimationService)\n ], ColumnController.prototype, \"columnAnimationService\", void 0);\n __decorate([\n context_1.Autowired('autoGroupColService'),\n __metadata(\"design:type\", autoGroupColService_1.AutoGroupColService)\n ], ColumnController.prototype, \"autoGroupColService\", void 0);\n __decorate([\n context_1.Optional('aggFuncService'),\n __metadata(\"design:type\", Object)\n ], ColumnController.prototype, \"aggFuncService\", void 0);\n __decorate([\n context_1.Optional('valueCache'),\n __metadata(\"design:type\", valueCache_1.ValueCache)\n ], ColumnController.prototype, \"valueCache\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], ColumnController.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], ColumnController.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 ], ColumnController.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 ], ColumnController.prototype, \"setBeans\", null);\n ColumnController = __decorate([\n context_1.Bean('columnController')\n ], ColumnController);\n return ColumnController;\n}());\nexports.ColumnController = ColumnController;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\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 columnUtils_1 = require(\"./columnUtils\");\nvar columnGroup_1 = require(\"../entities/columnGroup\");\nvar originalColumnGroup_1 = require(\"../entities/originalColumnGroup\");\nvar context_2 = require(\"../context/context\");\nvar utils_1 = require(\"../utils\");\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar DisplayedGroupCreator = /** @class */ (function () {\n function DisplayedGroupCreator() {\n }\n DisplayedGroupCreator.prototype.createDisplayedGroups = function (\n // all displayed columns sorted - this is the columns the grid should show\n sortedVisibleColumns, \n // the tree of columns, as provided by the users, used to know what groups columns roll up into\n balancedColumnTree, \n // creates unique id's for the group\n groupInstanceIdCreator, \n // whether it's left, right or center col\n pinned, \n // we try to reuse old groups if we can, to allow gui to do animation\n oldDisplayedGroups) {\n var _this = this;\n var result = [];\n var previousRealPath;\n var previousOriginalPath;\n var oldColumnsMapped = this.mapOldGroupsById(oldDisplayedGroups);\n // go through each column, then do a bottom up comparison to the previous column, and start\n // to share groups if they converge at any point.\n sortedVisibleColumns.forEach(function (currentColumn) {\n var currentOriginalPath = _this.getOriginalPathForColumn(balancedColumnTree, currentColumn);\n var currentRealPath = [];\n var firstColumn = !previousOriginalPath;\n for (var i = 0; i < currentOriginalPath.length; i++) {\n if (firstColumn || currentOriginalPath[i] !== previousOriginalPath[i]) {\n // new group needed\n var newGroup = _this.createColumnGroup(currentOriginalPath[i], groupInstanceIdCreator, oldColumnsMapped, pinned);\n currentRealPath[i] = newGroup;\n // if top level, add to result, otherwise add to parent\n if (i == 0) {\n result.push(newGroup);\n }\n else {\n currentRealPath[i - 1].addChild(newGroup);\n }\n }\n else {\n // reuse old group\n currentRealPath[i] = previousRealPath[i];\n }\n }\n var noColumnGroups = currentRealPath.length === 0;\n if (noColumnGroups) {\n // if we are not grouping, then the result of the above is an empty\n // path (no groups), and we just add the column to the root list.\n result.push(currentColumn);\n }\n else {\n var leafGroup = utils_1._.last(currentRealPath);\n leafGroup.addChild(currentColumn);\n }\n previousRealPath = currentRealPath;\n previousOriginalPath = currentOriginalPath;\n });\n this.setupParentsIntoColumns(result, null);\n return result;\n };\n DisplayedGroupCreator.prototype.createColumnGroup = function (originalGroup, groupInstanceIdCreator, oldColumnsMapped, pinned) {\n var groupId = originalGroup.getGroupId();\n var instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);\n var uniqueId = columnGroup_1.ColumnGroup.createUniqueId(groupId, instanceId);\n var columnGroup = oldColumnsMapped[uniqueId];\n // if the user is setting new colDefs, it is possible that the id's overlap, and we\n // would have a false match from above. so we double check we are talking about the\n // same original column group.\n if (columnGroup && columnGroup.getOriginalColumnGroup() !== originalGroup) {\n columnGroup = null;\n }\n if (utils_1._.exists(columnGroup)) {\n // clean out the old column group here, as we will be adding children into it again\n columnGroup.reset();\n }\n else {\n columnGroup = new columnGroup_1.ColumnGroup(originalGroup, groupId, instanceId, pinned);\n this.context.wireBean(columnGroup);\n }\n return columnGroup;\n };\n // returns back a 2d map of ColumnGroup as follows: groupId -> instanceId -> ColumnGroup\n DisplayedGroupCreator.prototype.mapOldGroupsById = function (displayedGroups) {\n var result = {};\n var recursive = function (columnsOrGroups) {\n columnsOrGroups.forEach(function (columnOrGroup) {\n if (columnOrGroup instanceof columnGroup_1.ColumnGroup) {\n var columnGroup = columnOrGroup;\n result[columnOrGroup.getUniqueId()] = columnGroup;\n recursive(columnGroup.getChildren());\n }\n });\n };\n if (displayedGroups) {\n recursive(displayedGroups);\n }\n return result;\n };\n DisplayedGroupCreator.prototype.setupParentsIntoColumns = function (columnsOrGroups, parent) {\n var _this = this;\n columnsOrGroups.forEach(function (columnsOrGroup) {\n columnsOrGroup.setParent(parent);\n if (columnsOrGroup instanceof columnGroup_1.ColumnGroup) {\n var columnGroup = columnsOrGroup;\n _this.setupParentsIntoColumns(columnGroup.getChildren(), columnGroup);\n }\n });\n };\n // private createFakePath(balancedColumnTree: OriginalColumnGroupChild[], column: Column): OriginalColumnGroup[] {\n // let fakePath: OriginalColumnGroup[] = [];\n // let currentChildren = balancedColumnTree;\n // // this while loop does search on the balanced tree, so our result is the right length\n // let index = 0;\n // while (currentChildren && currentChildren[0] && currentChildren[0] instanceof OriginalColumnGroup) {\n // // putting in a deterministic fake id, in case the API in the future needs to reference the col\n // let fakeGroup = new OriginalColumnGroup(null, 'FAKE_PATH_' + index, true);\n // this.context.wireBean(fakeGroup);\n //\n // // fakePath.setChildren(children);\n //\n // fakePath.push(fakeGroup);\n // currentChildren = (currentChildren[0]).getChildren();\n // index++;\n // }\n //\n // fakePath.forEach( (fakePathGroup: OriginalColumnGroup, i: number) => {\n // let lastItemInList = i === fakePath.length-1;\n // let child = lastItemInList ? column : fakePath[i+1];\n // fakePathGroup.setChildren([child]);\n // });\n //\n // return fakePath;\n // }\n DisplayedGroupCreator.prototype.getOriginalPathForColumn = function (balancedColumnTree, column) {\n var result = [];\n var found = false;\n recursePath(balancedColumnTree, 0);\n // it's possible we didn't find a path. this happens if the column is generated\n // by the grid (auto-group), in that the definition didn't come from the client. in this case,\n // we create a fake original path.\n if (found) {\n return result;\n }\n else {\n console.warn('could not get path');\n return null;\n // return this.createFakePath(balancedColumnTree, column);\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 __decorate([\n context_1.Autowired('columnUtils'),\n __metadata(\"design:type\", columnUtils_1.ColumnUtils)\n ], DisplayedGroupCreator.prototype, \"columnUtils\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_2.Context)\n ], DisplayedGroupCreator.prototype, \"context\", void 0);\n DisplayedGroupCreator = __decorate([\n context_2.Bean('displayedGroupCreator')\n ], DisplayedGroupCreator);\n return DisplayedGroupCreator;\n}());\nexports.DisplayedGroupCreator = DisplayedGroupCreator;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\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 textCellEditor_1 = require(\"../../rendering/cellEditors/textCellEditor\");\nvar context_1 = require(\"../../context/context\");\nvar dateFilter_1 = require(\"../../filter/provided/date/dateFilter\");\nvar headerComp_1 = require(\"../../headerRendering/header/headerComp\");\nvar headerGroupComp_1 = require(\"../../headerRendering/headerGroup/headerGroupComp\");\nvar groupCellRenderer_1 = require(\"../../rendering/cellRenderers/groupCellRenderer\");\nvar animateShowChangeCellRenderer_1 = require(\"../../rendering/cellRenderers/animateShowChangeCellRenderer\");\nvar animateSlideCellRenderer_1 = require(\"../../rendering/cellRenderers/animateSlideCellRenderer\");\nvar loadingCellRenderer_1 = require(\"../../rendering/cellRenderers/loadingCellRenderer\");\nvar selectCellEditor_1 = require(\"../../rendering/cellEditors/selectCellEditor\");\nvar popupTextCellEditor_1 = require(\"../../rendering/cellEditors/popupTextCellEditor\");\nvar popupSelectCellEditor_1 = require(\"../../rendering/cellEditors/popupSelectCellEditor\");\nvar largeTextCellEditor_1 = require(\"../../rendering/cellEditors/largeTextCellEditor\");\nvar numberFilter_1 = require(\"../../filter/provided/number/numberFilter\");\nvar loadingOverlayComponent_1 = require(\"../../rendering/overlays/loadingOverlayComponent\");\nvar noRowsOverlayComponent_1 = require(\"../../rendering/overlays/noRowsOverlayComponent\");\nvar tooltipComponent_1 = require(\"../../rendering/tooltipComponent\");\nvar utils_1 = require(\"../../utils\");\nvar defaultDateComponent_1 = require(\"../../filter/provided/date/defaultDateComponent\");\nvar dateFloatingFilter_1 = require(\"../../filter/provided/date/dateFloatingFilter\");\nvar textFilter_1 = require(\"../../filter/provided/text/textFilter\");\nvar numberFloatingFilter_1 = require(\"../../filter/provided/number/numberFloatingFilter\");\nvar textFloatingFilter_1 = require(\"../../filter/provided/text/textFloatingFilter\");\nvar RegisteredComponentSource;\n(function (RegisteredComponentSource) {\n RegisteredComponentSource[RegisteredComponentSource[\"DEFAULT\"] = 0] = \"DEFAULT\";\n RegisteredComponentSource[RegisteredComponentSource[\"REGISTERED\"] = 1] = \"REGISTERED\";\n})(RegisteredComponentSource = exports.RegisteredComponentSource || (exports.RegisteredComponentSource = {}));\nvar UserComponentRegistry = /** @class */ (function () {\n function UserComponentRegistry() {\n this.agGridDefaults = {\n //date\n agDateInput: defaultDateComponent_1.DefaultDateComponent,\n //header\n agColumnHeader: headerComp_1.HeaderComp,\n agColumnGroupHeader: headerGroupComp_1.HeaderGroupComp,\n //floating filters\n agTextColumnFloatingFilter: textFloatingFilter_1.TextFloatingFilter,\n agNumberColumnFloatingFilter: numberFloatingFilter_1.NumberFloatingFilter,\n agDateColumnFloatingFilter: dateFloatingFilter_1.DateFloatingFilter,\n // renderers\n agAnimateShowChangeCellRenderer: animateShowChangeCellRenderer_1.AnimateShowChangeCellRenderer,\n agAnimateSlideCellRenderer: animateSlideCellRenderer_1.AnimateSlideCellRenderer,\n agGroupCellRenderer: groupCellRenderer_1.GroupCellRenderer,\n agGroupRowRenderer: groupCellRenderer_1.GroupCellRenderer,\n agLoadingCellRenderer: loadingCellRenderer_1.LoadingCellRenderer,\n //editors\n agCellEditor: textCellEditor_1.TextCellEditor,\n agTextCellEditor: textCellEditor_1.TextCellEditor,\n agSelectCellEditor: selectCellEditor_1.SelectCellEditor,\n agPopupTextCellEditor: popupTextCellEditor_1.PopupTextCellEditor,\n agPopupSelectCellEditor: popupSelectCellEditor_1.PopupSelectCellEditor,\n agLargeTextCellEditor: largeTextCellEditor_1.LargeTextCellEditor,\n //filter\n agTextColumnFilter: textFilter_1.TextFilter,\n agNumberColumnFilter: numberFilter_1.NumberFilter,\n agDateColumnFilter: dateFilter_1.DateFilter,\n //overlays\n agLoadingOverlay: loadingOverlayComponent_1.LoadingOverlayComponent,\n agNoRowsOverlay: noRowsOverlayComponent_1.NoRowsOverlayComponent,\n // tooltips\n agTooltipComponent: tooltipComponent_1.TooltipComponent\n };\n this.agDeprecatedNames = {\n set: {\n newComponentName: 'agSetColumnFilter',\n propertyHolder: 'filter'\n },\n text: {\n newComponentName: 'agTextColumnFilter',\n propertyHolder: 'filter'\n },\n number: {\n newComponentName: 'agNumberColumnFilter',\n propertyHolder: 'filter'\n },\n date: {\n newComponentName: 'agDateColumnFilter',\n propertyHolder: 'filter'\n },\n group: {\n newComponentName: 'agGroupCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n animateShowChange: {\n newComponentName: 'agAnimateShowChangeCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n animateSlide: {\n newComponentName: 'agAnimateSlideCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n select: {\n newComponentName: 'agSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n largeText: {\n newComponentName: 'agLargeTextCellEditor',\n propertyHolder: 'cellEditor'\n },\n popupSelect: {\n newComponentName: 'agPopupSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n popupText: {\n newComponentName: 'agPopupTextCellEditor',\n propertyHolder: 'cellEditor'\n },\n richSelect: {\n newComponentName: 'agRichSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n headerComponent: {\n newComponentName: 'agColumnHeader',\n propertyHolder: 'headerComponent'\n }\n };\n this.jsComponents = {};\n this.frameworkComponents = {};\n }\n UserComponentRegistry.prototype.init = function () {\n var _this = this;\n var enterpriseDefaultComponents = this.context.getEnterpriseDefaultComponents();\n if (enterpriseDefaultComponents) {\n utils_1._.forEach(enterpriseDefaultComponents, function (config) {\n _this.registerDefaultComponent(config.componentName, config.theClass);\n });\n }\n if (this.gridOptions.components != null) {\n Object.keys(this.gridOptions.components).forEach(function (it) {\n _this.registerComponent(it, _this.gridOptions.components[it]);\n });\n }\n if (this.gridOptions.frameworkComponents != null) {\n Object.keys(this.gridOptions.frameworkComponents).forEach(function (it) {\n _this.registerFwComponent(it, _this.gridOptions.frameworkComponents[it]);\n });\n }\n };\n UserComponentRegistry.prototype.registerDefaultComponent = function (rawName, component) {\n var name = this.translateIfDeprecated(rawName);\n if (this.agGridDefaults[name]) {\n console.error(\"Trying to overwrite a default component. You should call registerComponent\");\n return;\n }\n this.agGridDefaults[name] = component;\n };\n UserComponentRegistry.prototype.registerComponent = function (rawName, component) {\n var name = this.translateIfDeprecated(rawName);\n if (this.frameworkComponents[name]) {\n console.error(\"Trying to register a component that you have already registered for frameworks: \" + name);\n return;\n }\n this.jsComponents[name] = component;\n };\n /**\n * B the business interface (ie IHeader)\n * A the agGridComponent interface (ie IHeaderComp). The final object acceptable by ag-grid\n */\n UserComponentRegistry.prototype.registerFwComponent = function (rawName, component) {\n var name = this.translateIfDeprecated(rawName);\n if (this.jsComponents[name]) {\n console.error(\"Trying to register a component that you have already registered for plain javascript: \" + name);\n return;\n }\n this.frameworkComponents[name] = component;\n };\n /**\n * B the business interface (ie IHeader)\n * A the agGridComponent interface (ie IHeaderComp). The final object acceptable by ag-grid\n */\n UserComponentRegistry.prototype.retrieve = function (rawName) {\n var name = this.translateIfDeprecated(rawName);\n if (this.frameworkComponents[name]) {\n return {\n componentFromFramework: true,\n component: this.frameworkComponents[name],\n source: RegisteredComponentSource.REGISTERED\n };\n }\n if (this.jsComponents[name]) {\n return {\n componentFromFramework: false,\n component: this.jsComponents[name],\n source: RegisteredComponentSource.REGISTERED\n };\n }\n if (this.agGridDefaults[name]) {\n return this.agGridDefaults[name] ?\n {\n componentFromFramework: false,\n component: this.agGridDefaults[name],\n source: RegisteredComponentSource.DEFAULT\n } :\n null;\n }\n if (Object.keys(this.agGridDefaults).indexOf(name) < 0) {\n console.warn(\"ag-Grid: Looking for component [\" + name + \"] but it wasn't found.\");\n }\n return null;\n };\n UserComponentRegistry.prototype.translateIfDeprecated = function (raw) {\n var deprecatedInfo = this.agDeprecatedNames[raw];\n if (deprecatedInfo != null) {\n utils_1._.doOnce(function () {\n console.warn(\"ag-grid. Since v15.0 component names have been renamed to be namespaced. You should rename \" + deprecatedInfo.propertyHolder + \":\" + raw + \" to \" + deprecatedInfo.propertyHolder + \":\" + deprecatedInfo.newComponentName);\n }, 'DEPRECATE_COMPONENT_' + raw);\n return deprecatedInfo.newComponentName;\n }\n return raw;\n };\n __decorate([\n context_1.Autowired('gridOptions'),\n __metadata(\"design:type\", Object)\n ], UserComponentRegistry.prototype, \"gridOptions\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], UserComponentRegistry.prototype, \"context\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], UserComponentRegistry.prototype, \"init\", null);\n UserComponentRegistry = __decorate([\n context_1.Bean('userComponentRegistry')\n ], UserComponentRegistry);\n return UserComponentRegistry;\n}());\nexports.UserComponentRegistry = UserComponentRegistry;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\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 componentMetadataProvider_1 = require(\"./componentMetadataProvider\");\nvar utils_1 = require(\"../../utils\");\nvar AgComponentUtils = /** @class */ (function () {\n function AgComponentUtils() {\n }\n AgComponentUtils.prototype.adaptFunction = function (propertyName, hardcodedJsFunction, componentFromFramework, source) {\n if (hardcodedJsFunction == null) {\n return {\n component: null,\n componentFromFramework: componentFromFramework,\n source: source,\n paramsFromSelector: null\n };\n }\n var metadata = this.componentMetadataProvider.retrieve(propertyName);\n if (metadata && metadata.functionAdapter) {\n return {\n componentFromFramework: componentFromFramework,\n component: metadata.functionAdapter(hardcodedJsFunction),\n source: source,\n paramsFromSelector: null\n };\n }\n return null;\n };\n AgComponentUtils.prototype.adaptCellRendererFunction = function (callback) {\n var Adapter = /** @class */ (function () {\n function Adapter() {\n }\n Adapter.prototype.refresh = function (params) {\n return false;\n };\n Adapter.prototype.getGui = function () {\n var callbackResult = callback(this.params);\n var type = typeof callbackResult;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return utils_1._.loadTemplate('' + callbackResult + '');\n }\n else {\n return callbackResult;\n }\n };\n Adapter.prototype.init = function (params) {\n this.params = params;\n };\n return Adapter;\n }());\n return Adapter;\n };\n AgComponentUtils.prototype.doesImplementIComponent = function (candidate) {\n if (!candidate) {\n return false;\n }\n return candidate.prototype && 'getGui' in candidate.prototype;\n };\n __decorate([\n context_1.Autowired(\"componentMetadataProvider\"),\n __metadata(\"design:type\", componentMetadataProvider_1.ComponentMetadataProvider)\n ], AgComponentUtils.prototype, \"componentMetadataProvider\", void 0);\n AgComponentUtils = __decorate([\n context_1.Bean(\"agComponentUtils\")\n ], AgComponentUtils);\n return AgComponentUtils;\n}());\nexports.AgComponentUtils = AgComponentUtils;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\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 column_1 = require(\"../entities/column\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"./columnController\");\nvar columnFactory_1 = require(\"./columnFactory\");\nvar constants_1 = require(\"../constants\");\nvar utils_1 = require(\"../utils\");\nvar AutoGroupColService = /** @class */ (function () {\n function AutoGroupColService() {\n }\n AutoGroupColService_1 = AutoGroupColService;\n AutoGroupColService.prototype.createAutoGroupColumns = function (rowGroupColumns) {\n var _this = this;\n var groupAutoColumns = [];\n var doingTreeData = this.gridOptionsWrapper.isTreeData();\n var doingMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();\n if (doingTreeData && doingMultiAutoColumn) {\n console.warn('ag-Grid: you cannot mix groupMultiAutoColumn with treeData, only one column can be used to display groups when doing tree data');\n doingMultiAutoColumn = false;\n }\n // if doing groupMultiAutoColumn, then we call the method multiple times, once\n // for each column we are grouping by\n if (doingMultiAutoColumn) {\n rowGroupColumns.forEach(function (rowGroupCol, index) {\n groupAutoColumns.push(_this.createOneAutoGroupColumn(rowGroupCol, index));\n });\n }\n else {\n groupAutoColumns.push(this.createOneAutoGroupColumn());\n }\n return groupAutoColumns;\n };\n // rowGroupCol and index are missing if groupMultiAutoColumn=false\n AutoGroupColService.prototype.createOneAutoGroupColumn = function (rowGroupCol, index) {\n // if one provided by user, use it, otherwise create one\n var defaultAutoColDef = this.generateDefaultColDef(rowGroupCol);\n // if doing multi, set the field\n var colId;\n if (rowGroupCol) {\n colId = constants_1.Constants.GROUP_AUTO_COLUMN_ID + \"-\" + rowGroupCol.getId();\n }\n else {\n colId = AutoGroupColService_1.GROUP_AUTO_COLUMN_BUNDLE_ID;\n }\n var userAutoColDef = this.gridOptionsWrapper.getAutoGroupColumnDef();\n utils_1._.mergeDeep(defaultAutoColDef, userAutoColDef);\n defaultAutoColDef = this.columnFactory.mergeColDefs(defaultAutoColDef);\n defaultAutoColDef.colId = colId;\n // For tree data the filter is always allowed\n if (!this.gridOptionsWrapper.isTreeData()) {\n // we would only allow filter if the user has provided field or value getter. otherwise the filter\n // would not be able to work.\n var noFieldOrValueGetter = utils_1._.missing(defaultAutoColDef.field) && utils_1._.missing(defaultAutoColDef.valueGetter) && utils_1._.missing(defaultAutoColDef.filterValueGetter);\n if (noFieldOrValueGetter) {\n defaultAutoColDef.filter = false;\n }\n }\n // if showing many cols, we don't want to show more than one with a checkbox for selection\n if (index && index > 0) {\n defaultAutoColDef.headerCheckboxSelection = false;\n }\n var newCol = new column_1.Column(defaultAutoColDef, null, colId, true);\n this.context.wireBean(newCol);\n return newCol;\n };\n AutoGroupColService.prototype.generateDefaultColDef = function (rowGroupCol) {\n var userAutoColDef = this.gridOptionsWrapper.getAutoGroupColumnDef();\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var defaultAutoColDef = {\n headerName: localeTextFunc('group', 'Group')\n };\n var userHasProvidedGroupCellRenderer = userAutoColDef && (userAutoColDef.cellRenderer || userAutoColDef.cellRendererFramework);\n // only add the default group cell renderer if user hasn't provided one\n if (!userHasProvidedGroupCellRenderer) {\n defaultAutoColDef.cellRenderer = 'agGroupCellRenderer';\n }\n // we never allow moving the group column\n // defaultAutoColDef.suppressMovable = true;\n if (rowGroupCol) {\n var rowGroupColDef = rowGroupCol.getColDef();\n utils_1._.assign(defaultAutoColDef, {\n // cellRendererParams.groupKey: colDefToCopy.field;\n headerName: this.columnController.getDisplayNameForColumn(rowGroupCol, 'header'),\n headerValueGetter: rowGroupColDef.headerValueGetter\n });\n if (rowGroupColDef.cellRenderer) {\n utils_1._.assign(defaultAutoColDef, {\n cellRendererParams: {\n innerRenderer: rowGroupColDef.cellRenderer,\n innerRendererParams: rowGroupColDef.cellRendererParams\n }\n });\n }\n defaultAutoColDef.showRowGroup = rowGroupCol.getColId();\n }\n else {\n defaultAutoColDef.showRowGroup = true;\n }\n return defaultAutoColDef;\n };\n var AutoGroupColService_1;\n AutoGroupColService.GROUP_AUTO_COLUMN_BUNDLE_ID = constants_1.Constants.GROUP_AUTO_COLUMN_ID;\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], AutoGroupColService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], AutoGroupColService.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], AutoGroupColService.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('columnFactory'),\n __metadata(\"design:type\", columnFactory_1.ColumnFactory)\n ], AutoGroupColService.prototype, \"columnFactory\", void 0);\n AutoGroupColService = AutoGroupColService_1 = __decorate([\n context_1.Bean('autoGroupColService')\n ], AutoGroupColService);\n return AutoGroupColService;\n}());\nexports.AutoGroupColService = AutoGroupColService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\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: ['refresh']\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: ['refresh', '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 v21.2.2\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 v21.2.2\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 v21.2.2\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 v21.2.2\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 v21.2.2\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 v21.2.2\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.colDef;\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 // const p = new Promise(resolve => {\n // setTimeout( ()=> {\n // resolve(componentInstance);\n // }, 1000);\n // });\n // return p;\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 v21.2.2\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 v21.2.2\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 v21.2.2\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"],"sourceRoot":""}