{"version":3,"sources":["../node_modules/@ag-grid-community/core/dist/es6/entities/column.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/simpleFilter.js","../node_modules/@ag-grid-community/core/dist/es6/dragAndDrop/dragAndDropService.js","../node_modules/@ag-grid-community/core/dist/es6/eventKeys.js","../node_modules/@ag-grid-community/core/dist/es6/entities/rowNode.js","../node_modules/@ag-grid-community/core/dist/es6/context/beanStub.js","../node_modules/@ag-grid-community/core/dist/es6/entities/originalColumnGroup.js","../node_modules/@ag-grid-community/core/dist/es6/entities/columnGroup.js","../node_modules/@ag-grid-community/core/dist/es6/eventService.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/scalerFilter.js","../node_modules/@ag-grid-community/core/dist/es6/components/componentUtil.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/providedFilter.js","../node_modules/@ag-grid-community/core/dist/es6/components/framework/userComponentFactory.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/date/defaultDateComponent.js","../node_modules/@ag-grid-community/core/dist/es6/filter/floating/provided/simpleFloatingFilter.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/date/dateFloatingFilter.js","../node_modules/@ag-grid-community/core/dist/es6/filter/floating/provided/textInputFloatingFilter.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/number/numberFloatingFilter.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/text/textFloatingFilter.js","../node_modules/@ag-grid-community/core/dist/es6/components/framework/userComponentRegistry.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/date/dateCompWrapper.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/date/dateFilter.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/number/numberFilter.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/text/textFilter.js","../node_modules/@ag-grid-community/core/dist/es6/components/colDefUtil.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/columnKeyCreator.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/columnController.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/groupInstanceIdCreator.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/columnUtils.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/displayedGroupCreator.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/columnApi.js","../node_modules/@ag-grid-community/core/dist/es6/filter/filterManager.js","../node_modules/@ag-grid-community/core/dist/es6/dragAndDrop/dragService.js","../node_modules/@ag-grid-community/core/dist/es6/focusedCellController.js","../node_modules/@ag-grid-community/core/dist/es6/cellNavigationService.js","../node_modules/@ag-grid-community/core/dist/es6/alignedGridsService.js","../node_modules/@ag-grid-community/core/dist/es6/environment.js","../node_modules/@ag-grid-community/core/dist/es6/entities/rowPosition.js","../node_modules/@ag-grid-community/core/dist/es6/entities/cellPosition.js","../node_modules/@ag-grid-community/core/dist/es6/entities/defaultColumnTypes.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/columnFactory.js","../node_modules/@ag-grid-community/core/dist/es6/entities/sideBar.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/optionsFactory.js","../node_modules/@ag-grid-community/core/dist/es6/components/agGridNg1.js","../node_modules/@ag-grid-community/core/dist/es6/components/agGridWebComponent.js","../node_modules/@ag-grid-community/core/dist/es6/components/framework/frameworkComponentWrapper.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/autoGroupColService.js","../node_modules/@ag-grid-community/core/dist/es6/components/framework/agComponentUtils.js","../node_modules/@ag-grid-community/core/dist/es6/components/framework/componentMetadataProvider.js","../node_modules/@ag-grid-community/core/dist/es6/context/context.js","../node_modules/@ag-grid-community/core/dist/es6/filter/floating/provided/readOnlyFloatingFilter.js","../node_modules/@ag-grid-community/core/dist/es6/filter/floating/floatingFilterWrapper.js","../node_modules/@ag-grid-community/core/dist/es6/constants.js","../node_modules/@ag-grid-community/core/dist/es6/events.js"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","Column","colDef","userProvidedColDef","colId","primary","this","moving","menuVisible","filterActive","eventService","rowGroupActive","pivotActive","aggregationActive","visible","hide","sort","sortedAt","prototype","setColDef","getUserProvidedColDef","setParent","parent","getParent","setOriginalParent","originalParent","getOriginalParent","initialise","setPinned","pinned","minColWidth","gridOptionsWrapper","getMinColWidth","maxColWidth","getMaxColWidth","minWidth","maxWidth","flex","actualWidth","columnUtils","calculateColInitialWidth","suppressDotNotation","isSuppressFieldDotNotation","fieldContainsDots","exists","field","indexOf","tooltipFieldContainsDots","tooltipField","validate","isEmptyGroup","isRowGroupDisplayed","missing","showRowGroup","showingAllGroups","showingThisGroup","getUniqueId","getId","isPrimary","isFilterAllowed","filterDefined","filter","filterFramework","isFieldContainsDots","isTooltipFieldContainsDots","colDefAny","warnOnce","msg","obj","doOnce","console","warn","isRegistered","RowGroupingModule","forEach","item","RichSelectModule","cellEditor","isTreeData","width","get","floatingCellRenderer","pinnedRowCellRenderer","floatingRendererFramework","pinnedRowCellRendererFramework","floatingRendererParams","pinnedRowCellRendererParams","floatingValueFormatter","pinnedRowValueFormatter","cellFormatter","valueFormatter","headerCellTemplate","headerCellRenderer","volatile","suppressSorting","sortable","suppressFilter","suppressResize","resizable","tooltip","tooltipValueGetter","suppressToolPanel","suppressColumnsToolPanel","addEventListener","eventType","listener","removeEventListener","createIsColumnFuncParams","rowNode","node","data","column","context","getContext","api","getApi","columnApi","getColumnApi","isSuppressNavigable","suppressNavigable","params","userFunc","isCellEditable","group","isEnableGroupEdit","isColumnFunc","editable","isRowDrag","rowDrag","isDndSource","dndSource","isCellCheckboxSelection","checkboxSelection","isSuppressPaste","suppressPaste","isResizable","value","setMoving","source","dispatchEvent","createColumnEvent","EVENT_MOVING_CHANGED","type","gridApi","columns","isMoving","getSort","setSort","EVENT_SORT_CHANGED","setMenuVisible","EVENT_MENU_VISIBLE_CHANGED","isMenuVisible","isSortAscending","SORT_ASC","isSortDescending","SORT_DESC","isSortNone","isSorting","getSortedAt","setSortedAt","setAggFunc","aggFunc","getAggFunc","getLeft","left","getOldLeft","oldLeft","getRight","setLeft","EVENT_LEFT_CHANGED","isFilterActive","setFilterActive","active","additionalEventAttributes","EVENT_FILTER_ACTIVE_CHANGED","filterChangedEvent","EVENT_FILTER_CHANGED","mergeDeep","PINNED_LEFT","PINNED_RIGHT","setFirstRightPinned","firstRightPinned","EVENT_FIRST_RIGHT_PINNED_CHANGED","setLastLeftPinned","lastLeftPinned","EVENT_LAST_LEFT_PINNED_CHANGED","isFirstRightPinned","isLastLeftPinned","isPinned","isPinnedLeft","isPinnedRight","getPinned","setVisible","newValue","EVENT_VISIBLE_CHANGED","isVisible","getColDef","getColumnGroupShow","columnGroupShow","getColId","getDefinition","getActualWidth","createBaseColDefParams","getColSpan","colSpan","Math","max","getRowSpan","rowSpan","setActualWidth","min","EVENT_WIDTH_CHANGED","isGreaterThanMax","getMinWidth","getMaxWidth","getFlex","setMinimum","setRowGroupActive","rowGroup","EVENT_ROW_GROUP_CHANGED","isRowGroupActive","setPivotActive","pivot","EVENT_PIVOT_CHANGED","isPivotActive","isAnyFunctionActive","isValueActive","isAnyFunctionAllowed","isAllowPivot","isAllowRowGroup","isAllowValue","setValueActive","EVENT_VALUE_CHANGED","enablePivot","enableValue","enableRowGroup","getMenuTabs","defaultValues","menuTabs","isLockPosition","lockPosition","isLockVisible","lockVisible","isLockPinned","lockPinned","ConditionPosition","__extends","extendStatics","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","create","DEFAULT_TRANSLATIONS","loadingOoo","empty","equals","notEqual","lessThan","greaterThan","inRange","lessThanOrEqual","greaterThanOrEqual","filterOoo","contains","notContains","startsWith","endsWith","searchOoo","selectAll","applyFilter","clearFilter","andCondition","orCondition","SimpleFilter","_super","apply","showValueFrom","doesFilterHaveHiddenInput","EMPTY","showValueTo","IN_RANGE","onFloatingFilterChanged","setValueFromFloatingFilter","setTypeFromFloatingFilter","onUiChanged","eType1","eType2","eJoinOperatorAnd","checked","getModelFromUi","isConditionUiComplete","One","isAllowTwoConditions","Two","filterType","getFilterType","operator","getJoinOperator","condition1","createCondition","condition2","getCondition1Type","getCondition2Type","eJoinOperatorOr","areModelsEqual","a","res","aIsSimple","bIsSimple","aSimple","bSimple","areSimpleModelsEqual","aCombined","bCombined","setModelIntoUi","model","combinedModel","orChecked","setConditionIntoUi","simpleModel","optionsFactory","getDefaultOption","doesFilterPass","getModel","firstResult","individualConditionPasses","secondResult","setParams","call","simpleFilterParams","init","getDefaultFilterOptions","allowTwoConditions","suppressAndOrCondition","putOptionsIntoDropdown","addChangedListeners","_this","filterOptions","getFilterOptions","option","createOption","displayKey","localName","translate","eOption","document","createElement","text","add","readOnly","disabled","createBodyTemplate","valueTemplate1","createValueTemplate","valueTemplate2","uniqueGroupId","getCompId","getLocaleTextFunc","optionsTemplate1","updateUiVisibility","firstConditionComplete","showSecondFilter","setDisplayed","eCondition2Body","eJoinOperatorPanel","resetUiToDefaults","defaultOption","toTranslate","defaultTranslation","getCustomOption","displayName","addDestroyableEventListener","customFilterOption","hideFilterInput","EQUALS","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","CONTAINS","NOT_CONTAINS","STARTS_WITH","ENDS_WITH","DragSourceType","VerticalDirection","HorizontalDirection","__param","paramIndex","decorator","DragAndDropService","dragSourceAndParamsList","dropTargets","DragAndDropService_1","ePinnedIcon","createIcon","ePlusIcon","eHiddenIcon","eMoveIcon","eLeftIcon","eRightIcon","eGroupIcon","eAggregateIcon","ePivotIcon","eDropNotAllowedIcon","setBeans","loggerFactory","logger","addDragSource","dragSource","allowTouch","eElement","dragStartPixels","onDragStart","bind","onDragStop","onDragging","push","dragService","removeDragSource","sourceAndParams","find","removeFromArray","destroy","nudge","dragging","eventLastTime","mouseEvent","dragItem","getDragItem","lastDropTarget","dragSourceDropTarget","onDragStarted","createGhost","onDragStopped","draggingEvent","createDropTargetEvent","removeGhost","fromNudge","hDirection","getHorizontalDirection","vDirection","getVerticalDirection","positionGhost","dropTarget","isMouseOnDropTarget","leaveLastTargetIfExists","enterDragTargetIfExists","onDragEnter","dragEnterEvent","setGhostIcon","getIconName","onDragLeave","dragLeaveEvent","getAllContainersFromDropTarget","containers","getContainer","secondaryContainers","getSecondaryContainers","concat","mouseOverTarget","eContainer","rect","getBoundingClientRect","height","horizontalFit","clientX","right","verticalFit","clientY","top","bottom","isInterestedIn","addDropTarget","event","Left","Right","Up","Down","x","y","ghostHeight","eGhost","browserWidth","getBodyWidth","browserHeight","getBodyHeight","pageY","pageX","usrDocument","getDocument","windowScrollY","window","pageYOffset","documentElement","scrollTop","windowScrollX","pageXOffset","scrollLeft","clientWidth","clientHeight","style","eGhostParent","removeChild","loadTemplate","GHOST_TEMPLATE","theme","environment","getTheme","addCssClass","eGhostIcon","querySelector","innerHTML","escape","dragItemName","appendChild","iconName","shake","eIcon","clearElement","ICON_ADD","ICON_PINNED","ICON_MOVE","ICON_LEFT","ICON_RIGHT","ICON_GROUP","ICON_AGGREGATE","ICON_PIVOT","ICON_NOT_ALLOWED","addOrRemoveCssClass","Events","EVENT_COLUMN_EVERYTHING_CHANGED","EVENT_NEW_COLUMNS_LOADED","EVENT_COLUMN_PIVOT_MODE_CHANGED","EVENT_COLUMN_ROW_GROUP_CHANGED","EVENT_EXPAND_COLLAPSE_ALL","EVENT_COLUMN_PIVOT_CHANGED","EVENT_GRID_COLUMNS_CHANGED","EVENT_COLUMN_VALUE_CHANGED","EVENT_COLUMN_MOVED","EVENT_COLUMN_VISIBLE","EVENT_COLUMN_PINNED","EVENT_COLUMN_GROUP_OPENED","EVENT_COLUMN_RESIZED","EVENT_DISPLAYED_COLUMNS_CHANGED","EVENT_VIRTUAL_COLUMNS_CHANGED","EVENT_ROW_GROUP_OPENED","EVENT_ROW_DATA_CHANGED","EVENT_ROW_DATA_UPDATED","EVENT_PINNED_ROW_DATA_CHANGED","EVENT_RANGE_SELECTION_CHANGED","EVENT_CHART_RANGE_SELECTION_CHANGED","EVENT_CHART_OPTIONS_CHANGED","EVENT_TOOL_PANEL_VISIBLE_CHANGED","EVENT_MODEL_UPDATED","EVENT_PASTE_START","EVENT_PASTE_END","EVENT_FILL_START","EVENT_FILL_END","EVENT_CELL_CLICKED","EVENT_CELL_DOUBLE_CLICKED","EVENT_CELL_MOUSE_DOWN","EVENT_CELL_CONTEXT_MENU","EVENT_CELL_VALUE_CHANGED","EVENT_ROW_VALUE_CHANGED","EVENT_CELL_FOCUSED","EVENT_ROW_SELECTED","EVENT_SELECTION_CHANGED","EVENT_CELL_KEY_DOWN","EVENT_CELL_KEY_PRESS","EVENT_CELL_MOUSE_OVER","EVENT_CELL_MOUSE_OUT","EVENT_FILTER_MODIFIED","EVENT_FILTER_OPENED","EVENT_VIRTUAL_ROW_REMOVED","EVENT_ROW_CLICKED","EVENT_ROW_DOUBLE_CLICKED","EVENT_GRID_READY","EVENT_GRID_SIZE_CHANGED","EVENT_VIEWPORT_CHANGED","EVENT_FIRST_DATA_RENDERED","EVENT_DRAG_STARTED","EVENT_DRAG_STOPPED","EVENT_ROW_EDITING_STARTED","EVENT_ROW_EDITING_STOPPED","EVENT_CELL_EDITING_STARTED","EVENT_CELL_EDITING_STOPPED","EVENT_BODY_SCROLL","EVENT_ANIMATION_QUEUE_EMPTY","EVENT_HEIGHT_SCALE_CHANGED","EVENT_PAGINATION_CHANGED","EVENT_COMPONENT_STATE_CHANGED","EVENT_BODY_HEIGHT_CHANGED","EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED","EVENT_SCROLL_VISIBILITY_CHANGED","EVENT_COLUMN_HOVER_CHANGED","EVENT_FLASH_CELLS","EVENT_ROW_DRAG_ENTER","EVENT_ROW_DRAG_MOVE","EVENT_ROW_DRAG_LEAVE","EVENT_ROW_DRAG_END","EVENT_POPUP_TO_FRONT","EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST","EVENT_COLUMN_PIVOT_CHANGE_REQUEST","EVENT_COLUMN_VALUE_CHANGE_REQUEST","EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST","RowNode","childrenMapped","selectable","__objectId","OBJECT_ID_SEQUENCE","alreadyRendered","selected","setData","oldData","valueCache","onDataChanged","updateDataOnDetailNode","checkRowSelectable","createDataChangedEvent","dispatchLocalEvent","detailNode","newData","update","EVENT_DATA_CHANGED","createLocalRowEvent","updateData","getRowIndexString","rowPinned","PINNED_TOP","rowIndex","PINNED_BOTTOM","toString","createDaemonNode","oldNode","wireBean","id","daemon","level","setDataAndId","setId","selectionController","syncInRowNode","isRowSelectableFunc","getIsRowSelectableFunc","shouldInvokeIsRowSelectable","setRowSelectable","newVal","EVENT_SELECTABLE_CHANGED","getRowNodeId","getRowNodeIdFunc","undefined","isPixelInRange","pixel","rowTop","rowHeight","clearRowTop","oldRowTop","setRowTop","setFirstChild","firstChild","EVENT_FIRST_CHILD_CHANGED","setLastChild","lastChild","EVENT_LAST_CHILD_CHANGED","setChildIndex","childIndex","EVENT_CHILD_INDEX_CHANGED","EVENT_TOP_CHANGED","setDragging","EVENT_DRAGGING_CHANGED","setAllChildrenCount","allChildrenCount","EVENT_ALL_CHILDREN_COUNT_CHANGED","setRowHeight","estimated","rowHeightEstimated","EVENT_HEIGHT_CHANGED","setRowIndex","EVENT_ROW_INDEX_CHANGED","setUiLevel","uiLevel","EVENT_UI_LEVEL_CHANGED","setExpanded","expanded","EVENT_EXPANDED_CHANGED","createGlobalRowEvent","mainEventService","isGroupIncludeFooter","redrawRows","rowNodes","setDataValue","colKey","columnController","getPrimaryColumn","valueService","setValue","dispatchCellChangedEvent","setGroupValue","getGridColumn","groupData","setAggData","newAggData","colIds","getAllKeysInObjects","aggData","hasChildren","childrenAfterGroup","isEmptyRowGroupNode","missingOrEmpty","cellChangedEvent","EVENT_CELL_CHANGED","resetQuickFilterAggregateText","quickFilterAggregateText","isExpandable","master","isSelected","footer","sibling","depthFirstSearch","callback","child","calculateSelectedFromChildren","newSelectedValue","atLeastOneSelected","atLeastOneDeSelected","atLeastOneMixed","selectThisNode","setSelectedInitialValue","setSelected","clearSelection","suppressFinishActions","setSelectedParams","rangeSelect","isRowPinned","groupSelectsChildren","isGroupSelectsChildren","groupSelectsFiltered","newRowClicked","getLastSelectedNode","allowMultiSelect","isRowSelectionMulti","doRowRangeSelection","updatedCount","selectChildNodes","clearOtherNodes","updateGroupsFromChildrenSelections","event_1","setLastSelectedNode","groupsSelectChildren","lastSelectedNode","rowModel","getNodesInRangeForSelection","isParentOfNode","potentialParent","parentNode","children","childrenAfterFilter","onMouseEnter","EVENT_MOUSE_ENTER","onMouseLeave","EVENT_MOUSE_LEAVE","getFirstChildOfFirstChild","rowGroupColumn","nodeToSwapIn","currentRowNode","isCandidate","foundFirstChildPath","parentRowNode","isFullWidthCell","isFullWidthCellFunc","getIsFullWidthCellFunc","BeanStub","destroyFunctions","destroyed","isAlive","getFrameworkOverrides","frameworkOverrides","func","EVENT_DESTROYED","localEventService","dispatchEventAsync","setTimeout","object","HTMLElement","addSafePassiveEventListener","destroyFunc","fn","addDestroyFunc","wireDependentBean","bean","OriginalColumnGroup","colGroupDef","groupId","padding","expandable","openByDefault","getLevel","some","isPadding","isExpanded","getGroupId","setChildren","getChildren","getColGroupDef","getLeafColumns","result","addLeafColumns","leafColumns","HEADER_GROUP_PADDING","setupExpandable","setExpandable","col","onColumnVisibilityChanged","atLeastOneShowingWhenOpen","atLeastOneShowingWhenClosed","atLeastOneChangeable","findChildren","j","abstractColumn","headerGroupShow","HEADER_GROUP_SHOW_OPEN","HEADER_GROUP_SHOW_CLOSED","EVENT_EXPANDABLE_CHANGED","ColumnGroup","originalColumnGroup","instanceId","displayedChildren","createUniqueId","reset","allLeafColumns","getOriginalColumnGroup","every","checkLeft","isEnableRtl","lastChildLeft","last","firstChildLeft","createAgEvent","getInstanceId","isChildInThisGroupDeepSearch","wantedChild","foundChild","groupActualWidth","groupChild","addChild","getDisplayedChildren","getDisplayedLeafColumns","addDisplayedLeafColumns","calculateDisplayedColumns","topLevelGroup","EVENT_DISPLAYED_CHILDREN_CHANGED","EventService","allSyncListeners","Map","allAsyncListeners","globalSyncListeners","Set","globalAsyncListeners","asyncFunctionsQueue","scheduled","firedEvents","EventService_1","globalEventListener","async","useAsyncEvents","addGlobalListener","getListeners","listenerMap","listeners","set","delete","addModalPriorityEventListener","PRIORITY","removeGlobalListener","dispatchToListeners","dispatchEventOnce","processEventListeners","dispatchAsync","flushAsyncQueue","queueCopy","slice","ScalerFilter","scalarFilterParams","checkDeprecatedParams","nullComparator","includeBlanksInEquals","includeBlanksInLessThan","includeBlanksInGreaterThan","selectedOption","filterValue","gridValue","nullValue","canNullsPassFilter","comparator","actualComparator","filterModel","cellValue","valueGetter","range","mapRangeFromModel","from","filterValueTo","to","test","compareResult","compareToResult","inRangeInclusive","Error","DEFAULT_NULL_COMPARATOR","__spreadArrays","s","il","k","jl","ComponentUtil","getEventCallbacks","EVENT_CALLBACKS","EVENTS","map","getCallbackForEvent","copyAttributesToGridOptions","gridOptions","component","skipEventDeprecationCheck","checkForDeprecated","pGridOptions","keyExists","ARRAY_PROPERTIES","STRING_PROPERTIES","OBJECT_PROPERTIES","FUNCTION_PROPERTIES","BOOLEAN_PROPERTIES","toBoolean","NUMBER_PROPERTIES","toNumber","checkEventDeprecation","eventName","toUpperCase","substr","processOnChange","changes","currentValue","enableCellTextSelection","setEnableCellTextSelection","showToolPanel","quickFilterText","setQuickFilter","rowData","setRowData","pinnedTopRowData","setPinnedTopRowData","pinnedBottomRowData","setPinnedBottomRowData","columnDefs","setColumnDefs","datasource","setDatasource","headerHeight","setHeaderHeight","paginationPageSize","paginationSetPageSize","pivotMode","setPivotMode","groupRemoveSingleChildren","setGroupRemoveSingleChildren","suppressRowDrag","setSuppressRowDrag","gridAutoHeight","setGridAutoHeight","suppressClipboardPaste","setSuppressClipboardPaste","sideBar","setSideBar","iterateObject","Number","ALL_PROPERTIES","rowDeselected","onRowDeselected","values","ProvidedFilter","onFilterChanged","providedFilterParams","filterChangedCallback","appliedModel","postConstruct","templateString","createTemplate","setTemplate","setupOnBtApplyDebounce","applyActive","isUseApplyButton","newRowsAction","NEW_ROWS_ACTION_KEEP","newRowsActionKeep","NEW_ROWS_ACTION_CLEAR","rowModelType","getType","modelsForKeep","ROW_MODEL_TYPE_SERVER_SIDE","ROW_MODEL_TYPE_INFINITE","eApplyButton","onBtApply","clearActive","clearButton","eClearButton","onBtClear","resetActive","resetButton","eResetButton","onBtReset","anyButtonVisible","eButtonsPanel","getDefaultDebounceMs","debounceMs","getDebounceMs","onBtApplyDebounce","debounce","setModel","applyModel","oldAppliedModel","afterFloatingFilter","onNewRowsLoaded","isNewRowsActionKeep","filterModifiedCallback","body","debounceDefault","applyButton","ComponentSource","UserComponentFactory","newDateComponent","createAndInitUserComponent","newHeaderComponent","newHeaderGroupComponent","columnGroup","newFullWidthGroupRowInnerCellRenderer","newFullWidthCellRenderer","cellRendererType","cellRendererName","newCellRenderer","newPinnedRowCellRenderer","newCellEditor","newInnerCellRenderer","newLoadingOverlayComponent","newNoRowsOverlayComponent","newTooltipComponent","newFilterComponent","defaultFilter","modifyParamsCallback","newFloatingFilterComponent","defaultFloatingFilter","newToolPanelComponent","toolPanelDef","newStatusPanelComponent","def","definitionObject","paramsFromGrid","propertyName","defaultComponentName","optional","componentAndParams","createComponentInstance","componentInstance","createFinalParams","paramsFromSelector","addReactHacks","paramsAfterCallback","deferredInit","initComponent","resolve","notRelevant","agGridReact","getBean","cloneObject","frameworkComponentWrapper","createUserComponentFromConcreteClass","clazz","agGridParams","internalComponent","lookupComponentClassDef","componentSelectorFunc","hardcodedNameComponent","HardcodedJsComponent","hardcodedJsFunction","HardcodedFwComponent","componentPropertyValue","agComponentUtils","doesImplementIComponent","componentFromFramework","HARDCODED","adaptFunction","componentNameToUse","selectorResult","registeredCompClassDef","lookupFromRegisteredComponents","componentNameOpt","componentName","registeredComponent","userComponentRegistry","retrieve","REGISTERED_BY_NAME","REGISTERED","DEFAULT","userParams","holder","paramsForSelector","componentToUse","overrideName","nameToReport","error","FrameworkComponentRaw","thisComponentConfig","componentMetadataProvider","wrap","mandatoryMethodList","optionalMethodList","finalParams","DefaultDateComponent","eDateInput","getGui","isBrowserChrome","filterParams","browserDatePicker","isBrowserIE","onDateChanged","addGuiEventListener","getDate","parseYyyyMmDdToDate","setDate","date","serializeDateToYyyyMmDd","SimpleFloatingFilter","getTextFromModel","con1Str","conditionToString","con2Str","condition","isEventFromFloatingFilter","getLastType","lastType","setLastTypeFromModel","canWeEditAfterModelFromParentFilter","isTypeEditable","setEditable","DateFloatingFilter","DEFAULT_FILTER_OPTIONS","dateFrom","dateTo","createDateComponent","eDateWrapper","eReadOnlyText","onParentModelChanged","allowEditing","dateModel","dateComp","filterValueDate","filterValueText","parentFilterInstance","filterInstance","dateComponentParams","userComponentFactory","TextInputFloatingFilter","modelString","eFloatingFilterText","toDebounce","syncUpWithParentFilter","columnDef","e","enterKeyPressed","isKeyPressed","KEY_ENTER","NumberFloatingFilter","filterTo","TextFloatingFilter","RegisteredComponentSource","UserComponentRegistry","agGridDefaults","agDateInput","agColumnHeader","agColumnGroupHeader","agTextColumnFloatingFilter","agNumberColumnFloatingFilter","agDateColumnFloatingFilter","agAnimateShowChangeCellRenderer","agAnimateSlideCellRenderer","agGroupCellRenderer","agGroupRowRenderer","agLoadingCellRenderer","agCellEditor","agTextCellEditor","agSelectCellEditor","agPopupTextCellEditor","agPopupSelectCellEditor","agLargeTextCellEditor","agTextColumnFilter","agNumberColumnFilter","agDateColumnFilter","agLoadingOverlay","agNoRowsOverlay","agTooltipComponent","agDeprecatedNames","newComponentName","propertyHolder","number","animateShowChange","animateSlide","select","largeText","popupSelect","popupText","richSelect","headerComponent","jsComponents","frameworkComponents","components","keys","it","registerComponent","registerFwComponent","registerDefaultComponent","rawName","name","translateIfDeprecated","raw","deprecatedInfo","DateCompWrapper","eParent","alive","then","afterGuiAttached","tempValue","DateFilter","dateCompFrom1","dateCompTo1","dateCompFrom2","dateCompTo2","position","positionOne","dateFromString","dateToString","compFrom","compTo","dateFilterParams","defaultComparator","filterDate","createDateComponents","ePanelFrom1","ePanelFrom2","ePanelTo1","ePanelTo2","pos","valueFrom","valueTo","FILTER_TYPE","dateCompTo","dateCompFrom","showFrom1","showTo1","showFrom2","showTo2","NumberFilter","eValueFrom1","eValueFrom2","eValueTo1","eValueTo2","eValueFrom","eValueTo","addValueChangedListeners","focus","eValue","stringToFloat","filterText","makeNull","trim","parseFloat","TextFilter","getValue","element","val","eValue1","eValue2","textFilterParams","textCustomComparator","DEFAULT_COMPARATOR","formatter","textFormatter","caseSensitive","DEFAULT_FORMATTER","DEFAULT_LOWERCASE_FORMATTER","showValue1","eInputWrapper1","showValue2","eInputWrapper2","eFilterValue","filterOption","cellValueFormatted","filterTextFormatted","toLowerCase","index","lastIndexOf","ColDefUtil","FRAMEWORK_PROPERTIES","ColumnKeyCreator","existingKeys","addExistingKeys","getUniqueKey","colField","toStringOrNull","count","idToTry","ColumnController","primaryHeaderRowCount","secondaryHeaderRowCount","secondaryColumnsPresent","gridHeaderRowCount","displayedLeftColumns","displayedRightColumns","displayedCenterColumns","allDisplayedColumns","allDisplayedVirtualColumns","allDisplayedCenterVirtualColumns","rowGroupColumns","valueColumns","pivotColumns","ready","autoGroupsNeedBuilding","bodyWidth","leftWidth","rightWidth","bodyWidthDirty","flexActive","isPivotMode","suppressColumnVirtualisation","isSuppressColumnVirtualisation","isPivotSettingAllowed","usingTreeData","colsPreviouslyExisted","expire","oldPrimaryColumns","primaryColumns","balancedTreeResult","columnFactory","createColumnTree","primaryColumnTree","columnTree","treeDept","getColumnsFromTree","extractRowGroupColumns","extractPivotColumns","createValueColumns","updateGridColumns","updateDisplayedColumns","checkDisplayedVirtualColumns","isDeltaColumnMode","resetColumnState","eventEverythingChanged","newColumnsLoadedEvent","getDisplayedCenterColumns","isAutoRowHeightActive","autoRowHeightColumns","getAllAutoRowHeightCols","setVirtualViewportLeftAndRight","viewportLeft","scrollPosition","scrollWidth","viewportRight","getDisplayedColumnsStartingAt","currentColumn","getDisplayedColAfter","hashBefore","join","updateVirtualSets","setVirtualViewportPosition","getSecondaryPivotColumn","pivotKeys","valueColKey","valueColumnToFind","foundColumn","secondaryColumns","thisPivotKeys","pivotValueColumn","compareArrays","setFirstRightAndLastLeftPinned","lastLeft","firstRight","gridColumns","autoSizeColumns","skipHeader","columnsAutosized","changesThisTimeAround","isSkipHeaderOnAutoSize","actionOnGridColumns","preferredWidth","autoWidthCalculator","getPreferredWidthForColumn","newWidth","normaliseColumnWidth","event_2","finished","autoSizeColumn","autoSizeAllColumns","getAllDisplayedColumns","rootColumns","recursiveFindColumns","childColumns","getAllDisplayedColumnGroups","displayedLeftColumnTree","displayedRightColumnTree","displayedCentreColumnTree","getPrimaryColumnTree","getHeaderRowCount","getLeftDisplayedColumnGroups","getRightDisplayedColumnGroups","getCenterDisplayedColumnGroups","getDisplayedColumnGroups","isColumnDisplayed","getAllDisplayedVirtualColumns","getDisplayedLeftColumnsForRow","colSpanActive","getDisplayedColumnsForRow","getDisplayedRightColumnsForRow","displayedColumns","filterCallback","emptySpaceBeforeColumn","out_i_1","lastConsideredCol","_loop_1","filterPasses","maxAllowedColSpan","columnsToCheckFilter","colsToRemove","colForFilter","getAllDisplayedCenterVirtualColumnsForRow","isColumnInViewport","columnLeft","columnRight","leftBounds","rightBounds","getPinnedLeftContainerWidth","getWidthOfColsInList","getPinnedRightContainerWidth","updatePrimaryColumnList","masterList","actionIsAdd","columnCallback","atLeastOne","columnToAdd","setRowGroupColumns","colKeys","setPrimaryColumnList","isSuppressMakeColumnVisibleAfterUnGroup","addRowGroupColumn","addRowGroupColumns","removeRowGroupColumns","removeRowGroupColumn","addPivotColumns","setPivotColumns","added","addPivotColumn","removePivotColumns","removePivotColumn","setValueColumns","defaultAggFunc","aggFuncService","getDefaultAggFunc","addValueColumns","addValueColumn","removeValueColumn","removeValueColumns","getPrimaryOrGridColumn","setColumnWidth","shiftKey","sets","ratios","getColResizeDefault","otherCol","widthDiff","otherColWidth","resizeColumnSets","refreshFlexedColumns","checkMinAndMaxWidthsForSet","columnResizeSet","minWidthAccumulated","maxWidthAccumulated","maxWidthActive","resizeSets","changedCols","allCols","newWidths","finishedCols","finishedColsGrew","loopCount","_loop_2","subsetCols","subsetRatios","subsetRatioTotal","pixelsToDistribute","ratioThisCol","ratioScale","colNewWidth","round","atLeastOneColChanged","setLeftValues","updateBodyWidths","event_4","event_3","setColumnAggFunc","moveRowGroupColumn","fromIndex","toIndex","splice","moveColumns","columnsToMoveKeys","columnAnimationService","start","columnsToMove","getGridColumns","doesMovePassRules","moveInArray","finish","proposedColumnOrder","doesMovePassMarryChildren","doesMovePassLockedPositions","foundNonLocked","rulePassed","allColumnsCopy","depthFirstOriginalTreeSearch","gridBalancedTree","marryChildren","newIndexes","newColIndex","moveColumn","moveColumnByIndex","getBodyContainerWidth","getContainerWidth","newBodyWidth","newLeftWidth","newRightWidth","event_5","getValueColumns","getPivotColumns","getRowGroupColumns","getDisplayedLeftColumns","getDisplayedRightColumns","getDisplayedColumns","getAllPrimaryColumns","getSecondaryColumns","getAllColumnsForQuickFilter","columnsForQuickFilter","getAllGridColumns","isEmpty","isRowGroupEmpty","setColumnVisible","setColumnsVisible","setColumnPinned","setColumnsPinned","actualPinned","getDomLayout","action","createEvent","updatedColumns","event_6","getDisplayedColBefore","oldIndex","getDisplayedGroupAfter","requiredLevel","groupPointer","isPinningLeft","isPinningRight","getPrimaryAndSecondaryAndAutoColumns","groupAutoColumns","createStateItemFromColumn","rowGroupIndex","pivotIndex","getColumnState","primaryColumnState","columnStateList","orderColumnStateList","gridColumnIds","itemA","itemB","suppressEverythingEvent","columnStates","letRowGroupIndex","letPivotIndex","stateItem","setColumnState","columnStateBefore","columnsWithNoState","success","rowGroupIndexes","pivotIndexes","autoGroupColumnStates","state","getAutoColumn","syncColumnWithStateItem","syncColumnWithNoState","sortColumnListUsingIndexes","autoCol","orderOfColIds_1","colA","colB","putFixedColumnsFirst","event_7","raiseColumnEvents","isSuppressSetColumnStateEvents","columnStateAfter","raiseEventWithAllColumns","idMapper","getChangedColumns","changedPredicate","changedColumns","columnStateBeforeMap","colStateBefore","cs","raiseColumnPinnedEvent","cols","raiseColumnVisibleEvent","raiseColumnResizeEvent","raiseColumnMovedEvent","movedColumns","_loop_3","before","after","movedColumn","this_1","indexes","getColumns","columnLookupCallback","foundColumns","getColumnWithValidation","getColumn","columnList","columnsMatch","groupCol","columnMatches","colDefMatches","idMatches","getDisplayNameForColumn","location","includeAggFunc","headerName","getHeaderName","wrapHeaderNameWithAggFunc","getDisplayNameForOriginalColumnGroup","getDisplayNameForColumnGroup","headerValueGetter","expressionService","evaluate","camelCaseToHumanText","isSuppressAggFuncInHeader","aggFuncFound","measureActive","aggregationPresent","aggFuncString","localeTextFunc","getColumnGroup","allColumnGroups","checkInstanceId","depthFirstAllColumnTreeSearch","isReady","extractColumns","flag","previousCols","setFlagFunc","getIndexFunc","getValueFunc","removedCols","existingCols","newPrimaryCols","newCols","indexA","indexB","resetColumnGroupState","stateItems","groupState","open","setColumnGroupState","getColumnGroupState","columnGroupState","impactedGroups","groupKey","log","updateGroupsAndDisplayedColumns","setColumnGroupOpened","keyAsString","calculateColumnsForDisplay","isAutoGroupCol","includes","isValueCol","checkColSpanActiveInCols","calculateColumnsForGroupDisplay","groupDisplayColumns","checkFunc","getGroupDisplayColumns","columnsForDisplay","buildDisplayedTrees","isSecondaryColumnsPresent","setSecondaryColumns","colDefs","newColsPresent","processSecondaryColumnDefinitions","secondaryBalancedTree","getProcessSecondaryColDefFunc","groupCallback","getProcessSecondaryColGroupDefFunc","searchForColDefs","colDefs2","abstractColDef","gridColsArePrimary","lastPrimaryOrder","orderGridColsLikeLastPrimary","addAutoGroupToGridColumns","autoHeight","setupQuickFilterColumns","clearDisplayedColumns","noColsFound","oldColsOrdered","newColsOrdered","newGridColumns","newCol","siblings","leafCol","presentInNewGriColumns","noYetInSiblings","lastIndex","insertIntoArray","isPrimaryColumnGroupsPresent","locked","unlocked","createGroupAutoColumnsIfNeeded","autoColBalancedTree","createForAutoGroups","displayedLeftHeaderRows","displayedRightHeaderRows","displayedCentreHeaderRows","updateOpenClosedVisibilityInColumnGroups","updateDisplayedColumnsFromTrees","addToDisplayedColumns","setupAllDisplayedColumns","setLeftValuesOfColumns","setLeftValuesOfGroups","allColumns","doingRtl","left_1","left_2","removeAllFromArray","displayedColumnTree","depthFirstDisplayedColumnTreeSearch","updateDisplayedCenterVirtualColumns","filterOutColumnsWithinViewport","getVirtualHeaderGroupRow","dept","updateDisplayedVirtualGroups","virtualColIds","testGroup","returnValue","addThisItem","updatedFlexViewportWidth","flexViewportWidth","spaceForFlexingColumns","knownWidthColumns","flexingColumns","flexingColumnSizes","outer","totalFlex","reduce","widthByFlexRule","constrainedWidth","remainingSpace","fireResizedEventForColumns","sizeColumnsToFit","gridWidth","silent","colsToSpread","colsToNotSpread","suppressSizeToFit","colsToFireEventFor","finishedResizing","moveToNotSpread","availablePixels","scale","pixelsForLastCol","visibleColumns","leftVisibleColumns","rightVisibleColumns","centerVisibleColumns","groupInstanceIdCreator","displayedGroupCreator","createDisplayedGroups","getGroupAutoColumns","groupFullWidthRow","isGroupUseEntireRow","groupSuppressAutoColumn","isGroupSuppressAutoColumn","groupSuppressRow","isGroupSuppressRow","newAutoGroupCols","autoGroupColService","createAutoGroupColumns","autoColsEqual","colsA","colsB","getGridBalancedTree","GroupInstanceIdCreator","existingIds","getInstanceIdForKey","lastResult","ColumnUtils","optionsWrapper","getMaxSafeInteger","getColWidth","getOriginalPathForColumn","originalBalancedTree","found","recursePath","balancedColumnTree","tree","DisplayedGroupCreator","sortedVisibleColumns","oldDisplayedGroups","previousRealPath","previousOriginalPath","oldColumnsMapped","mapOldGroupsById","currentOriginalPath","currentRealPath","firstColumn","newGroup","createColumnGroup","setupParentsIntoColumns","originalGroup","displayedGroups","recursive","columnsOrGroups","columnOrGroup","columnsOrGroup","ColumnApi","columnState","isPinning","getAllColumns","getPrimaryColumns","columnGroupOpened","hideColumns","hideColumn","setState","getState","resetState","getAggregationColumns","removeAggregationColumn","removeAggregationColumns","addAggregationColumn","addAggregationColumns","setColumnAggFunction","getDisplayNameForCol","FilterManager","allFilters","quickFilter","quickFilterParts","processingFilterChange","FilterManager_1","registerGridCore","gridCore","onNewColumnsLoaded","parseQuickFilter","getQuickFilterText","setQuickFilterParts","allowShowChangeAfterFilter","isAllowShowChangeAfterFilter","checkExternalFilter","split","setFilterModel","allPromises","modelKeys_1","filterWrapper","newModel","setModelOnFilterWrapper","filterPromise","getOrCreateFilterWrapper","all","whatever","getFilterModel","resolveNow","isAdvancedFilterPresent","advancedFilterPresent","setAdvancedFilterPresent","atLeastOneActive","updateFilterFlagInColumns","isAnyFilterPresent","isQuickFilterPresent","externalFilterPresent","filterToSkip","l","newFilter","isRowModelDefault","parsedFilter","isExternalFilterPresent","onAnyFilterChanged","isSuppressFlashingCellsBecauseFiltering","doesRowPassOtherFilters","doesRowPassFilter","doesRowPassQuickFilterNoCache","filterPart","part","getQuickFilterTextForColumn","doesRowPassQuickFilterCache","aggregateRowForQuickFilter","doesRowPassQuickFilter","usingCache","isCacheQuickFilter","doesExternalFilterPass","valueAfterCallback","stringParts","QUICK_FILTER_SEPARATOR","createValueGetter","getFilterComponent","cachedFilter","putIntoGui","createFilterWrapper","createFilterInstance","$scope","SetFilterModule","sanitisedColDef","createFilterParams","assign","doesRowPassOtherFilter","scope","compiledElement","guiPromise","external","isAngularCompileFilters","$new","eFilterGui","className","guiFromFilter","$compile","$apply","eGui","atLeastOneFilterGone","disposeFilterWrapper","destroyFilter","remove","$destroy","DragService","onMouseUpListener","onMouseUp","onMouseMoveListener","onMouseMove","onTouchEndListener","onTouchUp","onTouchMoveListener","onTouchMove","dragEndFunctions","dragSources","removeListener","dragSourceAndListener","mouseDownListener","touchEnabled","touchStartListener","passive","setNoSelectToBody","noSelect","eBody","includeTouch","mouseListener","onMouseDown","touchListener","suppressTouch","isSuppressTouch","onTouchStart","touchEvent","currentDragParams","touch","touches","touchLastTime","touchStart","preventDefault","onCommonMove","skipMouseEvent","_alreadyProcessedByDragService","button","mouseStartEvent","eDocument","isEventNearStartEvent","currentEvent","startEvent","requiredPixelDiff","areEventsNear","getFirstActiveTouch","touchList","identifier","changedTouches","onUpCommon","eventOrTouch","FocusedCellController","clearFocusedCell","focusedCellPosition","onCellFocused","getFocusedCell","getFocusCellToUseAfterRefresh","isSuppressFocusAfterRefresh","getGridCellForDomElement","activeElement","eBrowserCell","ePointer","cellComp","getDomData","DOM_DATA_KEY_CELL_COMP","getCellPosition","setFocusedCell","floating","forceBrowserFocus","isCellFocused","cellPosition","isRowFocused","isRowNodeFocused","isAnyCellFocused","floatingOrNull","CellNavigationService","getNextCellToFocus","lastCellToFocus","pointer","KEY_UP","getCellAbove","KEY_DOWN","getCellBelow","KEY_RIGHT","getCellToLeft","getCellToRight","KEY_LEFT","isCellGoodToFocusOn","gridCell","pinnedRowModel","getPinnedTopRow","getPinnedBottomRow","getRow","lastCell","colToLeft","colToRight","getRowBelow","rowPosition","isLastRowInContainer","isRowsToRender","rowBelow","getPinnedTopRowData","getPinnedBottomRowData","getRowCount","getRowAbove","getLastBodyCell","getLastFloatingTopRow","rowAbove","getNextTabbedCell","backwards","getNextTabbedCellBackwards","getNextTabbedCellForwards","newRowIndex","newFloating","newColumn","AlignedGridsService","consuming","registerGridComp","gridPanel","fireColumnEvent","fireScrollEvent","fireEvent","otherGrids","getAlignedGrids","otherGridOptions","alignedGridService","__getAlignedGridService","onEvent","alignedGridsService","onColumnEvent","direction","onScrollEvent","setHorizontalScrollPosition","getMasterColumns","getColumnIds","colEvent","processColumnEvent","groupOpenedEvent","processGroupOpenedEvent","otherColumnGroup","masterColumnGroup","otherColumn","masterColumn","columnIds","masterColumns","movedEvent","visibleEvent","pinnedEvent","resizedEvent_1","isVerticalScrollShowing","grid","setAlwaysShowVerticalScroll","HARD_CODED_SIZES","MAT_GRID_SIZE","virtualItemHeight","chartMenuPanelWidth","FRESH_GRID_SIZE","BALHAM_GRID_SIZE","ALPINE_GRID_SIZE","SASS_PROPERTY_BUILDER","CALCULATED_SIZES","Environment","getSassVariable","useTheme","match","defaultValue","calculatedValue","classList","div","el","currentClass","idx","parseInt","getComputedStyle","isThemeDark","useNativeCheckboxes","themeFamily","themeMatch","reg","eGridDiv","exec","parentElement","newTheme_1","replace","RowPositionUtils","getRowNode","gridRow","sameRow","rowA","rowB","CellPositionUtils","createId","createIdFromValues","cellA","cellB","colsMatch","floatingMatch","indexMatch","DefaultColumnTypes","numericColumn","headerClass","cellClass","ColumnFactory","defs","existingColumns","columnKeyCreator","existingColsCopy","unbalancedTree","recursivelyCreateColumns","findMaxDept","balanceColumnTree","autoGroupCols","fakeTreeItem","createAutoGroupTreeItem","nextChild","findDepth","autoGroup","currentDept","columnDept","newChildren","firstPaddedGroup","currentPaddedGroup","newColId","colGroupDefMerged","createMergedColGroupDef","paddedGroup","treeChildren","maxDeptThisLevel","newDept","newGroupOrColumn","isColumnGroup","createColumn","getDefaultColGroupDef","checkForDeprecatedItems","colDefMerged","mergeColDefs","findExistingColumn","oldColDef","getDefaultColDef","assignColumnTypes","typeKeys","allColumnTypes","getColumnTypes","t","typeColDef","colDefNoType","headerGroup","suppressRowGroup","suppressAggregation","SideBarDefParser","parse","toParse","toolPanels","DEFAULT_COLUMN_COMP","DEFAULT_FILTER_COMP","defaultToolPanel","isArray","comps_1","lookupResult","DEFAULT_BY_KEY","parseComponents","hiddenByDefault","toAdd","labelDefault","labelKey","iconKey","toolPanel","filters","OptionsFactory","customFilterOptions","defaultOptions","mapCustomOptions","selectDefaultItem","firstFilterOption","initialiseAgGridWithAngular1","angular","module","directive","restrict","controller","AngularDirectiveController","$element","$attrs","quickFilterOnScope","keyOfGridInScope","agGrid","$eval","gridParams","$on","registered","initialiseAgGridWithWebComponents","registerElement","AgileGridProto","v","__agGridSetProperty","__agGridGetProperty","enumerable","configurable","agGridProtoNoType","__attributes","changeObject","onChange","_initialised","_gridOptions","setGridOptions","options","_agGrid","createdCallback","attributes","attribute","setPropertyFromAttribute","myString","nodeName","g","nodeValue","attachedCallback","detachedCallback","attributeChangedCallback","attributeName","eventLowerCase","browserEvent","Event","agGridDetails","callbackMethod","BaseComponentWrapper","OriginalConstructor","wrapper","createWrapper","methodName","createMethod","mandatory","addMethod","createMethodProxy","hasMethod","callMethod","AutoGroupColService","AutoGroupColService_1","doingTreeData","doingMultiAutoColumn","isGroupMultiAutoColumn","rowGroupCol","createOneAutoGroupColumn","defaultAutoColDef","generateDefaultColDef","GROUP_AUTO_COLUMN_ID","GROUP_AUTO_COLUMN_BUNDLE_ID","userAutoColDef","getAutoGroupColumnDef","filterValueGetter","headerCheckboxSelection","cellRenderer","cellRendererFramework","rowGroupColDef","cellRendererParams","innerRenderer","innerRendererParams","AgComponentUtils","metadata","functionAdapter","adaptCellRendererFunction","Adapter","refresh","callbackResult","candidate","ComponentMetadataProvider","componentMetaData","dateComponent","detailCellRenderer","headerGroupComponent","loadingCellRenderer","loadingOverlayComponent","noRowsOverlayComponent","floatingFilterComponent","floatingFilterWrapperComponent","fullWidthCellRenderer","groupRowInnerRenderer","groupRowRenderer","filterComponent","statusPanel","tooltipComponent","Context","beanWrappers","componentsMappedByName","beanClasses","contextParams","setupComponents","createBeans","beanInstances","getBeanInstances","wireBeans","beanEntry","beanInstance","componentMeta","addComponent","classUpperCase","componentClass","createComponentFromElement","afterPreCreateCallback","createComponent","newComponent","autoWireBeans","methodWireBeans","callLifeCycleMethods","createBeanWrapper","constructorParamsMeta","__agBeanMetaData","autowireMethods","agConstructor","constructorParams","getBeansForParameters","newInstance","argArray","args","applyToConstructor","createdBeanNames","Bean","metaData","beanName","forEachMetaDataInHierarchy","agClassAttributes","otherBean","lookupBeanInstance","wireParams","initParams","getPrototypeOf","getBeanName","constructorString","substring","parameters","beansList","otherBeanName","wiringBean","providedBeanInstances","lifeCycleMethod","methods","PreConstruct","descriptor","props","getOrCreateProps","postConstructMethods","preConstructMethods","PostConstruct","PreDestroy","preDestroyMethods","classConstructor","Autowired","propertyKey","autowiredFunc","Optional","classPrototype","methodOrAttributeName","Qualifier","ReadOnlyFloatingFilter","parentModel","getModelAsString","modelAsString","FloatingFilterWrapper","TEMPLATE","setupFloatingFilter","setupWidth","setupLeftPositioning","setupColumnHover","addFeature","eButtonShowMainFilter","showParentFilter","floatingFilterCompPromise","getFloatingFilterInstance","compInstance","setupWithFloatingFilter","setupSyncWithFilter","setupEmpty","setLeftFeature","beans","syncWithFilter","filterManager","menuFactory","showMenuAfterButtonClick","onColumnHover","isHovered","columnHoverService","onColumnWidthChanged","floatingFilterComp","disposeFunc","floatingFilterCompUi","eFloatingFilterBody","suppressFilterButton","eButtonWrapper","createIconNoSpan","defaultFloatingFilterType","filterToFloatingFilterNames","finalFilterParams","currentParentModel","floatingFilterComponentParams","promise","getFilterComponentPrototype","createDynamicParams","resolvedComponent","agSetColumnFilter","Constants","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_SHIFT","KEY_ESCAPE","KEY_SPACE","KEY_DELETE","KEY_A","KEY_C","KEY_V","KEY_D","KEY_Z","KEY_Y","KEY_F2","KEY_PAGE_UP","KEY_PAGE_DOWN","KEY_PAGE_HOME","KEY_PAGE_END","ROW_MODEL_TYPE_VIEWPORT","ROW_MODEL_TYPE_CLIENT_SIDE","DEPRECATED_ROW_MODEL_TYPE_NORMAL","ALWAYS","ONLY_WHEN_GROUPING","DOM_LAYOUT_NORMAL","DOM_LAYOUT_PRINT","DOM_LAYOUT_AUTO_HEIGHT","SOURCE_PASTE"],"mappings":"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GACzB,KAAKI,EAAWr4B,OACZ,OAAOnP,IAAUonC,EACrB,KAAKI,EAAWp4B,UACZ,OAAOpP,GAASonC,EACpB,KAAKI,EAAW73B,YACZ,OAAqC,IAA9B3P,EAAM1F,QAAQ8sC,GACzB,KAAKI,EAAW53B,UACZ,IAAIm5B,EAAQ/oC,EAAMgpC,YAAY5B,GAC9B,OAAO2B,GAAS,GAAKA,IAAW/oC,EAAM/I,OAASmwC,EAAWnwC,OAC9D,QAGI,OADA6E,QAAQC,KAAK,uBAAyBV,IAC/B,IAGnB5E,EAAW,CACP,YAAY,YACb+wC,EAAW9uC,UAAW,eAAW,GACpCjC,EAAW,CACP,YAAY,YACb+wC,EAAW9uC,UAAW,eAAW,GACpCjC,EAAW,CACP,YAAY,mBACb+wC,EAAW9uC,UAAW,sBAAkB,GAC3CjC,EAAW,CACP,YAAY,mBACb+wC,EAAW9uC,UAAW,sBAAkB,GACpC8uC,EAjKoB,CAkK7B,M,kCC9LF,kCAMA,IAAIyB,EAA4B,WAC5B,SAASA,KAoJT,OAlJAA,EAAWnX,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,iBAEJmX,EAAWlX,kBAAoB,CAC3B,uBACA,gCACA,6BACA,YACA,qBACA,sBACA,mBACA,iCACA,8BACA,kBACA,eACA,mBACA,kBACA,2BACA,wBACA,0BACA,gCACA,mCACA,mBACA,yBACA,4BACA,WAEJkX,EAAWpX,iBAAmB,CAC1B,WACA,eACA,kBACA,WACA,sBACA,iBACA,SAEJoX,EAAW9W,kBAAoB,CAC3B,WACA,OACA,QACA,WACA,WACA,gBACA,cAEJ8W,EAAWhX,mBAAqB,CAC5B,oBACA,2BACA,2BACA,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,mBAEJgX,E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","file":"static/js/defaultVendors~main~833f4573.85cc40f9.chunk.js","sourcesContent":["/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { EventService } from \"../eventService\";\nimport { _ } from \"../utils\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { Constants } from \"../constants\";\nimport { ModuleNames } from \"../modules/moduleNames\";\nimport { ModuleRegistry } from \"../modules/moduleRegistry\";\n// Wrapper around a user provide column definition. The grid treats the column definition as ready only.\n// This class contains all the runtime information about a column, plus some logic (the definition has no logic).\n// This class implements both interfaces ColumnGroupChild and OriginalColumnGroupChild as the class can\n// appear as a child of either the original tree or the displayed tree. However the relevant group classes\n// for each type only implements one, as each group can only appear in it's associated tree (eg OriginalColumnGroup\n// can only appear in OriginalColumn tree).\nvar Column = /** @class */ (function () {\n function Column(colDef, userProvidedColDef, colId, primary) {\n this.moving = false;\n this.menuVisible = false;\n this.filterActive = false;\n this.eventService = new EventService();\n this.rowGroupActive = false;\n this.pivotActive = false;\n this.aggregationActive = false;\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n this.visible = !colDef.hide;\n this.sort = colDef.sort;\n this.sortedAt = colDef.sortedAt;\n this.colId = colId;\n this.primary = primary;\n }\n // gets called when user provides an alternative colDef, eg\n Column.prototype.setColDef = function (colDef, userProvidedColDef) {\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n };\n Column.prototype.getUserProvidedColDef = function () {\n return this.userProvidedColDef;\n };\n Column.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n Column.prototype.getParent = function () {\n return this.parent;\n };\n Column.prototype.setOriginalParent = function (originalParent) {\n this.originalParent = originalParent;\n };\n Column.prototype.getOriginalParent = function () {\n return this.originalParent;\n };\n // this is done after constructor as it uses gridOptionsWrapper\n Column.prototype.initialise = function () {\n this.setPinned(this.colDef.pinned);\n var minColWidth = this.gridOptionsWrapper.getMinColWidth();\n var maxColWidth = this.gridOptionsWrapper.getMaxColWidth();\n if (this.colDef.minWidth) {\n this.minWidth = this.colDef.minWidth;\n }\n else {\n this.minWidth = minColWidth;\n }\n if (this.colDef.maxWidth) {\n this.maxWidth = this.colDef.maxWidth;\n }\n else {\n this.maxWidth = maxColWidth;\n }\n if (this.colDef.flex) {\n this.flex = this.colDef.flex;\n }\n this.actualWidth = this.columnUtils.calculateColInitialWidth(this.colDef);\n var suppressDotNotation = this.gridOptionsWrapper.isSuppressFieldDotNotation();\n this.fieldContainsDots = _.exists(this.colDef.field) && this.colDef.field.indexOf('.') >= 0 && !suppressDotNotation;\n this.tooltipFieldContainsDots = _.exists(this.colDef.tooltipField) && this.colDef.tooltipField.indexOf('.') >= 0 && !suppressDotNotation;\n this.validate();\n };\n Column.prototype.isEmptyGroup = function () {\n return false;\n };\n Column.prototype.isRowGroupDisplayed = function (colId) {\n if (_.missing(this.colDef) || _.missing(this.colDef.showRowGroup)) {\n return false;\n }\n var showingAllGroups = this.colDef.showRowGroup === true;\n var showingThisGroup = this.colDef.showRowGroup === colId;\n return showingAllGroups || showingThisGroup;\n };\n Column.prototype.getUniqueId = function () {\n return this.getId();\n };\n Column.prototype.isPrimary = function () {\n return this.primary;\n };\n Column.prototype.isFilterAllowed = function () {\n // filter defined means it's a string, class or true.\n // if its false, null or undefined then it's false.\n var filterDefined = !!this.colDef.filter || !!this.colDef.filterFramework;\n return this.primary && filterDefined;\n };\n Column.prototype.isFieldContainsDots = function () {\n return this.fieldContainsDots;\n };\n Column.prototype.isTooltipFieldContainsDots = function () {\n return this.tooltipFieldContainsDots;\n };\n Column.prototype.validate = function () {\n var colDefAny = this.colDef;\n function warnOnce(msg, key, obj) {\n _.doOnce(function () {\n if (obj) {\n console.warn(msg, obj);\n }\n else {\n _.doOnce(function () { return console.warn(msg); }, key);\n }\n }, key);\n }\n if (!ModuleRegistry.isRegistered(ModuleNames.RowGroupingModule)) {\n var rowGroupingItems = ['enableRowGroup', 'rowGroup', 'rowGroupIndex', 'enablePivot', 'enableValue', 'pivot', 'pivotIndex', 'aggFunc'];\n rowGroupingItems.forEach(function (item) {\n if (_.exists(colDefAny[item])) {\n warnOnce(\"ag-Grid: \" + item + \" is only valid with module Row Grouping, your column definition \"\n + (\"should not have \" + item), 'ColumnRowGroupingMissing' + item);\n }\n });\n }\n if (!ModuleRegistry.isRegistered(ModuleNames.RichSelectModule)) {\n if (this.colDef.cellEditor === 'agRichSelect' || this.colDef.cellEditor === 'agRichSelectCellEditor') {\n warnOnce(\"ag-Grid: \" + this.colDef.cellEditor + \" can only be used with \"\n + (\"module \" + ModuleNames.RichSelectModule), 'ColumnRichSelectMissing');\n }\n }\n if (this.gridOptionsWrapper.isTreeData()) {\n var itemsNotAllowedWithTreeData = ['rowGroup', 'rowGroupIndex', 'pivot', 'pivotIndex'];\n itemsNotAllowedWithTreeData.forEach(function (item) {\n if (_.exists(colDefAny[item])) {\n warnOnce(\"ag-Grid: \" + item + \" is not possible when doing tree data, your \"\n + (\"column definition should not have \" + item), 'TreeDataCannotRowGroup');\n }\n });\n }\n if (_.exists(this.colDef.width) && typeof this.colDef.width !== 'number') {\n warnOnce('ag-Grid: colDef.width should be a number, not ' + typeof this.colDef.width, 'ColumnCheck_asdfawef');\n }\n if (_.get(this, 'colDef.cellRendererParams.restrictToOneGroup', null)) {\n warnOnce('ag-Grid: Since ag-grid 11.0.0 cellRendererParams.restrictToOneGroup is deprecated. You should use showRowGroup', 'ColumnCheck_sksldjf');\n }\n if (_.get(this, 'colDef.cellRendererParams.keyMap', null)) {\n warnOnce('ag-Grid: Since ag-grid 11.0.0 cellRendererParams.keyMap is deprecated. You should use colDef.keyCreator', 'ColumnCheck_ieiruhgdf');\n }\n if (_.get(this, 'colDef.cellRendererParams.keyMap', null)) {\n warnOnce('ag-Grid: Since ag-grid 11.0.0 cellRendererParams.keyMap is deprecated. You should use colDef.keyCreator', 'ColumnCheck_uitolghj');\n }\n if (colDefAny.floatingCellRenderer) {\n warnOnce('ag-Grid: since v11, floatingCellRenderer is now pinnedRowCellRenderer', 'ColumnCheck_soihwewe');\n this.colDef.pinnedRowCellRenderer = colDefAny.floatingCellRenderer;\n }\n if (colDefAny.floatingRendererFramework) {\n warnOnce('ag-Grid: since v11, floatingRendererFramework is now pinnedRowCellRendererFramework', 'ColumnCheck_zdkiouhwer');\n this.colDef.pinnedRowCellRendererFramework = colDefAny.floatingRendererFramework;\n }\n if (colDefAny.floatingRendererParams) {\n console.warn('ag-Grid: since v11, floatingRendererParams is now pinnedRowCellRendererParams', 'ColumnCheck_retiuhjs');\n this.colDef.pinnedRowCellRendererParams = colDefAny.floatingRendererParams;\n }\n if (colDefAny.floatingValueFormatter) {\n warnOnce('ag-Grid: since v11, floatingValueFormatter is now pinnedRowValueFormatter', 'ColumnCheck_qwroeihjdf');\n this.colDef.pinnedRowValueFormatter = colDefAny.floatingValueFormatter;\n }\n if (colDefAny.cellFormatter) {\n warnOnce('ag-Grid: since v12, cellFormatter is now valueFormatter', 'ColumnCheck_eoireknml');\n if (_.missing(this.colDef.valueFormatter)) {\n this.colDef.valueFormatter = colDefAny.cellFormatter;\n }\n }\n if (colDefAny.headerCellTemplate) {\n warnOnce('ag-Grid: since v15, headerCellTemplate is gone, use header component instead.', 'ColumnCheck_eroihxcm');\n }\n if (colDefAny.headerCellRenderer) {\n warnOnce('ag-Grid: since v15, headerCellRenderer is gone, use header component instead.', 'ColumnCheck_terteuh');\n }\n if (colDefAny.volatile) {\n warnOnce('ag-Grid: since v16, colDef.volatile is gone, please check refresh docs on how to refresh specific cells.', 'ColumnCheck_weoihjxcv');\n }\n if (colDefAny.suppressSorting) {\n warnOnce(\"ag-Grid: since v20, colDef.suppressSorting is gone, instead use colDef.sortable=false.\", 'ColumnCheck_43ljrer', this.colDef);\n this.colDef.sortable = false;\n }\n if (colDefAny.suppressFilter) {\n warnOnce(\"ag-Grid: since v20, colDef.suppressFilter is gone, instead use colDef.filter=false.\", 'ColumnCheck_erlkhfdm', this.colDef);\n this.colDef.filter = false;\n }\n if (colDefAny.suppressResize) {\n warnOnce(\"ag-Grid: since v20, colDef.suppressResize is gone, instead use colDef.resizable=false.\", 'ColumnCheck_weoihjxcv', this.colDef);\n this.colDef.resizable = false;\n }\n if (colDefAny.tooltip) {\n warnOnce(\"ag-Grid: since v20.1, colDef.tooltip is gone, instead use colDef.tooltipValueGetter.\", 'ColumnCheck_adslknjwef', this.colDef);\n this.colDef.tooltipValueGetter = colDefAny.tooltip;\n }\n if (colDefAny.suppressToolPanel) {\n warnOnce(\"ag-Grid: since v22, colDef.suppressToolPanel is gone, instead use suppressColumnsToolPanel / suppressFiltersToolPanel.\", 'ColumnCheck_weihjlsjkdf', this.colDef);\n this.colDef.suppressColumnsToolPanel = true;\n }\n };\n Column.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n Column.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n Column.prototype.createIsColumnFuncParams = function (rowNode) {\n return {\n node: rowNode,\n data: rowNode.data,\n column: this,\n colDef: this.colDef,\n context: this.gridOptionsWrapper.getContext(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n };\n Column.prototype.isSuppressNavigable = function (rowNode) {\n // if boolean set, then just use it\n if (typeof this.colDef.suppressNavigable === 'boolean') {\n return this.colDef.suppressNavigable;\n }\n // if function, then call the function to find out\n if (typeof this.colDef.suppressNavigable === 'function') {\n var params = this.createIsColumnFuncParams(rowNode);\n var userFunc = this.colDef.suppressNavigable;\n return userFunc(params);\n }\n return false;\n };\n Column.prototype.isCellEditable = function (rowNode) {\n // only allow editing of groups if the user has this option enabled\n if (rowNode.group && !this.gridOptionsWrapper.isEnableGroupEdit()) {\n return false;\n }\n return this.isColumnFunc(rowNode, this.colDef.editable);\n };\n Column.prototype.isRowDrag = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.rowDrag);\n };\n Column.prototype.isDndSource = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.dndSource);\n };\n Column.prototype.isCellCheckboxSelection = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.checkboxSelection);\n };\n Column.prototype.isSuppressPaste = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef ? this.colDef.suppressPaste : null);\n };\n Column.prototype.isResizable = function () {\n return this.colDef.resizable === true;\n };\n Column.prototype.isColumnFunc = function (rowNode, value) {\n // if boolean set, then just use it\n if (typeof value === 'boolean') {\n return value;\n }\n // if function, then call the function to find out\n if (typeof value === 'function') {\n var params = this.createIsColumnFuncParams(rowNode);\n var editableFunc = value;\n return editableFunc(params);\n }\n return false;\n };\n Column.prototype.setMoving = function (moving, source) {\n if (source === void 0) { source = \"api\"; }\n this.moving = moving;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MOVING_CHANGED, source));\n };\n Column.prototype.createColumnEvent = function (type, source) {\n return {\n api: this.gridApi,\n columnApi: this.columnApi,\n type: type,\n column: this,\n columns: [this],\n source: source\n };\n };\n Column.prototype.isMoving = function () {\n return this.moving;\n };\n Column.prototype.getSort = function () {\n return this.sort;\n };\n Column.prototype.setSort = function (sort, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.sort !== sort) {\n this.sort = sort;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_SORT_CHANGED, source));\n }\n };\n Column.prototype.setMenuVisible = function (visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.menuVisible !== visible) {\n this.menuVisible = visible;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MENU_VISIBLE_CHANGED, source));\n }\n };\n Column.prototype.isMenuVisible = function () {\n return this.menuVisible;\n };\n Column.prototype.isSortAscending = function () {\n return this.sort === Constants.SORT_ASC;\n };\n Column.prototype.isSortDescending = function () {\n return this.sort === Constants.SORT_DESC;\n };\n Column.prototype.isSortNone = function () {\n return _.missing(this.sort);\n };\n Column.prototype.isSorting = function () {\n return _.exists(this.sort);\n };\n Column.prototype.getSortedAt = function () {\n return this.sortedAt;\n };\n Column.prototype.setSortedAt = function (sortedAt) {\n this.sortedAt = sortedAt;\n };\n Column.prototype.setAggFunc = function (aggFunc) {\n this.aggFunc = aggFunc;\n };\n Column.prototype.getAggFunc = function () {\n return this.aggFunc;\n };\n Column.prototype.getLeft = function () {\n return this.left;\n };\n Column.prototype.getOldLeft = function () {\n return this.oldLeft;\n };\n Column.prototype.getRight = function () {\n return this.left + this.actualWidth;\n };\n Column.prototype.setLeft = function (left, source) {\n if (source === void 0) { source = \"api\"; }\n this.oldLeft = this.left;\n if (this.left !== left) {\n this.left = left;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LEFT_CHANGED, source));\n }\n };\n Column.prototype.isFilterActive = function () {\n return this.filterActive;\n };\n // additionalEventAttributes is used by provided simple floating filter, so it can add 'floatingFilter=true' to the event\n Column.prototype.setFilterActive = function (active, source, additionalEventAttributes) {\n if (source === void 0) { source = \"api\"; }\n if (this.filterActive !== active) {\n this.filterActive = active;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FILTER_ACTIVE_CHANGED, source));\n }\n var filterChangedEvent = this.createColumnEvent(Column.EVENT_FILTER_CHANGED, source);\n if (additionalEventAttributes) {\n _.mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n this.eventService.dispatchEvent(filterChangedEvent);\n };\n Column.prototype.setPinned = function (pinned) {\n if (pinned === true || pinned === Constants.PINNED_LEFT) {\n this.pinned = Constants.PINNED_LEFT;\n }\n else if (pinned === Constants.PINNED_RIGHT) {\n this.pinned = Constants.PINNED_RIGHT;\n }\n else {\n this.pinned = null;\n }\n };\n Column.prototype.setFirstRightPinned = function (firstRightPinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.firstRightPinned !== firstRightPinned) {\n this.firstRightPinned = firstRightPinned;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, source));\n }\n };\n Column.prototype.setLastLeftPinned = function (lastLeftPinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.lastLeftPinned !== lastLeftPinned) {\n this.lastLeftPinned = lastLeftPinned;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LAST_LEFT_PINNED_CHANGED, source));\n }\n };\n Column.prototype.isFirstRightPinned = function () {\n return this.firstRightPinned;\n };\n Column.prototype.isLastLeftPinned = function () {\n return this.lastLeftPinned;\n };\n Column.prototype.isPinned = function () {\n return this.pinned === Constants.PINNED_LEFT || this.pinned === Constants.PINNED_RIGHT;\n };\n Column.prototype.isPinnedLeft = function () {\n return this.pinned === Constants.PINNED_LEFT;\n };\n Column.prototype.isPinnedRight = function () {\n return this.pinned === Constants.PINNED_RIGHT;\n };\n Column.prototype.getPinned = function () {\n return this.pinned;\n };\n Column.prototype.setVisible = function (visible, source) {\n if (source === void 0) { source = \"api\"; }\n var newValue = visible === true;\n if (this.visible !== newValue) {\n this.visible = newValue;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VISIBLE_CHANGED, source));\n }\n };\n Column.prototype.isVisible = function () {\n return this.visible;\n };\n Column.prototype.getColDef = function () {\n return this.colDef;\n };\n Column.prototype.getColumnGroupShow = function () {\n return this.colDef.columnGroupShow;\n };\n Column.prototype.getColId = function () {\n return this.colId;\n };\n Column.prototype.getId = function () {\n return this.getColId();\n };\n Column.prototype.getDefinition = function () {\n return this.colDef;\n };\n Column.prototype.getActualWidth = function () {\n return this.actualWidth;\n };\n Column.prototype.createBaseColDefParams = function (rowNode) {\n var params = {\n node: rowNode,\n data: rowNode.data,\n colDef: this.colDef,\n column: this,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n return params;\n };\n Column.prototype.getColSpan = function (rowNode) {\n if (_.missing(this.colDef.colSpan)) {\n return 1;\n }\n var params = this.createBaseColDefParams(rowNode);\n var colSpan = this.colDef.colSpan(params);\n // colSpan must be number equal to or greater than 1\n return Math.max(colSpan, 1);\n };\n Column.prototype.getRowSpan = function (rowNode) {\n if (_.missing(this.colDef.rowSpan)) {\n return 1;\n }\n var params = this.createBaseColDefParams(rowNode);\n var rowSpan = this.colDef.rowSpan(params);\n // rowSpan must be number equal to or greater than 1\n return Math.max(rowSpan, 1);\n };\n Column.prototype.setActualWidth = function (actualWidth, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.minWidth != null) {\n actualWidth = Math.max(actualWidth, this.minWidth);\n }\n if (this.maxWidth != null) {\n actualWidth = Math.min(actualWidth, this.maxWidth);\n }\n if (this.actualWidth !== actualWidth) {\n // disable flex for this column if it was manually resized.\n if (this.flex && source !== 'flex') {\n this.flex = 0;\n }\n this.actualWidth = actualWidth;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_WIDTH_CHANGED, source));\n }\n };\n Column.prototype.isGreaterThanMax = function (width) {\n if (this.maxWidth != null) {\n return width > this.maxWidth;\n }\n return false;\n };\n Column.prototype.getMinWidth = function () {\n return this.minWidth;\n };\n Column.prototype.getMaxWidth = function () {\n return this.maxWidth;\n };\n Column.prototype.getFlex = function () {\n return this.flex || 0;\n };\n Column.prototype.setMinimum = function (source) {\n if (source === void 0) { source = \"api\"; }\n this.setActualWidth(this.minWidth, source);\n };\n Column.prototype.setRowGroupActive = function (rowGroup, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.rowGroupActive !== rowGroup) {\n this.rowGroupActive = rowGroup;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_ROW_GROUP_CHANGED, source));\n }\n };\n Column.prototype.isRowGroupActive = function () {\n return this.rowGroupActive;\n };\n Column.prototype.setPivotActive = function (pivot, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.pivotActive !== pivot) {\n this.pivotActive = pivot;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_PIVOT_CHANGED, source));\n }\n };\n Column.prototype.isPivotActive = function () {\n return this.pivotActive;\n };\n Column.prototype.isAnyFunctionActive = function () {\n return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();\n };\n Column.prototype.isAnyFunctionAllowed = function () {\n return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();\n };\n Column.prototype.setValueActive = function (value, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.aggregationActive !== value) {\n this.aggregationActive = value;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VALUE_CHANGED, source));\n }\n };\n Column.prototype.isValueActive = function () {\n return this.aggregationActive;\n };\n Column.prototype.isAllowPivot = function () {\n return this.colDef.enablePivot === true;\n };\n Column.prototype.isAllowValue = function () {\n return this.colDef.enableValue === true;\n };\n Column.prototype.isAllowRowGroup = function () {\n return this.colDef.enableRowGroup === true;\n };\n Column.prototype.getMenuTabs = function (defaultValues) {\n var menuTabs = this.getColDef().menuTabs;\n if (menuTabs == null) {\n menuTabs = defaultValues;\n }\n return menuTabs;\n };\n // this used to be needed, as previous version of ag-grid had lockPosition as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockPosition = function () {\n console.warn('ag-Grid: since v21, col.isLockPosition() should not be used, please use col.getColDef().lockPosition instead.');\n return this.colDef ? !!this.colDef.lockPosition : false;\n };\n // this used to be needed, as previous version of ag-grid had lockVisible as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockVisible = function () {\n console.warn('ag-Grid: since v21, col.isLockVisible() should not be used, please use col.getColDef().lockVisible instead.');\n return this.colDef ? !!this.colDef.lockVisible : false;\n };\n // this used to be needed, as previous version of ag-grid had lockPinned as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockPinned = function () {\n console.warn('ag-Grid: since v21, col.isLockPinned() should not be used, please use col.getColDef().lockPinned instead.');\n return this.colDef ? !!this.colDef.lockPinned : false;\n };\n // + renderedHeaderCell - for making header cell transparent when moving\n Column.EVENT_MOVING_CHANGED = 'movingChanged';\n // + renderedCell - changing left position\n Column.EVENT_LEFT_CHANGED = 'leftChanged';\n // + renderedCell - changing width\n Column.EVENT_WIDTH_CHANGED = 'widthChanged';\n // + renderedCell - for changing pinned classes\n Column.EVENT_LAST_LEFT_PINNED_CHANGED = 'lastLeftPinnedChanged';\n Column.EVENT_FIRST_RIGHT_PINNED_CHANGED = 'firstRightPinnedChanged';\n // + renderedColumn - for changing visibility icon\n Column.EVENT_VISIBLE_CHANGED = 'visibleChanged';\n // + every time the filter changes, used in the floating filters\n Column.EVENT_FILTER_CHANGED = 'filterChanged';\n // + renderedHeaderCell - marks the header with filter icon\n Column.EVENT_FILTER_ACTIVE_CHANGED = 'filterActiveChanged';\n // + renderedHeaderCell - marks the header with sort icon\n Column.EVENT_SORT_CHANGED = 'sortChanged';\n Column.EVENT_MENU_VISIBLE_CHANGED = 'menuVisibleChanged';\n // + toolpanel, for gui updates\n Column.EVENT_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n // + toolpanel, for gui updates\n Column.EVENT_PIVOT_CHANGED = 'columnPivotChanged';\n // + toolpanel, for gui updates\n Column.EVENT_VALUE_CHANGED = 'columnValueChanged';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], Column.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnUtils')\n ], Column.prototype, \"columnUtils\", void 0);\n __decorate([\n Autowired('columnApi')\n ], Column.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], Column.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('context')\n ], Column.prototype, \"context\", void 0);\n __decorate([\n PostConstruct\n ], Column.prototype, \"initialise\", null);\n return Column;\n}());\nexport { Column };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { OptionsFactory } from \"./optionsFactory\";\nimport { ProvidedFilter } from \"./providedFilter\";\nimport { _ } from \"../../utils\";\nexport var ConditionPosition;\n(function (ConditionPosition) {\n ConditionPosition[ConditionPosition[\"One\"] = 0] = \"One\";\n ConditionPosition[ConditionPosition[\"Two\"] = 1] = \"Two\";\n})(ConditionPosition || (ConditionPosition = {}));\nvar DEFAULT_TRANSLATIONS = {\n loadingOoo: 'Loading...',\n empty: 'Choose One',\n equals: 'Equals',\n notEqual: 'Not equal',\n lessThan: 'Less than',\n greaterThan: 'Greater than',\n inRange: 'In range',\n lessThanOrEqual: 'Less than or equals',\n greaterThanOrEqual: 'Greater than or equals',\n filterOoo: 'Filter...',\n contains: 'Contains',\n notContains: 'Not contains',\n startsWith: 'Starts with',\n endsWith: 'Ends with',\n searchOoo: 'Search...',\n selectAll: 'Select All',\n applyFilter: 'Apply Filter',\n clearFilter: 'Clear Filter',\n andCondition: 'AND',\n orCondition: 'OR'\n};\n/**\n * Every filter with a dropdown where the user can specify a comparing type against the filter values\n */\nvar SimpleFilter = /** @class */ (function (_super) {\n __extends(SimpleFilter, _super);\n function SimpleFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // returns true if this type requires a 'from' field, eg any filter that requires at least one text value\n SimpleFilter.prototype.showValueFrom = function (type) {\n return !this.doesFilterHaveHiddenInput(type) && type !== SimpleFilter.EMPTY;\n };\n // returns true if this type requires a 'to' field, currently only 'range' returns true\n SimpleFilter.prototype.showValueTo = function (type) {\n return type === SimpleFilter.IN_RANGE;\n };\n // floating filter calls this when user applies filter from floating filter\n SimpleFilter.prototype.onFloatingFilterChanged = function (type, value) {\n this.setValueFromFloatingFilter(value);\n this.setTypeFromFloatingFilter(type);\n this.onUiChanged(true);\n };\n SimpleFilter.prototype.setTypeFromFloatingFilter = function (type) {\n this.eType1.value = type;\n this.eType2.value = null;\n this.eJoinOperatorAnd.checked = true;\n };\n SimpleFilter.prototype.getModelFromUi = function () {\n if (!this.isConditionUiComplete(ConditionPosition.One)) {\n return null;\n }\n if (this.isAllowTwoConditions() && this.isConditionUiComplete(ConditionPosition.Two)) {\n var res = {\n filterType: this.getFilterType(),\n operator: this.getJoinOperator(),\n condition1: this.createCondition(ConditionPosition.One),\n condition2: this.createCondition(ConditionPosition.Two)\n };\n return res;\n }\n else {\n var res = this.createCondition(ConditionPosition.One);\n return res;\n }\n };\n SimpleFilter.prototype.getCondition1Type = function () {\n return this.eType1.value;\n };\n SimpleFilter.prototype.getCondition2Type = function () {\n return this.eType2.value;\n };\n SimpleFilter.prototype.getJoinOperator = function () {\n return this.eJoinOperatorOr.checked ? 'OR' : 'AND';\n };\n SimpleFilter.prototype.areModelsEqual = function (a, b) {\n // both are missing\n if (!a && !b) {\n return true;\n }\n // one is missing, other present\n if ((!a && b) || (a && !b)) {\n return false;\n }\n // one is combined, the other is not\n var aIsSimple = !a.operator;\n var bIsSimple = !b.operator;\n var oneSimpleOneCombined = (!aIsSimple && bIsSimple) || (aIsSimple && !bIsSimple);\n if (oneSimpleOneCombined) {\n return false;\n }\n var res;\n // otherwise both present, so compare\n if (aIsSimple) {\n var aSimple = a;\n var bSimple = b;\n res = this.areSimpleModelsEqual(aSimple, bSimple);\n }\n else {\n var aCombined = a;\n var bCombined = b;\n res = aCombined.operator === bCombined.operator\n && this.areSimpleModelsEqual(aCombined.condition1, bCombined.condition1)\n && this.areSimpleModelsEqual(aCombined.condition2, bCombined.condition2);\n }\n return res;\n };\n SimpleFilter.prototype.setModelIntoUi = function (model) {\n var isCombined = model.operator;\n if (isCombined) {\n var combinedModel = model;\n var orChecked = combinedModel.operator === 'OR';\n this.eJoinOperatorAnd.checked = !orChecked;\n this.eJoinOperatorOr.checked = orChecked;\n this.eType1.value = combinedModel.condition1.type;\n this.eType2.value = combinedModel.condition2.type;\n this.setConditionIntoUi(combinedModel.condition1, ConditionPosition.One);\n this.setConditionIntoUi(combinedModel.condition2, ConditionPosition.Two);\n }\n else {\n var simpleModel = model;\n this.eJoinOperatorAnd.checked = true;\n this.eJoinOperatorOr.checked = false;\n this.eType1.value = simpleModel.type;\n this.eType2.value = this.optionsFactory.getDefaultOption();\n this.setConditionIntoUi(simpleModel, ConditionPosition.One);\n this.setConditionIntoUi(null, ConditionPosition.Two);\n }\n };\n SimpleFilter.prototype.doesFilterPass = function (params) {\n var model = this.getModel();\n var isCombined = model.operator;\n if (isCombined) {\n var combinedModel = model;\n var firstResult = this.individualConditionPasses(params, combinedModel.condition1);\n var secondResult = this.individualConditionPasses(params, combinedModel.condition2);\n if (combinedModel.operator === 'AND') {\n return firstResult && secondResult;\n }\n else {\n return firstResult || secondResult;\n }\n }\n else {\n var simpleModel = model;\n var result = this.individualConditionPasses(params, simpleModel);\n return result;\n }\n };\n SimpleFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.simpleFilterParams = params;\n this.optionsFactory = new OptionsFactory();\n this.optionsFactory.init(params, this.getDefaultFilterOptions());\n this.allowTwoConditions = !params.suppressAndOrCondition;\n this.putOptionsIntoDropdown();\n this.addChangedListeners();\n };\n SimpleFilter.prototype.putOptionsIntoDropdown = function () {\n var _this = this;\n var filterOptions = this.optionsFactory.getFilterOptions();\n filterOptions.forEach(function (option) {\n var createOption = function () {\n var key = (typeof option === 'string') ? option : option.displayKey;\n var localName = _this.translate(key);\n var eOption = document.createElement(\"option\");\n eOption.text = localName;\n eOption.value = key;\n return eOption;\n };\n _this.eType1.add(createOption());\n _this.eType2.add(createOption());\n });\n var readOnly = filterOptions.length <= 1;\n this.eType1.disabled = readOnly;\n this.eType2.disabled = readOnly;\n };\n SimpleFilter.prototype.isAllowTwoConditions = function () {\n return this.allowTwoConditions;\n };\n SimpleFilter.prototype.createBodyTemplate = function () {\n var optionsTemplate1 = \"\";\n var valueTemplate1 = this.createValueTemplate(ConditionPosition.One);\n var optionsTemplate2 = \"\";\n var valueTemplate2 = this.createValueTemplate(ConditionPosition.Two);\n var uniqueGroupId = 'ag-simple-filter-and-or-' + this.getCompId();\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var andOrTemplate = \"
\\n \\n \\n
\";\n var template = optionsTemplate1 + \"\\n \" + valueTemplate1 + \"\\n \" + andOrTemplate + \"\\n \" + optionsTemplate2 + \"\\n \" + valueTemplate2;\n return template;\n };\n SimpleFilter.prototype.updateUiVisibility = function () {\n var firstConditionComplete = this.isConditionUiComplete(ConditionPosition.One);\n var showSecondFilter = this.allowTwoConditions && firstConditionComplete;\n _.setDisplayed(this.eCondition2Body, showSecondFilter);\n _.setDisplayed(this.eType2, showSecondFilter);\n _.setDisplayed(this.eJoinOperatorPanel, showSecondFilter);\n };\n SimpleFilter.prototype.resetUiToDefaults = function () {\n this.eJoinOperatorAnd.checked = true;\n var defaultOption = this.optionsFactory.getDefaultOption();\n this.eType1.value = defaultOption;\n this.eType2.value = defaultOption;\n };\n SimpleFilter.prototype.translate = function (toTranslate) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var defaultTranslation = DEFAULT_TRANSLATIONS[toTranslate];\n if (!defaultTranslation && this.optionsFactory.getCustomOption(toTranslate)) {\n defaultTranslation = this.optionsFactory.getCustomOption(toTranslate).displayName;\n }\n return translate(toTranslate, defaultTranslation);\n };\n SimpleFilter.prototype.addChangedListeners = function () {\n var _this = this;\n var listener = function () { return _this.onUiChanged(); };\n this.addDestroyableEventListener(this.eType1, \"change\", listener);\n this.addDestroyableEventListener(this.eType2, \"change\", listener);\n this.addDestroyableEventListener(this.eJoinOperatorOr, \"change\", listener);\n this.addDestroyableEventListener(this.eJoinOperatorAnd, \"change\", listener);\n };\n SimpleFilter.prototype.doesFilterHaveHiddenInput = function (filterType) {\n var customFilterOption = this.optionsFactory.getCustomOption(filterType);\n return customFilterOption && customFilterOption.hideFilterInput;\n };\n SimpleFilter.EMPTY = 'empty';\n SimpleFilter.EQUALS = 'equals';\n SimpleFilter.NOT_EQUAL = 'notEqual';\n SimpleFilter.LESS_THAN = 'lessThan';\n SimpleFilter.LESS_THAN_OR_EQUAL = 'lessThanOrEqual';\n SimpleFilter.GREATER_THAN = 'greaterThan';\n SimpleFilter.GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';\n SimpleFilter.IN_RANGE = 'inRange';\n SimpleFilter.CONTAINS = 'contains';\n SimpleFilter.NOT_CONTAINS = 'notContains';\n SimpleFilter.STARTS_WITH = 'startsWith';\n SimpleFilter.ENDS_WITH = 'endsWith';\n __decorate([\n RefSelector('eOptions1')\n ], SimpleFilter.prototype, \"eType1\", void 0);\n __decorate([\n RefSelector('eOptions2')\n ], SimpleFilter.prototype, \"eType2\", void 0);\n __decorate([\n RefSelector('eJoinOperatorAnd')\n ], SimpleFilter.prototype, \"eJoinOperatorAnd\", void 0);\n __decorate([\n RefSelector('eJoinOperatorOr')\n ], SimpleFilter.prototype, \"eJoinOperatorOr\", void 0);\n __decorate([\n RefSelector('eCondition2Body')\n ], SimpleFilter.prototype, \"eCondition2Body\", void 0);\n __decorate([\n RefSelector('eJoinOperatorPanel')\n ], SimpleFilter.prototype, \"eJoinOperatorPanel\", void 0);\n return SimpleFilter;\n}(ProvidedFilter));\nexport { SimpleFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Qualifier, PostConstruct, Bean, Autowired, PreDestroy } from \"../context/context\";\nimport { _ } from \"../utils\";\nexport var DragSourceType;\n(function (DragSourceType) {\n DragSourceType[DragSourceType[\"ToolPanel\"] = 0] = \"ToolPanel\";\n DragSourceType[DragSourceType[\"HeaderCell\"] = 1] = \"HeaderCell\";\n DragSourceType[DragSourceType[\"RowDrag\"] = 2] = \"RowDrag\";\n DragSourceType[DragSourceType[\"ChartPanel\"] = 3] = \"ChartPanel\";\n})(DragSourceType || (DragSourceType = {}));\nexport var VerticalDirection;\n(function (VerticalDirection) {\n VerticalDirection[VerticalDirection[\"Up\"] = 0] = \"Up\";\n VerticalDirection[VerticalDirection[\"Down\"] = 1] = \"Down\";\n})(VerticalDirection || (VerticalDirection = {}));\nexport var HorizontalDirection;\n(function (HorizontalDirection) {\n HorizontalDirection[HorizontalDirection[\"Left\"] = 0] = \"Left\";\n HorizontalDirection[HorizontalDirection[\"Right\"] = 1] = \"Right\";\n})(HorizontalDirection || (HorizontalDirection = {}));\nvar DragAndDropService = /** @class */ (function () {\n function DragAndDropService() {\n this.dragSourceAndParamsList = [];\n this.dropTargets = [];\n }\n DragAndDropService_1 = DragAndDropService;\n DragAndDropService.prototype.init = function () {\n this.ePinnedIcon = _.createIcon('columnMovePin', this.gridOptionsWrapper, null);\n this.ePlusIcon = _.createIcon('columnMoveAdd', this.gridOptionsWrapper, null);\n this.eHiddenIcon = _.createIcon('columnMoveHide', this.gridOptionsWrapper, null);\n this.eMoveIcon = _.createIcon('columnMoveMove', this.gridOptionsWrapper, null);\n this.eLeftIcon = _.createIcon('columnMoveLeft', this.gridOptionsWrapper, null);\n this.eRightIcon = _.createIcon('columnMoveRight', this.gridOptionsWrapper, null);\n this.eGroupIcon = _.createIcon('columnMoveGroup', this.gridOptionsWrapper, null);\n this.eAggregateIcon = _.createIcon('columnMoveValue', this.gridOptionsWrapper, null);\n this.ePivotIcon = _.createIcon('columnMovePivot', this.gridOptionsWrapper, null);\n this.eDropNotAllowedIcon = _.createIcon('dropNotAllowed', this.gridOptionsWrapper, null);\n };\n DragAndDropService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('OldToolPanelDragAndDropService');\n };\n DragAndDropService.prototype.addDragSource = function (dragSource, allowTouch) {\n if (allowTouch === void 0) { allowTouch = false; }\n var params = {\n eElement: dragSource.eElement,\n dragStartPixels: dragSource.dragStartPixels,\n onDragStart: this.onDragStart.bind(this, dragSource),\n onDragStop: this.onDragStop.bind(this),\n onDragging: this.onDragging.bind(this)\n };\n this.dragSourceAndParamsList.push({ params: params, dragSource: dragSource });\n this.dragService.addDragSource(params, allowTouch);\n };\n DragAndDropService.prototype.removeDragSource = function (dragSource) {\n var sourceAndParams = _.find(this.dragSourceAndParamsList, function (item) { return item.dragSource === dragSource; });\n if (sourceAndParams) {\n this.dragService.removeDragSource(sourceAndParams.params);\n _.removeFromArray(this.dragSourceAndParamsList, sourceAndParams);\n }\n };\n DragAndDropService.prototype.destroy = function () {\n var _this = this;\n this.dragSourceAndParamsList.forEach(function (sourceAndParams) { return _this.dragService.removeDragSource(sourceAndParams.params); });\n this.dragSourceAndParamsList.length = 0;\n };\n DragAndDropService.prototype.nudge = function () {\n if (this.dragging) {\n this.onDragging(this.eventLastTime, true);\n }\n };\n DragAndDropService.prototype.onDragStart = function (dragSource, mouseEvent) {\n this.dragging = true;\n this.dragSource = dragSource;\n this.eventLastTime = mouseEvent;\n this.dragItem = this.dragSource.getDragItem();\n this.lastDropTarget = this.dragSource.dragSourceDropTarget;\n if (this.dragSource.onDragStarted) {\n this.dragSource.onDragStarted();\n }\n this.createGhost();\n };\n DragAndDropService.prototype.onDragStop = function (mouseEvent) {\n this.eventLastTime = null;\n this.dragging = false;\n if (this.dragSource.onDragStopped) {\n this.dragSource.onDragStopped();\n }\n if (this.lastDropTarget && this.lastDropTarget.onDragStop) {\n var draggingEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, null, null, false);\n this.lastDropTarget.onDragStop(draggingEvent);\n }\n this.lastDropTarget = null;\n this.dragItem = null;\n this.removeGhost();\n };\n DragAndDropService.prototype.onDragging = function (mouseEvent, fromNudge) {\n var hDirection = this.getHorizontalDirection(mouseEvent);\n var vDirection = this.getVerticalDirection(mouseEvent);\n this.eventLastTime = mouseEvent;\n this.positionGhost(mouseEvent);\n // check if mouseEvent intersects with any of the drop targets\n var dropTarget = _.find(this.dropTargets, this.isMouseOnDropTarget.bind(this, mouseEvent));\n if (dropTarget !== this.lastDropTarget) {\n this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);\n this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget = dropTarget;\n }\n else if (dropTarget) {\n var draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragging(draggingEvent);\n }\n };\n DragAndDropService.prototype.enterDragTargetIfExists = function (dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {\n if (!dropTarget) {\n return;\n }\n if (dropTarget.onDragEnter) {\n var dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragEnter(dragEnterEvent);\n }\n this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);\n };\n DragAndDropService.prototype.leaveLastTargetIfExists = function (mouseEvent, hDirection, vDirection, fromNudge) {\n if (!this.lastDropTarget) {\n return;\n }\n if (this.lastDropTarget.onDragLeave) {\n var dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget.onDragLeave(dragLeaveEvent);\n }\n this.setGhostIcon(null);\n };\n DragAndDropService.prototype.getAllContainersFromDropTarget = function (dropTarget) {\n var containers = [dropTarget.getContainer()];\n var secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;\n if (secondaryContainers) {\n containers = containers.concat(secondaryContainers);\n }\n return containers;\n };\n // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers\n DragAndDropService.prototype.isMouseOnDropTarget = function (mouseEvent, dropTarget) {\n var mouseOverTarget = false;\n this.getAllContainersFromDropTarget(dropTarget)\n .filter(function (eContainer) { return eContainer; }) // secondary can be missing\n .forEach(function (eContainer) {\n var rect = eContainer.getBoundingClientRect();\n // if element is not visible, then width and height are zero\n if (rect.width === 0 || rect.height === 0) {\n return;\n }\n var horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX <= rect.right;\n var verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY <= rect.bottom;\n if (horizontalFit && verticalFit) {\n mouseOverTarget = true;\n }\n });\n return mouseOverTarget && dropTarget.isInterestedIn(this.dragSource.type);\n };\n DragAndDropService.prototype.addDropTarget = function (dropTarget) {\n this.dropTargets.push(dropTarget);\n };\n DragAndDropService.prototype.getHorizontalDirection = function (event) {\n if (this.eventLastTime.clientX > event.clientX) {\n return HorizontalDirection.Left;\n }\n else if (this.eventLastTime.clientX < event.clientX) {\n return HorizontalDirection.Right;\n }\n else {\n return null;\n }\n };\n DragAndDropService.prototype.getVerticalDirection = function (event) {\n if (this.eventLastTime.clientY > event.clientY) {\n return VerticalDirection.Up;\n }\n else if (this.eventLastTime.clientY < event.clientY) {\n return VerticalDirection.Down;\n }\n else {\n return null;\n }\n };\n DragAndDropService.prototype.createDropTargetEvent = function (dropTarget, event, hDirection, vDirection, fromNudge) {\n // localise x and y to the target component\n var rect = dropTarget.getContainer().getBoundingClientRect();\n var x = event.clientX - rect.left;\n var y = event.clientY - rect.top;\n return {\n event: event,\n x: x,\n y: y,\n vDirection: vDirection,\n hDirection: hDirection,\n dragSource: this.dragSource,\n fromNudge: fromNudge,\n dragItem: this.dragItem\n };\n };\n DragAndDropService.prototype.positionGhost = function (event) {\n var ghostRect = this.eGhost.getBoundingClientRect();\n var ghostHeight = ghostRect.height;\n // for some reason, without the '-2', it still overlapped by 1 or 2 pixels, which\n // then brought in scrollbars to the browser. no idea why, but putting in -2 here\n // works around it which is good enough for me.\n var browserWidth = _.getBodyWidth() - 2;\n var browserHeight = _.getBodyHeight() - 2;\n // put ghost vertically in middle of cursor\n var top = event.pageY - (ghostHeight / 2);\n // horizontally, place cursor just right of icon\n var left = event.pageX - 30;\n var usrDocument = this.gridOptionsWrapper.getDocument();\n var windowScrollY = window.pageYOffset || usrDocument.documentElement.scrollTop;\n var windowScrollX = window.pageXOffset || usrDocument.documentElement.scrollLeft;\n // check ghost is not positioned outside of the browser\n if (browserWidth > 0 && ((left + this.eGhost.clientWidth) > (browserWidth + windowScrollX))) {\n left = browserWidth + windowScrollX - this.eGhost.clientWidth;\n }\n if (left < 0) {\n left = 0;\n }\n if (browserHeight > 0 && ((top + this.eGhost.clientHeight) > (browserHeight + windowScrollY))) {\n top = browserHeight + windowScrollY - this.eGhost.clientHeight;\n }\n if (top < 0) {\n top = 0;\n }\n this.eGhost.style.left = left + 'px';\n this.eGhost.style.top = top + 'px';\n };\n DragAndDropService.prototype.removeGhost = function () {\n if (this.eGhost && this.eGhostParent) {\n this.eGhostParent.removeChild(this.eGhost);\n }\n this.eGhost = null;\n };\n DragAndDropService.prototype.createGhost = function () {\n this.eGhost = _.loadTemplate(DragAndDropService_1.GHOST_TEMPLATE);\n var theme = this.environment.getTheme().theme;\n if (theme) {\n _.addCssClass(this.eGhost, theme);\n }\n this.eGhostIcon = this.eGhost.querySelector('.ag-dnd-ghost-icon');\n this.setGhostIcon(null);\n var eText = this.eGhost.querySelector('.ag-dnd-ghost-label');\n eText.innerHTML = _.escape(this.dragSource.dragItemName);\n this.eGhost.style.height = '25px';\n this.eGhost.style.top = '20px';\n this.eGhost.style.left = '20px';\n var usrDocument = this.gridOptionsWrapper.getDocument();\n this.eGhostParent = usrDocument.querySelector('body');\n if (!this.eGhostParent) {\n console.warn('ag-Grid: could not find document body, it is needed for dragging columns');\n }\n else {\n this.eGhostParent.appendChild(this.eGhost);\n }\n };\n DragAndDropService.prototype.setGhostIcon = function (iconName, shake) {\n if (shake === void 0) { shake = false; }\n _.clearElement(this.eGhostIcon);\n var eIcon;\n switch (iconName) {\n case DragAndDropService_1.ICON_ADD:\n eIcon = this.ePlusIcon;\n break;\n case DragAndDropService_1.ICON_PINNED:\n eIcon = this.ePinnedIcon;\n break;\n case DragAndDropService_1.ICON_MOVE:\n eIcon = this.eMoveIcon;\n break;\n case DragAndDropService_1.ICON_LEFT:\n eIcon = this.eLeftIcon;\n break;\n case DragAndDropService_1.ICON_RIGHT:\n eIcon = this.eRightIcon;\n break;\n case DragAndDropService_1.ICON_GROUP:\n eIcon = this.eGroupIcon;\n break;\n case DragAndDropService_1.ICON_AGGREGATE:\n eIcon = this.eAggregateIcon;\n break;\n case DragAndDropService_1.ICON_PIVOT:\n eIcon = this.ePivotIcon;\n break;\n case DragAndDropService_1.ICON_NOT_ALLOWED:\n eIcon = this.eDropNotAllowedIcon;\n break;\n default:\n eIcon = this.eHiddenIcon;\n break;\n }\n this.eGhostIcon.appendChild(eIcon);\n _.addOrRemoveCssClass(this.eGhostIcon, 'ag-shake-left-to-right', shake);\n };\n var DragAndDropService_1;\n DragAndDropService.ICON_PINNED = 'pinned';\n DragAndDropService.ICON_ADD = 'add';\n DragAndDropService.ICON_MOVE = 'move';\n DragAndDropService.ICON_LEFT = 'left';\n DragAndDropService.ICON_RIGHT = 'right';\n DragAndDropService.ICON_GROUP = 'group';\n DragAndDropService.ICON_AGGREGATE = 'aggregate';\n DragAndDropService.ICON_PIVOT = 'pivot';\n DragAndDropService.ICON_NOT_ALLOWED = 'notAllowed';\n DragAndDropService.GHOST_TEMPLATE = '
' +\n ' ' +\n '
' +\n '
' +\n '
';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], DragAndDropService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('dragService')\n ], DragAndDropService.prototype, \"dragService\", void 0);\n __decorate([\n Autowired('environment')\n ], DragAndDropService.prototype, \"environment\", void 0);\n __decorate([\n PostConstruct\n ], DragAndDropService.prototype, \"init\", null);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], DragAndDropService.prototype, \"setBeans\", null);\n __decorate([\n PreDestroy\n ], DragAndDropService.prototype, \"destroy\", null);\n DragAndDropService = DragAndDropService_1 = __decorate([\n Bean('dragAndDropService')\n ], DragAndDropService);\n return DragAndDropService;\n}());\nexport { DragAndDropService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar Events = /** @class */ (function () {\n function Events() {\n }\n /** Everything has changed with the columns. Either complete new set of columns set, or user called setState()*/\n Events.EVENT_COLUMN_EVERYTHING_CHANGED = 'columnEverythingChanged';\n /** User has set in new columns. */\n Events.EVENT_NEW_COLUMNS_LOADED = 'newColumnsLoaded';\n /** The pivot mode flag was changed */\n Events.EVENT_COLUMN_PIVOT_MODE_CHANGED = 'columnPivotModeChanged';\n /** A row group column was added, removed or order changed. */\n Events.EVENT_COLUMN_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n /** expandAll / collapseAll was called from the api. */\n Events.EVENT_EXPAND_COLLAPSE_ALL = 'expandOrCollapseAll';\n /** A pivot column was added, removed or order changed. */\n Events.EVENT_COLUMN_PIVOT_CHANGED = 'columnPivotChanged';\n /** The list of grid columns has changed. */\n Events.EVENT_GRID_COLUMNS_CHANGED = 'gridColumnsChanged';\n /** A value column was added, removed or agg function was changed. */\n Events.EVENT_COLUMN_VALUE_CHANGED = 'columnValueChanged';\n /** A column was moved */\n Events.EVENT_COLUMN_MOVED = 'columnMoved';\n /** One or more columns was shown / hidden */\n Events.EVENT_COLUMN_VISIBLE = 'columnVisible';\n /** One or more columns was pinned / unpinned*/\n Events.EVENT_COLUMN_PINNED = 'columnPinned';\n /** A column group was opened / closed */\n Events.EVENT_COLUMN_GROUP_OPENED = 'columnGroupOpened';\n /** One or more columns was resized. If just one, the column in the event is set. */\n Events.EVENT_COLUMN_RESIZED = 'columnResized';\n /** The list of displayed columns has changed, can result from columns open / close, column move, pivot, group, etc */\n Events.EVENT_DISPLAYED_COLUMNS_CHANGED = 'displayedColumnsChanged';\n /** The list of virtual columns has changed, results from viewport changing */\n Events.EVENT_VIRTUAL_COLUMNS_CHANGED = 'virtualColumnsChanged';\n /** A row group was opened / closed */\n Events.EVENT_ROW_GROUP_OPENED = 'rowGroupOpened';\n /** The client has set new data into the grid */\n Events.EVENT_ROW_DATA_CHANGED = 'rowDataChanged';\n /** The client has updated data for the grid */\n Events.EVENT_ROW_DATA_UPDATED = 'rowDataUpdated';\n /** The client has set new floating data into the grid */\n Events.EVENT_PINNED_ROW_DATA_CHANGED = 'pinnedRowDataChanged';\n /** Range selection has changed */\n Events.EVENT_RANGE_SELECTION_CHANGED = 'rangeSelectionChanged';\n /** Chart Range selection has changed */\n Events.EVENT_CHART_RANGE_SELECTION_CHANGED = 'chartRangeSelectionChanged';\n /** Chart Options have changed */\n Events.EVENT_CHART_OPTIONS_CHANGED = 'chartOptionsChanged';\n /** For when the tool panel is shown / hidden */\n Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED = 'toolPanelVisibleChanged';\n /** Model was updated - grid updates the drawn rows when this happens */\n Events.EVENT_MODEL_UPDATED = 'modelUpdated';\n Events.EVENT_PASTE_START = 'pasteStart';\n Events.EVENT_PASTE_END = 'pasteEnd';\n Events.EVENT_FILL_START = 'fillStart';\n Events.EVENT_FILL_END = 'fillEnd';\n Events.EVENT_CELL_CLICKED = 'cellClicked';\n Events.EVENT_CELL_DOUBLE_CLICKED = 'cellDoubleClicked';\n Events.EVENT_CELL_MOUSE_DOWN = 'cellMouseDown';\n Events.EVENT_CELL_CONTEXT_MENU = 'cellContextMenu';\n Events.EVENT_CELL_VALUE_CHANGED = 'cellValueChanged';\n Events.EVENT_ROW_VALUE_CHANGED = 'rowValueChanged';\n Events.EVENT_CELL_FOCUSED = 'cellFocused';\n Events.EVENT_ROW_SELECTED = 'rowSelected';\n Events.EVENT_SELECTION_CHANGED = 'selectionChanged';\n Events.EVENT_CELL_KEY_DOWN = 'cellKeyDown';\n Events.EVENT_CELL_KEY_PRESS = 'cellKeyPress';\n Events.EVENT_CELL_MOUSE_OVER = 'cellMouseOver';\n Events.EVENT_CELL_MOUSE_OUT = 'cellMouseOut';\n /** 2 events for filtering. The grid LISTENS for filterChanged and afterFilterChanged */\n Events.EVENT_FILTER_CHANGED = 'filterChanged';\n /** Filter was change but not applied. Only useful if apply buttons are used in filters. */\n Events.EVENT_FILTER_MODIFIED = 'filterModified';\n Events.EVENT_FILTER_OPENED = 'filterOpened';\n Events.EVENT_SORT_CHANGED = 'sortChanged';\n /** A row was removed from the dom, for any reason. Use to clean up resources (if any) used by the row. */\n Events.EVENT_VIRTUAL_ROW_REMOVED = 'virtualRowRemoved';\n Events.EVENT_ROW_CLICKED = 'rowClicked';\n Events.EVENT_ROW_DOUBLE_CLICKED = 'rowDoubleClicked';\n /** Gets called once after the grid has finished initialising. */\n Events.EVENT_GRID_READY = 'gridReady';\n /** Width of height of the main grid div has changed. Grid listens for this and does layout of grid if it's\n * changed, so always filling the space it was given. */\n Events.EVENT_GRID_SIZE_CHANGED = 'gridSizeChanged';\n /** The indexes of the rows rendered has changed, eg user has scrolled to a new vertical position. */\n Events.EVENT_VIEWPORT_CHANGED = 'viewportChanged';\n /** Rows were rendered for the first time (ie on async data load). */\n Events.EVENT_FIRST_DATA_RENDERED = 'firstDataRendered';\n /** A column drag has started, either resizing a column or moving a column. */\n Events.EVENT_DRAG_STARTED = 'dragStarted';\n /** A column drag has stopped */\n Events.EVENT_DRAG_STOPPED = 'dragStopped';\n Events.EVENT_ROW_EDITING_STARTED = 'rowEditingStarted';\n Events.EVENT_ROW_EDITING_STOPPED = 'rowEditingStopped';\n Events.EVENT_CELL_EDITING_STARTED = 'cellEditingStarted';\n Events.EVENT_CELL_EDITING_STOPPED = 'cellEditingStopped';\n /** Main body of grid has scrolled, either horizontally or vertically */\n Events.EVENT_BODY_SCROLL = 'bodyScroll';\n Events.EVENT_ANIMATION_QUEUE_EMPTY = 'animationQueueEmpty';\n Events.EVENT_HEIGHT_SCALE_CHANGED = 'heightScaleChanged';\n /** The displayed page for pagination has changed. For example the data was filtered or sorted,\n * or the user has moved to a different page. */\n Events.EVENT_PAGINATION_CHANGED = 'paginationChanged';\n /** Only used by React, Angular 2+, Web Components and VueJS ag-Grid components\n * (not used if doing plain JavaScript or Angular 1.x). If the grid receives changes due\n * to bound properties, this event fires after the grid has finished processing the change. */\n Events.EVENT_COMPONENT_STATE_CHANGED = 'componentStateChanged';\n /** All items from here down are used internally by the grid, not intended for external use. */\n // not documented, either experimental, or we just don't want users using an depending on them\n Events.EVENT_BODY_HEIGHT_CHANGED = 'bodyHeightChanged';\n Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED = 'displayedColumnsWidthChanged';\n Events.EVENT_SCROLL_VISIBILITY_CHANGED = 'scrollVisibilityChanged';\n Events.EVENT_COLUMN_HOVER_CHANGED = 'columnHoverChanged';\n Events.EVENT_FLASH_CELLS = 'flashCells';\n Events.EVENT_ROW_DRAG_ENTER = 'rowDragEnter';\n Events.EVENT_ROW_DRAG_MOVE = 'rowDragMove';\n Events.EVENT_ROW_DRAG_LEAVE = 'rowDragLeave';\n Events.EVENT_ROW_DRAG_END = 'rowDragEnd';\n // primarily for charts\n Events.EVENT_POPUP_TO_FRONT = 'popupToFront';\n // these are used for server side group and agg - only used by CS with Viewport Row Model - intention is\n // to design these better around server side functions and then release to general public when fully working with\n // all the row models.\n Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST = 'columnRowGroupChangeRequest';\n Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST = 'columnPivotChangeRequest';\n Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST = 'columnValueChangeRequest';\n Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST = 'columnAggFuncChangeRequest';\n return Events;\n}());\nexport { Events };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { EventService } from \"../eventService\";\nimport { Events } from \"../events\";\nimport { Autowired } from \"../context/context\";\nimport { Constants } from \"../constants\";\nimport { _ } from \"../utils\";\nvar RowNode = /** @class */ (function () {\n function RowNode() {\n /** Children mapped by the pivot columns */\n this.childrenMapped = {};\n /** True by default - can be overridden via gridOptions.isRowSelectable(rowNode) */\n this.selectable = true;\n /** Used by sorting service - to give deterministic sort to groups. Previously we\n * just id for this, however id is a string and had slower sorting compared to numbers. */\n this.__objectId = RowNode.OBJECT_ID_SEQUENCE++;\n /** True when nodes with the same id are being removed and added as part of the same batch transaction */\n this.alreadyRendered = false;\n this.selected = false;\n }\n RowNode.prototype.setData = function (data) {\n var oldData = this.data;\n this.data = data;\n this.valueCache.onDataChanged();\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n // when we are doing master / detail, the detail node is lazy created, but then kept around.\n // so if we show / hide the detail, the same detail rowNode is used. so we need to keep the data\n // in sync, otherwise expand/collapse of the detail would still show the old values.\n RowNode.prototype.updateDataOnDetailNode = function () {\n if (this.detailNode) {\n this.detailNode.data = this.data;\n }\n };\n RowNode.prototype.createDataChangedEvent = function (newData, oldData, update) {\n return {\n type: RowNode.EVENT_DATA_CHANGED,\n node: this,\n oldData: oldData,\n newData: newData,\n update: update\n };\n };\n RowNode.prototype.createLocalRowEvent = function (type) {\n return {\n type: type,\n node: this\n };\n };\n // similar to setRowData, however it is expected that the data is the same data item. this\n // is intended to be used with Redux type stores, where the whole data can be changed. we are\n // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the\n // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving\n // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).\n RowNode.prototype.updateData = function (data) {\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n this.updateDataOnDetailNode();\n var event = this.createDataChangedEvent(data, oldData, true);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.getRowIndexString = function () {\n if (this.rowPinned === Constants.PINNED_TOP) {\n return 't-' + this.rowIndex;\n }\n else if (this.rowPinned === Constants.PINNED_BOTTOM) {\n return 'b-' + this.rowIndex;\n }\n else {\n return this.rowIndex.toString();\n }\n };\n RowNode.prototype.createDaemonNode = function () {\n var oldNode = new RowNode();\n this.context.wireBean(oldNode);\n // just copy the id and data, this is enough for the node to be used\n // in the selection controller (the selection controller is the only\n // place where daemon nodes can live).\n oldNode.id = this.id;\n oldNode.data = this.data;\n oldNode.daemon = true;\n oldNode.selected = this.selected;\n oldNode.level = this.level;\n return oldNode;\n };\n RowNode.prototype.setDataAndId = function (data, id) {\n var oldNode = _.exists(this.id) ? this.createDaemonNode() : null;\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.setId(id);\n this.selectionController.syncInRowNode(this, oldNode);\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.checkRowSelectable = function () {\n var isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n var shouldInvokeIsRowSelectable = isRowSelectableFunc && _.exists(this);\n this.setRowSelectable(shouldInvokeIsRowSelectable ? isRowSelectableFunc(this) : true);\n };\n RowNode.prototype.setRowSelectable = function (newVal) {\n if (this.selectable !== newVal) {\n this.selectable = newVal;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_SELECTABLE_CHANGED));\n }\n }\n };\n RowNode.prototype.setId = function (id) {\n // see if user is providing the id's\n var getRowNodeId = this.gridOptionsWrapper.getRowNodeIdFunc();\n if (getRowNodeId) {\n // if user is providing the id's, then we set the id only after the data has been set.\n // this is important for virtual pagination and viewport, where empty rows exist.\n if (this.data) {\n this.id = getRowNodeId(this.data);\n }\n else {\n // this can happen if user has set blank into the rowNode after the row previously\n // having data. this happens in virtual page row model, when data is delete and\n // the page is refreshed.\n this.id = undefined;\n }\n }\n else {\n this.id = id;\n }\n };\n RowNode.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.rowTop && pixel < (this.rowTop + this.rowHeight);\n };\n RowNode.prototype.clearRowTop = function () {\n this.oldRowTop = this.rowTop;\n this.setRowTop(null);\n };\n RowNode.prototype.setFirstChild = function (firstChild) {\n if (this.firstChild === firstChild) {\n return;\n }\n this.firstChild = firstChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_FIRST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setLastChild = function (lastChild) {\n if (this.lastChild === lastChild) {\n return;\n }\n this.lastChild = lastChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_LAST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setChildIndex = function (childIndex) {\n if (this.childIndex === childIndex) {\n return;\n }\n this.childIndex = childIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_CHILD_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setRowTop = function (rowTop) {\n if (this.rowTop === rowTop) {\n return;\n }\n this.rowTop = rowTop;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_TOP_CHANGED));\n }\n };\n RowNode.prototype.setDragging = function (dragging) {\n if (this.dragging === dragging) {\n return;\n }\n this.dragging = dragging;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DRAGGING_CHANGED));\n }\n };\n RowNode.prototype.setAllChildrenCount = function (allChildrenCount) {\n if (this.allChildrenCount === allChildrenCount) {\n return;\n }\n this.allChildrenCount = allChildrenCount;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED));\n }\n };\n RowNode.prototype.setRowHeight = function (rowHeight, estimated) {\n if (estimated === void 0) { estimated = false; }\n this.rowHeight = rowHeight;\n this.rowHeightEstimated = estimated;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HEIGHT_CHANGED));\n }\n };\n RowNode.prototype.setRowIndex = function (rowIndex) {\n this.rowIndex = rowIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setUiLevel = function (uiLevel) {\n if (this.uiLevel === uiLevel) {\n return;\n }\n this.uiLevel = uiLevel;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_UI_LEVEL_CHANGED));\n }\n };\n RowNode.prototype.setExpanded = function (expanded) {\n if (this.expanded === expanded) {\n return;\n }\n this.expanded = expanded;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_EXPANDED_CHANGED));\n }\n var event = this.createGlobalRowEvent(Events.EVENT_ROW_GROUP_OPENED);\n this.mainEventService.dispatchEvent(event);\n if (this.gridOptionsWrapper.isGroupIncludeFooter()) {\n this.gridApi.redrawRows({ rowNodes: [this] });\n }\n };\n RowNode.prototype.createGlobalRowEvent = function (type) {\n var event = {\n type: type,\n node: this,\n data: this.data,\n rowIndex: this.rowIndex,\n rowPinned: this.rowPinned,\n context: this.gridOptionsWrapper.getContext(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n return event;\n };\n RowNode.prototype.dispatchLocalEvent = function (event) {\n if (this.eventService) {\n this.eventService.dispatchEvent(event);\n }\n };\n // we also allow editing the value via the editors. when it is done via\n // the editors, no 'cell changed' event gets fired, as it's assumed that\n // the cell knows about the change given it's in charge of the editing.\n // this method is for the client to call, so the cell listens for the change\n // event, and also flashes the cell when the change occurs.\n RowNode.prototype.setDataValue = function (colKey, newValue) {\n var column = this.columnController.getPrimaryColumn(colKey);\n this.valueService.setValue(this, column, newValue);\n this.dispatchCellChangedEvent(column, newValue);\n };\n RowNode.prototype.setGroupValue = function (colKey, newValue) {\n var column = this.columnController.getGridColumn(colKey);\n if (_.missing(this.groupData)) {\n this.groupData = {};\n }\n this.groupData[column.getColId()] = newValue;\n this.dispatchCellChangedEvent(column, newValue);\n };\n // sets the data for an aggregation\n RowNode.prototype.setAggData = function (newAggData) {\n var _this = this;\n // find out all keys that could potentially change\n var colIds = _.getAllKeysInObjects([this.aggData, newAggData]);\n this.aggData = newAggData;\n // if no event service, nobody has registered for events, so no need fire event\n if (this.eventService) {\n colIds.forEach(function (colId) {\n var column = _this.columnController.getGridColumn(colId);\n var value = _this.aggData ? _this.aggData[colId] : undefined;\n _this.dispatchCellChangedEvent(column, value);\n });\n }\n };\n RowNode.prototype.hasChildren = function () {\n // we need to return true when this.group=true, as this is used by server side row model\n // (as children are lazy loaded and stored in a cache anyway). otherwise we return true\n // if children exist.\n return this.group || (this.childrenAfterGroup && this.childrenAfterGroup.length > 0);\n };\n RowNode.prototype.isEmptyRowGroupNode = function () {\n return this.group && _.missingOrEmpty(this.childrenAfterGroup);\n };\n RowNode.prototype.dispatchCellChangedEvent = function (column, newValue) {\n var cellChangedEvent = {\n type: RowNode.EVENT_CELL_CHANGED,\n node: this,\n column: column,\n newValue: newValue\n };\n this.dispatchLocalEvent(cellChangedEvent);\n };\n RowNode.prototype.resetQuickFilterAggregateText = function () {\n this.quickFilterAggregateText = null;\n };\n RowNode.prototype.isExpandable = function () {\n return this.hasChildren() || this.master;\n };\n RowNode.prototype.isSelected = function () {\n // for footers, we just return what our sibling selected state is, as cannot select a footer\n if (this.footer) {\n return this.sibling.isSelected();\n }\n return this.selected;\n };\n RowNode.prototype.depthFirstSearch = function (callback) {\n if (this.childrenAfterGroup) {\n this.childrenAfterGroup.forEach(function (child) { return child.depthFirstSearch(callback); });\n }\n callback(this);\n };\n // + rowController.updateGroupsInSelection()\n // + selectionController.calculatedSelectedForAllGroupNodes()\n RowNode.prototype.calculateSelectedFromChildren = function () {\n var atLeastOneSelected = false;\n var atLeastOneDeSelected = false;\n var atLeastOneMixed = false;\n var newSelectedValue;\n if (this.childrenAfterGroup) {\n for (var i = 0; i < this.childrenAfterGroup.length; i++) {\n var child = this.childrenAfterGroup[i];\n // skip non-selectable nodes to prevent inconsistent selection values\n if (!child.selectable) {\n continue;\n }\n var childState = child.isSelected();\n switch (childState) {\n case true:\n atLeastOneSelected = true;\n break;\n case false:\n atLeastOneDeSelected = true;\n break;\n default:\n atLeastOneMixed = true;\n break;\n }\n }\n }\n if (atLeastOneMixed) {\n newSelectedValue = undefined;\n }\n else if (atLeastOneSelected && !atLeastOneDeSelected) {\n newSelectedValue = true;\n }\n else if (!atLeastOneSelected && atLeastOneDeSelected) {\n newSelectedValue = false;\n }\n else {\n newSelectedValue = undefined;\n }\n this.selectThisNode(newSelectedValue);\n };\n RowNode.prototype.setSelectedInitialValue = function (selected) {\n this.selected = selected;\n };\n RowNode.prototype.setSelected = function (newValue, clearSelection, suppressFinishActions) {\n if (clearSelection === void 0) { clearSelection = false; }\n if (suppressFinishActions === void 0) { suppressFinishActions = false; }\n this.setSelectedParams({\n newValue: newValue,\n clearSelection: clearSelection,\n suppressFinishActions: suppressFinishActions,\n rangeSelect: false\n });\n };\n RowNode.prototype.isRowPinned = function () {\n return this.rowPinned === Constants.PINNED_TOP || this.rowPinned === Constants.PINNED_BOTTOM;\n };\n // to make calling code more readable, this is the same method as setSelected except it takes names parameters\n RowNode.prototype.setSelectedParams = function (params) {\n var groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n var newValue = params.newValue === true;\n var clearSelection = params.clearSelection === true;\n var suppressFinishActions = params.suppressFinishActions === true;\n var rangeSelect = params.rangeSelect === true;\n // groupSelectsFiltered only makes sense when group selects children\n var groupSelectsFiltered = groupSelectsChildren && (params.groupSelectsFiltered === true);\n if (this.id === undefined) {\n console.warn('ag-Grid: cannot select node until id for node is known');\n return 0;\n }\n if (this.rowPinned) {\n console.warn('ag-Grid: cannot select pinned rows');\n return 0;\n }\n // if we are a footer, we don't do selection, just pass the info\n // to the sibling (the parent of the group)\n if (this.footer) {\n var count = this.sibling.setSelectedParams(params);\n return count;\n }\n if (rangeSelect) {\n var newRowClicked = this.selectionController.getLastSelectedNode() !== this;\n var allowMultiSelect = this.gridOptionsWrapper.isRowSelectionMulti();\n if (newRowClicked && allowMultiSelect) {\n return this.doRowRangeSelection();\n }\n }\n var updatedCount = 0;\n // when groupSelectsFiltered, then this node may end up intermediate despite\n // trying to set it to true / false. this group will be calculated further on\n // down when we call calculatedSelectedForAllGroupNodes(). we need to skip it\n // here, otherwise the updatedCount would include it.\n var skipThisNode = groupSelectsFiltered && this.group;\n if (!skipThisNode) {\n var thisNodeWasSelected = this.selectThisNode(newValue);\n if (thisNodeWasSelected) {\n updatedCount++;\n }\n }\n if (groupSelectsChildren && this.group) {\n updatedCount += this.selectChildNodes(newValue, groupSelectsFiltered);\n }\n // clear other nodes if not doing multi select\n if (!suppressFinishActions) {\n var clearOtherNodes = newValue && (clearSelection || !this.gridOptionsWrapper.isRowSelectionMulti());\n if (clearOtherNodes) {\n updatedCount += this.selectionController.clearOtherNodes(this);\n }\n // only if we selected something, then update groups and fire events\n if (updatedCount > 0) {\n this.selectionController.updateGroupsFromChildrenSelections();\n // this is the very end of the 'action node', so we are finished all the updates,\n // include any parent / child changes that this method caused\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.mainEventService.dispatchEvent(event_1);\n }\n // so if user next does shift-select, we know where to start the selection from\n if (newValue) {\n this.selectionController.setLastSelectedNode(this);\n }\n }\n return updatedCount;\n };\n // selects all rows between this node and the last selected node (or the top if this is the first selection).\n // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by\n // holding down 'shift'.\n RowNode.prototype.doRowRangeSelection = function () {\n var updatedCount = 0;\n var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n var lastSelectedNode = this.selectionController.getLastSelectedNode();\n var nodesToSelect = this.rowModel.getNodesInRangeForSelection(this, lastSelectedNode);\n nodesToSelect.forEach(function (rowNode) {\n if (rowNode.group && groupsSelectChildren) {\n return;\n }\n var nodeWasSelected = rowNode.selectThisNode(true);\n if (nodeWasSelected) {\n updatedCount++;\n }\n });\n this.selectionController.updateGroupsFromChildrenSelections();\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.mainEventService.dispatchEvent(event);\n return updatedCount;\n };\n RowNode.prototype.isParentOfNode = function (potentialParent) {\n var parentNode = this.parent;\n while (parentNode) {\n if (parentNode === potentialParent) {\n return true;\n }\n parentNode = parentNode.parent;\n }\n return false;\n };\n RowNode.prototype.selectThisNode = function (newValue) {\n if (!this.selectable || this.selected === newValue) {\n return false;\n }\n this.selected = newValue;\n if (this.eventService) {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_SELECTED));\n }\n var event = this.createGlobalRowEvent(Events.EVENT_ROW_SELECTED);\n this.mainEventService.dispatchEvent(event);\n return true;\n };\n RowNode.prototype.selectChildNodes = function (newValue, groupSelectsFiltered) {\n var children = groupSelectsFiltered ? this.childrenAfterFilter : this.childrenAfterGroup;\n var updatedCount = 0;\n if (_.missing(children)) {\n return;\n }\n for (var i = 0; i < children.length; i++) {\n updatedCount += children[i].setSelectedParams({\n newValue: newValue,\n clearSelection: false,\n suppressFinishActions: true,\n groupSelectsFiltered: groupSelectsFiltered\n });\n }\n return updatedCount;\n };\n RowNode.prototype.addEventListener = function (eventType, listener) {\n if (!this.eventService) {\n this.eventService = new EventService();\n }\n this.eventService.addEventListener(eventType, listener);\n };\n RowNode.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n RowNode.prototype.onMouseEnter = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_ENTER));\n };\n RowNode.prototype.onMouseLeave = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_LEAVE));\n };\n RowNode.prototype.getFirstChildOfFirstChild = function (rowGroupColumn) {\n var currentRowNode = this;\n // if we are hiding groups, then if we are the first child, of the first child,\n // all the way up to the column we are interested in, then we show the group cell.\n var isCandidate = true;\n var foundFirstChildPath = false;\n var nodeToSwapIn;\n while (isCandidate && !foundFirstChildPath) {\n var parentRowNode = currentRowNode.parent;\n var firstChild = _.exists(parentRowNode) && currentRowNode.firstChild;\n if (firstChild) {\n if (parentRowNode.rowGroupColumn === rowGroupColumn) {\n foundFirstChildPath = true;\n nodeToSwapIn = parentRowNode;\n }\n }\n else {\n isCandidate = false;\n }\n currentRowNode = parentRowNode;\n }\n return foundFirstChildPath ? nodeToSwapIn : null;\n };\n RowNode.prototype.isFullWidthCell = function () {\n var isFullWidthCellFunc = this.gridOptionsWrapper.getIsFullWidthCellFunc();\n return isFullWidthCellFunc ? isFullWidthCellFunc(this) : false;\n };\n RowNode.OBJECT_ID_SEQUENCE = 0;\n RowNode.EVENT_ROW_SELECTED = 'rowSelected';\n RowNode.EVENT_DATA_CHANGED = 'dataChanged';\n RowNode.EVENT_CELL_CHANGED = 'cellChanged';\n RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED = 'allChildrenCountChanged';\n RowNode.EVENT_MOUSE_ENTER = 'mouseEnter';\n RowNode.EVENT_MOUSE_LEAVE = 'mouseLeave';\n RowNode.EVENT_HEIGHT_CHANGED = 'heightChanged';\n RowNode.EVENT_TOP_CHANGED = 'topChanged';\n RowNode.EVENT_FIRST_CHILD_CHANGED = 'firstChildChanged';\n RowNode.EVENT_LAST_CHILD_CHANGED = 'lastChildChanged';\n RowNode.EVENT_CHILD_INDEX_CHANGED = 'childIndexChanged';\n RowNode.EVENT_ROW_INDEX_CHANGED = 'rowIndexChanged';\n RowNode.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n RowNode.EVENT_SELECTABLE_CHANGED = 'selectableChanged';\n RowNode.EVENT_UI_LEVEL_CHANGED = 'uiLevelChanged';\n RowNode.EVENT_DRAGGING_CHANGED = 'draggingChanged';\n __decorate([\n Autowired('eventService')\n ], RowNode.prototype, \"mainEventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RowNode.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('selectionController')\n ], RowNode.prototype, \"selectionController\", void 0);\n __decorate([\n Autowired('columnController')\n ], RowNode.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('valueService')\n ], RowNode.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('rowModel')\n ], RowNode.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('context')\n ], RowNode.prototype, \"context\", void 0);\n __decorate([\n Autowired('valueCache')\n ], RowNode.prototype, \"valueCache\", void 0);\n __decorate([\n Autowired('columnApi')\n ], RowNode.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], RowNode.prototype, \"gridApi\", void 0);\n return RowNode;\n}());\nexport { RowNode };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { EventService } from \"../eventService\";\nimport { Autowired, PreDestroy } from \"./context\";\nimport { _ } from \"../utils\";\nvar BeanStub = /** @class */ (function () {\n function BeanStub() {\n var _this = this;\n this.destroyFunctions = [];\n this.destroyed = false;\n this.getContext = function () { return _this.context; };\n this.isAlive = function () { return !_this.destroyed; };\n }\n // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are\n // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed\n // points to a bean or component that was not properly disposed of.\n // constructor() {\n // setTimeout(()=> {\n // if (this.isAlive()) {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n // console.log('is alive ' + beanName);\n // }\n // }, 5000);\n // }\n // CellComp and GridComp and override this because they get the FrameworkOverrides from the Beans bean\n BeanStub.prototype.getFrameworkOverrides = function () {\n return this.frameworkOverrides;\n };\n BeanStub.prototype.destroy = function () {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n this.destroyFunctions.forEach(function (func) { return func(); });\n this.destroyFunctions.length = 0;\n this.destroyed = true;\n this.dispatchEvent({ type: BeanStub.EVENT_DESTROYED });\n };\n BeanStub.prototype.addEventListener = function (eventType, listener) {\n if (!this.localEventService) {\n this.localEventService = new EventService();\n }\n this.localEventService.addEventListener(eventType, listener);\n };\n BeanStub.prototype.removeEventListener = function (eventType, listener) {\n if (this.localEventService) {\n this.localEventService.removeEventListener(eventType, listener);\n }\n };\n BeanStub.prototype.dispatchEventAsync = function (event) {\n var _this = this;\n window.setTimeout(function () { return _this.dispatchEvent(event); }, 0);\n };\n BeanStub.prototype.dispatchEvent = function (event) {\n if (this.localEventService) {\n this.localEventService.dispatchEvent(event);\n }\n };\n BeanStub.prototype.addDestroyableEventListener = function (object, event, listener) {\n var _this = this;\n if (this.destroyed) {\n return;\n }\n if (object instanceof HTMLElement) {\n _.addSafePassiveEventListener(this.getFrameworkOverrides(), object, event, listener);\n }\n else {\n object.addEventListener(event, listener);\n }\n var destroyFunc = function () {\n object.removeEventListener(event, listener);\n _this.destroyFunctions = _this.destroyFunctions.filter(function (fn) { return fn !== destroyFunc; });\n };\n this.destroyFunctions.push(destroyFunc);\n return destroyFunc;\n };\n BeanStub.prototype.addDestroyFunc = function (func) {\n // if we are already destroyed, we execute the func now\n if (this.isAlive()) {\n this.destroyFunctions.push(func);\n }\n else {\n func();\n }\n };\n BeanStub.prototype.wireDependentBean = function (bean, context) {\n if (bean.destroy) {\n this.addDestroyFunc(bean.destroy.bind(bean));\n }\n return this.wireBean(bean, context);\n };\n BeanStub.prototype.wireBean = function (bean, context) {\n (context || this.getContext()).wireBean(bean);\n return bean;\n };\n BeanStub.EVENT_DESTROYED = 'destroyed';\n __decorate([\n Autowired('context')\n ], BeanStub.prototype, \"context\", void 0);\n __decorate([\n Autowired('frameworkOverrides')\n ], BeanStub.prototype, \"frameworkOverrides\", void 0);\n __decorate([\n PreDestroy\n ], BeanStub.prototype, \"destroy\", null);\n return BeanStub;\n}());\nexport { BeanStub };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { ColumnGroup } from \"./columnGroup\";\nimport { Column } from \"./column\";\nimport { EventService } from \"../eventService\";\nvar OriginalColumnGroup = /** @class */ (function () {\n function OriginalColumnGroup(colGroupDef, groupId, padding, level) {\n this.localEventService = new EventService();\n this.expandable = false;\n this.colGroupDef = colGroupDef;\n this.groupId = groupId;\n this.expanded = colGroupDef && !!colGroupDef.openByDefault;\n this.padding = padding;\n this.level = level;\n }\n OriginalColumnGroup.prototype.setOriginalParent = function (originalParent) {\n this.originalParent = originalParent;\n };\n OriginalColumnGroup.prototype.getOriginalParent = function () {\n return this.originalParent;\n };\n OriginalColumnGroup.prototype.getLevel = function () {\n return this.level;\n };\n OriginalColumnGroup.prototype.isVisible = function () {\n // return true if at least one child is visible\n if (this.children) {\n return this.children.some(function (child) { return child.isVisible(); });\n }\n return false;\n };\n OriginalColumnGroup.prototype.isPadding = function () {\n return this.padding;\n };\n OriginalColumnGroup.prototype.setExpanded = function (expanded) {\n this.expanded = expanded === undefined ? false : expanded;\n var event = {\n type: OriginalColumnGroup.EVENT_EXPANDED_CHANGED\n };\n this.localEventService.dispatchEvent(event);\n };\n OriginalColumnGroup.prototype.isExpandable = function () {\n return this.expandable;\n };\n OriginalColumnGroup.prototype.isExpanded = function () {\n return this.expanded;\n };\n OriginalColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n OriginalColumnGroup.prototype.getId = function () {\n return this.getGroupId();\n };\n OriginalColumnGroup.prototype.setChildren = function (children) {\n this.children = children;\n };\n OriginalColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n OriginalColumnGroup.prototype.getColGroupDef = function () {\n return this.colGroupDef;\n };\n OriginalColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n OriginalColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n if (!this.children) {\n return;\n }\n this.children.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof OriginalColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n OriginalColumnGroup.prototype.getColumnGroupShow = function () {\n return this.padding ? ColumnGroup.HEADER_GROUP_PADDING : this.colGroupDef.columnGroupShow;\n };\n // need to check that this group has at least one col showing when both expanded and contracted.\n // if not, then we don't allow expanding and contracting on this group\n OriginalColumnGroup.prototype.setupExpandable = function () {\n var _this = this;\n this.setExpandable();\n // note - we should be removing this event listener\n this.getLeafColumns().forEach(function (col) { return col.addEventListener(Column.EVENT_VISIBLE_CHANGED, _this.onColumnVisibilityChanged.bind(_this)); });\n };\n OriginalColumnGroup.prototype.setExpandable = function () {\n if (this.isPadding()) {\n return;\n }\n // want to make sure the group doesn't disappear when it's open\n var atLeastOneShowingWhenOpen = false;\n // want to make sure the group doesn't disappear when it's closed\n var atLeastOneShowingWhenClosed = false;\n // want to make sure the group has something to show / hide\n var atLeastOneChangeable = false;\n var children = this.findChildren();\n for (var i = 0, j = children.length; i < j; i++) {\n var abstractColumn = children[i];\n if (!abstractColumn.isVisible()) {\n continue;\n }\n // if the abstractColumn is a grid generated group, there will be no colDef\n var headerGroupShow = abstractColumn.getColumnGroupShow();\n if (headerGroupShow === ColumnGroup.HEADER_GROUP_SHOW_OPEN) {\n atLeastOneShowingWhenOpen = true;\n atLeastOneChangeable = true;\n }\n else if (headerGroupShow === ColumnGroup.HEADER_GROUP_SHOW_CLOSED) {\n atLeastOneShowingWhenClosed = true;\n atLeastOneChangeable = true;\n }\n else {\n atLeastOneShowingWhenOpen = true;\n atLeastOneShowingWhenClosed = true;\n if (headerGroupShow === ColumnGroup.HEADER_GROUP_PADDING) {\n var column = abstractColumn;\n atLeastOneChangeable = atLeastOneChangeable || column.children.some(function (child) { return child.getColumnGroupShow() !== undefined; });\n }\n }\n }\n var expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;\n if (this.expandable !== expandable) {\n this.expandable = expandable;\n var event_1 = {\n type: OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED\n };\n this.localEventService.dispatchEvent(event_1);\n }\n };\n OriginalColumnGroup.prototype.findChildren = function () {\n var children = this.children;\n var firstChild = children[0];\n if (firstChild && (!firstChild.isPadding || !firstChild.isPadding())) {\n return children;\n }\n while (children.length === 1 && children[0] instanceof OriginalColumnGroup) {\n children = children[0].children;\n }\n return children;\n };\n OriginalColumnGroup.prototype.onColumnVisibilityChanged = function () {\n this.setExpandable();\n };\n OriginalColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n OriginalColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n OriginalColumnGroup.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED = 'expandableChanged';\n return OriginalColumnGroup;\n}());\nexport { OriginalColumnGroup };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Column } from \"./column\";\nimport { EventService } from \"../eventService\";\nimport { Autowired } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar ColumnGroup = /** @class */ (function () {\n function ColumnGroup(originalColumnGroup, groupId, instanceId, pinned) {\n // depends on the open/closed state of the group, only displaying columns are stored here\n this.displayedChildren = [];\n this.localEventService = new EventService();\n this.groupId = groupId;\n this.instanceId = instanceId;\n this.originalColumnGroup = originalColumnGroup;\n this.pinned = pinned;\n }\n // this is static, a it is used outside of this class\n ColumnGroup.createUniqueId = function (groupId, instanceId) {\n return groupId + '_' + instanceId;\n };\n // as the user is adding and removing columns, the groups are recalculated.\n // this reset clears out all children, ready for children to be added again\n ColumnGroup.prototype.reset = function () {\n this.parent = null;\n this.children = null;\n this.displayedChildren = null;\n };\n ColumnGroup.prototype.getParent = function () {\n return this.parent;\n };\n ColumnGroup.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n ColumnGroup.prototype.getUniqueId = function () {\n return ColumnGroup.createUniqueId(this.groupId, this.instanceId);\n };\n ColumnGroup.prototype.isEmptyGroup = function () {\n return this.displayedChildren.length === 0;\n };\n ColumnGroup.prototype.isMoving = function () {\n var allLeafColumns = this.getOriginalColumnGroup().getLeafColumns();\n if (!allLeafColumns || allLeafColumns.length === 0) {\n return false;\n }\n return allLeafColumns.every(function (col) { return col.isMoving(); });\n };\n ColumnGroup.prototype.checkLeft = function () {\n // first get all children to setLeft, as it impacts our decision below\n this.displayedChildren.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n child.checkLeft();\n }\n });\n // set our left based on first displayed column\n if (this.displayedChildren.length > 0) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n var lastChild = _.last(this.displayedChildren);\n var lastChildLeft = lastChild.getLeft();\n this.setLeft(lastChildLeft);\n }\n else {\n var firstChildLeft = this.displayedChildren[0].getLeft();\n this.setLeft(firstChildLeft);\n }\n }\n else {\n // this should never happen, as if we have no displayed columns, then\n // this groups should not even exist.\n this.setLeft(null);\n }\n };\n ColumnGroup.prototype.getLeft = function () {\n return this.left;\n };\n ColumnGroup.prototype.getOldLeft = function () {\n return this.oldLeft;\n };\n ColumnGroup.prototype.setLeft = function (left) {\n this.oldLeft = left;\n if (this.left !== left) {\n this.left = left;\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_LEFT_CHANGED));\n }\n };\n ColumnGroup.prototype.getPinned = function () {\n return this.pinned;\n };\n ColumnGroup.prototype.createAgEvent = function (type) {\n return { type: type };\n };\n ColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n ColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n ColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n ColumnGroup.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n ColumnGroup.prototype.isChildInThisGroupDeepSearch = function (wantedChild) {\n var result = false;\n this.children.forEach(function (foundChild) {\n if (wantedChild === foundChild) {\n result = true;\n }\n if (foundChild instanceof ColumnGroup) {\n if (foundChild.isChildInThisGroupDeepSearch(wantedChild)) {\n result = true;\n }\n }\n });\n return result;\n };\n ColumnGroup.prototype.getActualWidth = function () {\n var groupActualWidth = 0;\n if (this.displayedChildren) {\n this.displayedChildren.forEach(function (child) {\n groupActualWidth += child.getActualWidth();\n });\n }\n return groupActualWidth;\n };\n ColumnGroup.prototype.isResizable = function () {\n if (!this.displayedChildren) {\n return false;\n }\n // if at least one child is resizable, then the group is resizable\n var result = false;\n this.displayedChildren.forEach(function (child) {\n if (child.isResizable()) {\n result = true;\n }\n });\n return result;\n };\n ColumnGroup.prototype.getMinWidth = function () {\n var result = 0;\n this.displayedChildren.forEach(function (groupChild) {\n result += groupChild.getMinWidth();\n });\n return result;\n };\n ColumnGroup.prototype.addChild = function (child) {\n if (!this.children) {\n this.children = [];\n }\n this.children.push(child);\n };\n ColumnGroup.prototype.getDisplayedChildren = function () {\n return this.displayedChildren;\n };\n ColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n ColumnGroup.prototype.getDisplayedLeafColumns = function () {\n var result = [];\n this.addDisplayedLeafColumns(result);\n return result;\n };\n // why two methods here doing the same thing?\n ColumnGroup.prototype.getDefinition = function () {\n return this.originalColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.getColGroupDef = function () {\n return this.originalColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.isPadding = function () {\n return this.originalColumnGroup.isPadding();\n };\n ColumnGroup.prototype.isExpandable = function () {\n return this.originalColumnGroup.isExpandable();\n };\n ColumnGroup.prototype.isExpanded = function () {\n return this.originalColumnGroup.isExpanded();\n };\n ColumnGroup.prototype.setExpanded = function (expanded) {\n this.originalColumnGroup.setExpanded(expanded);\n };\n ColumnGroup.prototype.addDisplayedLeafColumns = function (leafColumns) {\n this.displayedChildren.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addDisplayedLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n this.children.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n ColumnGroup.prototype.getColumnGroupShow = function () {\n return this.originalColumnGroup.getColumnGroupShow();\n };\n ColumnGroup.prototype.getOriginalColumnGroup = function () {\n return this.originalColumnGroup;\n };\n ColumnGroup.prototype.calculateDisplayedColumns = function () {\n var _this = this;\n // clear out last time we calculated\n this.displayedChildren = [];\n var topLevelGroup = this;\n // find the column group that is controlling expandable. this is relevant when we have padding (empty)\n // groups, where the expandable is actually the first parent that is not a padding group.\n if (this.isPadding()) {\n while (topLevelGroup.getParent() && topLevelGroup.isPadding()) {\n topLevelGroup = topLevelGroup.getParent();\n }\n }\n var isExpandable = topLevelGroup.originalColumnGroup.isExpandable();\n // it not expandable, everything is visible\n if (!isExpandable) {\n this.displayedChildren = this.children;\n }\n else {\n // Add cols based on columnGroupShow\n // Note - the below also adds padding groups, these are always added because they never have\n // colDef.columnGroupShow set.\n this.children.forEach(function (abstractColumn) {\n var headerGroupShow = abstractColumn.getColumnGroupShow();\n switch (headerGroupShow) {\n case ColumnGroup.HEADER_GROUP_SHOW_OPEN:\n // when set to open, only show col if group is open\n if (topLevelGroup.originalColumnGroup.isExpanded()) {\n _this.displayedChildren.push(abstractColumn);\n }\n break;\n case ColumnGroup.HEADER_GROUP_SHOW_CLOSED:\n // when set to open, only show col if group is open\n if (!topLevelGroup.originalColumnGroup.isExpanded()) {\n _this.displayedChildren.push(abstractColumn);\n }\n break;\n default:\n // if this abstractColumn is padding, we just want to add it\n // to the displayedChildren list if it has displayedChildren itself.\n if (!(abstractColumn instanceof ColumnGroup &&\n abstractColumn.isPadding() &&\n !abstractColumn.displayedChildren.length)) {\n _this.displayedChildren.push(abstractColumn);\n }\n break;\n }\n });\n }\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));\n };\n ColumnGroup.HEADER_GROUP_SHOW_OPEN = 'open';\n ColumnGroup.HEADER_GROUP_SHOW_CLOSED = 'closed';\n ColumnGroup.HEADER_GROUP_PADDING = 'padding';\n ColumnGroup.EVENT_LEFT_CHANGED = 'leftChanged';\n ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED = 'displayedChildrenChanged';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ColumnGroup.prototype, \"gridOptionsWrapper\", void 0);\n return ColumnGroup;\n}());\nexport { ColumnGroup };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Bean } from \"./context/context\";\nimport { Qualifier } from \"./context/context\";\nvar EventService = /** @class */ (function () {\n function EventService() {\n this.allSyncListeners = new Map();\n this.allAsyncListeners = new Map();\n this.globalSyncListeners = new Set();\n this.globalAsyncListeners = new Set();\n this.asyncFunctionsQueue = [];\n this.scheduled = false;\n // using an object performs better than a Set for the number of different events we have\n this.firedEvents = {};\n }\n EventService_1 = EventService;\n // because this class is used both inside the context and outside the context, we do not\n // use autowired attributes, as that would be confusing, as sometimes the attributes\n // would be wired, and sometimes not.\n //\n // the global event servers used by ag-Grid is autowired by the context once, and this\n // setBeans method gets called once.\n //\n // the times when this class is used outside of the context (eg RowNode has an instance of this\n // class) then it is not a bean, and this setBeans method is not called.\n EventService.prototype.setBeans = function (loggerFactory, gridOptionsWrapper, globalEventListener) {\n if (globalEventListener === void 0) { globalEventListener = null; }\n this.logger = loggerFactory.create('EventService');\n if (globalEventListener) {\n var async = gridOptionsWrapper.useAsyncEvents();\n this.addGlobalListener(globalEventListener, async);\n }\n };\n EventService.prototype.getListeners = function (eventType, async) {\n var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n var listeners = listenerMap.get(eventType);\n if (!listeners) {\n listeners = new Set();\n listenerMap.set(eventType, listeners);\n }\n return listeners;\n };\n EventService.prototype.addEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n this.getListeners(eventType, async).add(listener);\n };\n EventService.prototype.removeEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n this.getListeners(eventType, async).delete(listener);\n };\n // for some events, it's important that the model gets to hear about them before the view,\n // as the model may need to update before the view works on the info. if you register\n // via this method, you get notified before the view parts\n EventService.prototype.addModalPriorityEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n this.addEventListener(eventType + EventService_1.PRIORITY, listener, async);\n };\n EventService.prototype.addGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n (async ? this.globalAsyncListeners : this.globalSyncListeners).add(listener);\n };\n EventService.prototype.removeGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n (async ? this.globalAsyncListeners : this.globalSyncListeners).delete(listener);\n };\n EventService.prototype.dispatchEvent = function (event) {\n this.dispatchToListeners(event, true);\n this.dispatchToListeners(event, false);\n this.firedEvents[event.type] = true;\n };\n EventService.prototype.dispatchEventOnce = function (event) {\n if (!this.firedEvents[event.type]) {\n this.dispatchEvent(event);\n }\n };\n EventService.prototype.dispatchToListeners = function (event, async) {\n var _this = this;\n var eventType = event.type;\n var processEventListeners = function (listeners) { return listeners.forEach(function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(event); });\n }\n else {\n listener(event);\n }\n }); };\n // PRIORITY events should be processed first\n processEventListeners(this.getListeners(eventType + EventService_1.PRIORITY, async));\n processEventListeners(this.getListeners(eventType, async));\n var globalListeners = async ? this.globalAsyncListeners : this.globalSyncListeners;\n globalListeners.forEach(function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(eventType, event); });\n }\n else {\n listener(eventType, event);\n }\n });\n };\n // this gets called inside the grid's thread, for each event that it\n // wants to set async. the grid then batches the events into one setTimeout()\n // because setTimeout() is an expensive operation. ideally we would have\n // each event in it's own setTimeout(), but we batch for performance.\n EventService.prototype.dispatchAsync = function (func) {\n // add to the queue for executing later in the next VM turn\n this.asyncFunctionsQueue.push(func);\n // check if timeout is already scheduled. the first time the grid calls\n // this within it's thread turn, this should be false, so it will schedule\n // the 'flush queue' method the first time it comes here. then the flag is\n // set to 'true' so it will know it's already scheduled for subsequent calls.\n if (!this.scheduled) {\n // if not scheduled, schedule one\n window.setTimeout(this.flushAsyncQueue.bind(this), 0);\n // mark that it is scheduled\n this.scheduled = true;\n }\n };\n // this happens in the next VM turn only, and empties the queue of events\n EventService.prototype.flushAsyncQueue = function () {\n this.scheduled = false;\n // we take a copy, because the event listener could be using\n // the grid, which would cause more events, which would be potentially\n // added to the queue, so safe to take a copy, the new events will\n // get executed in a later VM turn rather than risk updating the\n // queue as we are flushing it.\n var queueCopy = this.asyncFunctionsQueue.slice();\n this.asyncFunctionsQueue = [];\n // execute the queue\n queueCopy.forEach(function (func) { return func(); });\n };\n var EventService_1;\n // this is an old idea niall had, should really take it out, was to do with ordering who gets to process\n // events first, to give model and service objects preference over the view\n EventService.PRIORITY = '-P1';\n __decorate([\n __param(0, Qualifier('loggerFactory')),\n __param(1, Qualifier('gridOptionsWrapper')),\n __param(2, Qualifier('globalEventListener'))\n ], EventService.prototype, \"setBeans\", null);\n EventService = EventService_1 = __decorate([\n Bean('eventService')\n ], EventService);\n return EventService;\n}());\nexport { EventService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { SimpleFilter } from \"./simpleFilter\";\nvar ScalerFilter = /** @class */ (function (_super) {\n __extends(ScalerFilter, _super);\n function ScalerFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ScalerFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.scalarFilterParams = params;\n this.checkDeprecatedParams();\n };\n ScalerFilter.prototype.checkDeprecatedParams = function () {\n if (this.scalarFilterParams.nullComparator) {\n console.warn('ag-Grid: Since v21.0, the property filterParams.nullComparator is deprecated. ' +\n 'Please use filterParams.includeBlanksInEquals, filterParams.includeBlanksInLessThan and ' +\n 'filterParams.includeBlanksInGreaterThan instead.');\n this.scalarFilterParams.includeBlanksInEquals = this.scalarFilterParams.nullComparator.equals;\n this.scalarFilterParams.includeBlanksInLessThan = this.scalarFilterParams.nullComparator.lessThan;\n this.scalarFilterParams.includeBlanksInGreaterThan = this.scalarFilterParams.nullComparator.greaterThan;\n }\n };\n ScalerFilter.prototype.nullComparator = function (selectedOption, filterValue, gridValue) {\n if (gridValue == null) {\n var nullValue = this.canNullsPassFilter(selectedOption);\n if (selectedOption === ScalerFilter.EMPTY) {\n return 0;\n }\n if (selectedOption === ScalerFilter.EQUALS) {\n return nullValue ? 0 : 1;\n }\n if (selectedOption === ScalerFilter.GREATER_THAN) {\n return nullValue ? 1 : -1;\n }\n if (selectedOption === ScalerFilter.GREATER_THAN_OR_EQUAL) {\n return nullValue ? 1 : -1;\n }\n if (selectedOption === ScalerFilter.LESS_THAN_OR_EQUAL) {\n return nullValue ? -1 : 1;\n }\n if (selectedOption === ScalerFilter.LESS_THAN) {\n return nullValue ? -1 : 1;\n }\n if (selectedOption === ScalerFilter.NOT_EQUAL) {\n return nullValue ? 1 : 0;\n }\n }\n var actualComparator = this.comparator();\n return actualComparator(filterValue, gridValue);\n };\n ScalerFilter.prototype.canNullsPassFilter = function (type) {\n switch (type) {\n case SimpleFilter.GREATER_THAN:\n case SimpleFilter.GREATER_THAN_OR_EQUAL:\n return this.scalarFilterParams.includeBlanksInGreaterThan;\n case SimpleFilter.LESS_THAN:\n case SimpleFilter.LESS_THAN_OR_EQUAL:\n return this.scalarFilterParams.includeBlanksInLessThan;\n case SimpleFilter.EQUALS:\n return this.scalarFilterParams.includeBlanksInEquals;\n }\n };\n ScalerFilter.prototype.individualConditionPasses = function (params, filterModel) {\n var cellValue = this.scalarFilterParams.valueGetter(params.node);\n var range = this.mapRangeFromModel(filterModel);\n var filterValue = range.from;\n var filterValueTo = range.to;\n var filterType = filterModel.type;\n var customFilterOption = this.optionsFactory.getCustomOption(filterType);\n if (customFilterOption) {\n // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden\n if (filterValue != null || customFilterOption.hideFilterInput) {\n return customFilterOption.test(filterValue, cellValue);\n }\n }\n // why this? looks like logic that should be in parent class????\n // if (filterValue == null) {\n // return type === FilterConditionType.MAIN ? true : this.conditionValue === 'AND';\n // }\n var compareResult = this.nullComparator(filterType, filterValue, cellValue);\n if (filterType === ScalerFilter.EQUALS) {\n return compareResult === 0;\n }\n if (filterType === ScalerFilter.GREATER_THAN) {\n return compareResult > 0;\n }\n if (filterType === ScalerFilter.GREATER_THAN_OR_EQUAL) {\n return compareResult >= 0;\n }\n if (filterType === ScalerFilter.LESS_THAN_OR_EQUAL) {\n return compareResult <= 0;\n }\n if (filterType === ScalerFilter.LESS_THAN) {\n return compareResult < 0;\n }\n if (filterType === ScalerFilter.NOT_EQUAL) {\n return compareResult != 0;\n }\n // From now on the type is a range and rawFilterValues must be an array!\n var compareToResult = this.nullComparator(filterType, filterValueTo, cellValue);\n if (filterType === ScalerFilter.IN_RANGE) {\n if (!this.scalarFilterParams.inRangeInclusive) {\n return compareResult > 0 && compareToResult < 0;\n }\n else {\n return compareResult >= 0 && compareToResult <= 0;\n }\n }\n throw new Error('Unexpected type of filter: ' + filterType);\n };\n ScalerFilter.DEFAULT_NULL_COMPARATOR = {\n equals: false,\n lessThan: false,\n greaterThan: false\n };\n return ScalerFilter;\n}(SimpleFilter));\nexport { ScalerFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { Events } from '../events';\nimport { PropertyKeys } from '../propertyKeys';\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { _ } from '../utils';\nvar ComponentUtil = /** @class */ (function () {\n function ComponentUtil() {\n }\n ComponentUtil.getEventCallbacks = function () {\n if (!ComponentUtil.EVENT_CALLBACKS) {\n ComponentUtil.EVENT_CALLBACKS = ComponentUtil.EVENTS.map(function (event) { return ComponentUtil.getCallbackForEvent(event); });\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 var keyExists = function (key) { return typeof component[key] !== 'undefined'; };\n // add in all the simple properties\n __spreadArrays(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.FUNCTION_PROPERTIES, ComponentUtil.getEventCallbacks()).filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = component[key]; });\n ComponentUtil.BOOLEAN_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toBoolean(component[key]); });\n ComponentUtil.NUMBER_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toNumber(component[key]); });\n // purely for event deprecation checks (for frameworks - wouldn't apply for non-fw versions)\n if (!skipEventDeprecationCheck) {\n ComponentUtil.EVENTS\n // React uses onXXX, not sure why this is different to the other frameworks\n .filter(function (event) { return keyExists(event) || keyExists(ComponentUtil.getCallbackForEvent(event)); })\n .forEach(function (event) { return GridOptionsWrapper.checkEventDeprecation(event); });\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 var keyExists = function (key) { return changes[key]; };\n // check if any change for the simple types, and if so, then just copy in the new value\n __spreadArrays(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.getEventCallbacks()).filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = changes[key].currentValue; });\n ComponentUtil.BOOLEAN_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toBoolean(changes[key].currentValue); });\n ComponentUtil.NUMBER_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toNumber(changes[key].currentValue); });\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 // copy changes into an event for dispatch\n var event = {\n type: Events.EVENT_COMPONENT_STATE_CHANGED,\n api: gridOptions.api,\n columnApi: gridOptions.columnApi\n };\n _.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 // no 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.STRING_PROPERTIES;\n ComponentUtil.OBJECT_PROPERTIES = PropertyKeys.OBJECT_PROPERTIES;\n ComponentUtil.ARRAY_PROPERTIES = PropertyKeys.ARRAY_PROPERTIES;\n ComponentUtil.NUMBER_PROPERTIES = PropertyKeys.NUMBER_PROPERTIES;\n ComponentUtil.BOOLEAN_PROPERTIES = PropertyKeys.BOOLEAN_PROPERTIES;\n ComponentUtil.FUNCTION_PROPERTIES = PropertyKeys.FUNCTION_PROPERTIES;\n ComponentUtil.ALL_PROPERTIES = PropertyKeys.ALL_PROPERTIES;\n return ComponentUtil;\n}());\nexport { ComponentUtil };\nComponentUtil.EVENTS = _.values(Events);\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/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../../widgets/component\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { _ } from \"../../utils\";\nimport { Constants } from \"../../constants\";\n/**\n * Contains common logic to all provided filters (apply button, clear button, etc).\n * All the filters that come with ag-Grid extend this class. User filters do not\n * extend this class.\n */\nvar ProvidedFilter = /** @class */ (function (_super) {\n __extends(ProvidedFilter, _super);\n function ProvidedFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /** @deprecated */\n ProvidedFilter.prototype.onFilterChanged = function () {\n console.warn(\"ag-Grid: you should not call onFilterChanged() directly on the filter, please call\\n gridApi.onFilterChanged() instead. onFilterChanged is not part of the exposed filter interface (it was\\n a method that existed on an old version of the filters that was not intended for public use.\");\n this.providedFilterParams.filterChangedCallback();\n };\n ProvidedFilter.prototype.isFilterActive = function () {\n // filter is active if we have a valid applied model\n return !!this.appliedModel;\n };\n ProvidedFilter.prototype.postConstruct = function () {\n var templateString = this.createTemplate();\n this.setTemplate(templateString);\n };\n ProvidedFilter.prototype.init = function (params) {\n this.setParams(params);\n this.resetUiToDefaults();\n this.updateUiVisibility();\n this.setupOnBtApplyDebounce();\n };\n ProvidedFilter.prototype.setParams = function (params) {\n var _this = this;\n this.providedFilterParams = params;\n this.applyActive = ProvidedFilter.isUseApplyButton(params);\n if (params.newRowsAction === ProvidedFilter.NEW_ROWS_ACTION_KEEP) {\n this.newRowsActionKeep = true;\n }\n else if (params.newRowsAction === ProvidedFilter.NEW_ROWS_ACTION_CLEAR) {\n this.newRowsActionKeep = false;\n }\n else {\n // the default for SSRM and IRM is 'keep', for CSRM and VRM teh default is 'clear'\n var rowModelType = this.rowModel.getType();\n var modelsForKeep = [Constants.ROW_MODEL_TYPE_SERVER_SIDE, Constants.ROW_MODEL_TYPE_INFINITE];\n this.newRowsActionKeep = modelsForKeep.indexOf(rowModelType) >= 0;\n }\n _.setDisplayed(this.eApplyButton, this.applyActive);\n // we do not bind onBtApply here because onBtApply() has a parameter, and it is not the event. if we\n // just applied, the event would get passed as the second parameter, which we do not want.\n this.addDestroyableEventListener(this.eApplyButton, \"click\", function () { return _this.onBtApply(); });\n var clearActive = params.clearButton === true;\n _.setDisplayed(this.eClearButton, clearActive);\n this.addDestroyableEventListener(this.eClearButton, \"click\", function () { return _this.onBtClear(); });\n var resetActive = params.resetButton === true;\n _.setDisplayed(this.eResetButton, resetActive);\n this.addDestroyableEventListener(this.eResetButton, \"click\", function () { return _this.onBtReset(); });\n var anyButtonVisible = this.applyActive || clearActive || resetActive;\n _.setDisplayed(this.eButtonsPanel, anyButtonVisible);\n };\n // subclasses can override this to provide alternative debounce defaults\n ProvidedFilter.prototype.getDefaultDebounceMs = function () {\n return 0;\n };\n ProvidedFilter.prototype.setupOnBtApplyDebounce = function () {\n var debounceMs = ProvidedFilter.getDebounceMs(this.providedFilterParams, this.getDefaultDebounceMs());\n this.onBtApplyDebounce = _.debounce(this.onBtApply.bind(this), debounceMs);\n };\n ProvidedFilter.prototype.getModel = function () {\n return this.appliedModel;\n };\n ProvidedFilter.prototype.setModel = function (model) {\n if (model) {\n this.setModelIntoUi(model);\n }\n else {\n this.resetUiToDefaults();\n }\n this.updateUiVisibility();\n // we set the model from the gui, rather than the provided model,\n // so the model is consistent. eg handling of null/undefined will be the same,\n // of if model is case insensitive, then casing is removed.\n this.applyModel();\n };\n ProvidedFilter.prototype.onBtClear = function () {\n this.resetUiToDefaults();\n this.updateUiVisibility();\n this.onUiChanged();\n };\n ProvidedFilter.prototype.onBtReset = function () {\n this.onBtClear();\n this.onBtApply();\n };\n // returns true if the new model is different to the old model\n ProvidedFilter.prototype.applyModel = function () {\n var oldAppliedModel = this.appliedModel;\n this.appliedModel = this.getModelFromUi();\n // models can be same if user pasted same content into text field, or maybe just changed the case\n // and it's a case insensitive filter\n var newModelDifferent = !this.areModelsEqual(this.appliedModel, oldAppliedModel);\n return newModelDifferent;\n };\n ProvidedFilter.prototype.onBtApply = function (afterFloatingFilter) {\n if (afterFloatingFilter === void 0) { afterFloatingFilter = false; }\n var newModelDifferent = this.applyModel();\n if (newModelDifferent) {\n // the floating filter uses 'afterFloatingFilter' info, so it doesn't refresh after filter changed if change\n // came from floating filter\n this.providedFilterParams.filterChangedCallback({ afterFloatingFilter: afterFloatingFilter });\n }\n };\n ProvidedFilter.prototype.onNewRowsLoaded = function () {\n if (!this.newRowsActionKeep) {\n this.resetUiToDefaults();\n this.appliedModel = null;\n }\n };\n // called by set filter\n ProvidedFilter.prototype.isNewRowsActionKeep = function () {\n return this.newRowsActionKeep;\n };\n ProvidedFilter.prototype.onUiChanged = function (afterFloatingFilter) {\n if (afterFloatingFilter === void 0) { afterFloatingFilter = false; }\n this.updateUiVisibility();\n this.providedFilterParams.filterModifiedCallback();\n // applyNow=true for floating filter changes, we always act on these immediately\n if (afterFloatingFilter) {\n this.onBtApply(true);\n // otherwise if no apply button, we apply (but debounce for time delay)\n }\n else if (!this.applyActive) {\n this.onBtApplyDebounce();\n }\n };\n ProvidedFilter.prototype.createTemplate = function () {\n var body = this.createBodyTemplate();\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n return \"
\\n
\" + body + \"
\\n
\\n \\n \\n \\n
\\n
\";\n };\n // static, as used by floating filter also\n ProvidedFilter.getDebounceMs = function (params, debounceDefault) {\n var applyActive = ProvidedFilter.isUseApplyButton(params);\n if (applyActive) {\n if (params.debounceMs != null) {\n console.warn('ag-Grid: debounceMs is ignored when applyButton = true');\n }\n return 0;\n }\n return params.debounceMs != null ? params.debounceMs : debounceDefault;\n };\n // static, as used by floating filter also\n ProvidedFilter.isUseApplyButton = function (params) {\n if (params.apply && !params.applyButton) {\n console.warn('ag-Grid: as of ag-Grid v21, filterParams.apply is now filterParams.applyButton, please change to applyButton');\n params.applyButton = true;\n }\n return params.applyButton === true;\n };\n ProvidedFilter.NEW_ROWS_ACTION_KEEP = 'keep';\n ProvidedFilter.NEW_ROWS_ACTION_CLEAR = 'clear';\n __decorate([\n RefSelector('eButtonsPanel')\n ], ProvidedFilter.prototype, \"eButtonsPanel\", void 0);\n __decorate([\n RefSelector('eFilterBodyWrapper')\n ], ProvidedFilter.prototype, \"eFilterBodyWrapper\", void 0);\n __decorate([\n RefSelector('eClearButton')\n ], ProvidedFilter.prototype, \"eClearButton\", void 0);\n __decorate([\n RefSelector('eResetButton')\n ], ProvidedFilter.prototype, \"eResetButton\", void 0);\n __decorate([\n RefSelector('eApplyButton')\n ], ProvidedFilter.prototype, \"eApplyButton\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ProvidedFilter.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('rowModel')\n ], ProvidedFilter.prototype, \"rowModel\", void 0);\n __decorate([\n PostConstruct\n ], ProvidedFilter.prototype, \"postConstruct\", null);\n return ProvidedFilter;\n}(Component));\nexport { ProvidedFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, Optional } from \"../../context/context\";\nimport { RegisteredComponentSource } from \"./userComponentRegistry\";\nimport { _, Promise } from \"../../utils\";\nexport var 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 || (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 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 = _.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 if (!registeredCompClassDef) {\n return null;\n }\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 == 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 == 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 _.mergeDeep(res, paramsFromGrid);\n var userParams = definitionObject ? definitionObject[propertyName + \"Params\"] : null;\n if (userParams != null) {\n if (typeof userParams === 'function') {\n _.mergeDeep(res, userParams(paramsFromGrid));\n }\n else if (typeof userParams === 'object') {\n _.mergeDeep(res, userParams);\n }\n }\n _.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 // to help the user, we print out the name they are looking for, rather than the default name.\n // i don't know why the default name was originally printed out (that doesn't help the user)\n var overrideName = holder ? holder[propertyName] : defaultComponentName;\n var nameToReport = overrideName ? overrideName : defaultComponentName;\n if (!optional) {\n console.error(\"Could not find component \" + nameToReport + \", did you forget to configure this component?\");\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 Autowired(\"gridOptions\")\n ], UserComponentFactory.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired(\"gridOptionsWrapper\")\n ], UserComponentFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired(\"context\")\n ], UserComponentFactory.prototype, \"context\", void 0);\n __decorate([\n Autowired(\"agComponentUtils\")\n ], UserComponentFactory.prototype, \"agComponentUtils\", void 0);\n __decorate([\n Autowired(\"componentMetadataProvider\")\n ], UserComponentFactory.prototype, \"componentMetadataProvider\", void 0);\n __decorate([\n Autowired(\"userComponentRegistry\")\n ], UserComponentFactory.prototype, \"userComponentRegistry\", void 0);\n __decorate([\n Optional(\"frameworkComponentWrapper\")\n ], UserComponentFactory.prototype, \"frameworkComponentWrapper\", void 0);\n UserComponentFactory = __decorate([\n Bean('userComponentFactory')\n ], UserComponentFactory);\n return UserComponentFactory;\n}());\nexport { UserComponentFactory };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Component } from \"../../../widgets/component\";\nimport { _ } from \"../../../utils\";\nvar DefaultDateComponent = /** @class */ (function (_super) {\n __extends(DefaultDateComponent, _super);\n function DefaultDateComponent() {\n return _super.call(this, \"
\") || this;\n }\n DefaultDateComponent.prototype.init = function (params) {\n this.eDateInput = this.getGui().querySelector('input');\n if (_.isBrowserChrome() || (params.filterParams && params.filterParams.browserDatePicker)) {\n if (_.isBrowserIE()) {\n console.warn('ag-grid: browserDatePicker is specified to true, but it is not supported in IE 11, reverting to plain text date picker');\n }\n else {\n this.eDateInput.type = 'date';\n }\n }\n this.listener = params.onDateChanged;\n this.addGuiEventListener('input', this.listener);\n };\n DefaultDateComponent.prototype.getDate = function () {\n return _.parseYyyyMmDdToDate(this.eDateInput.value, \"-\");\n };\n DefaultDateComponent.prototype.setDate = function (date) {\n this.eDateInput.value = _.serializeDateToYyyyMmDd(date, \"-\");\n };\n return DefaultDateComponent;\n}(Component));\nexport { DefaultDateComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Component } from \"../../../widgets/component\";\nimport { SimpleFilter } from \"../../provided/simpleFilter\";\nimport { OptionsFactory } from \"../../provided/optionsFactory\";\nvar SimpleFloatingFilter = /** @class */ (function (_super) {\n __extends(SimpleFloatingFilter, _super);\n function SimpleFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SimpleFloatingFilter.prototype.getDefaultDebounceMs = function () {\n return 0;\n };\n // used by:\n // 1) NumberFloatingFilter & TextFloatingFilter: Always, for both when editable and read only.\n // 2) DateFloatingFilter: Only when read only (as we show text rather than a date picker when read only)\n SimpleFloatingFilter.prototype.getTextFromModel = function (model) {\n if (!model) {\n return null;\n }\n var isCombined = model.operator;\n if (isCombined) {\n var combinedModel = model;\n var con1Str = this.conditionToString(combinedModel.condition1);\n var con2Str = this.conditionToString(combinedModel.condition2);\n return con1Str + \" \" + combinedModel.operator + \" \" + con2Str;\n }\n else {\n var condition = model;\n return this.conditionToString(condition);\n }\n };\n SimpleFloatingFilter.prototype.isEventFromFloatingFilter = function (event) {\n return (event && event.afterFloatingFilter);\n };\n SimpleFloatingFilter.prototype.getLastType = function () {\n return this.lastType;\n };\n SimpleFloatingFilter.prototype.setLastTypeFromModel = function (model) {\n // if no model provided by the parent filter use default\n if (!model) {\n this.lastType = this.optionsFactory.getDefaultOption();\n return;\n }\n var isCombined = model.operator;\n var condition;\n if (isCombined) {\n var combinedModel = model;\n condition = combinedModel.condition1;\n }\n else {\n condition = model;\n }\n this.lastType = condition.type;\n };\n SimpleFloatingFilter.prototype.canWeEditAfterModelFromParentFilter = function (model) {\n if (!model) {\n // if no model, then we can edit as long as the lastType is something we can edit, as this\n // is the type we will provide to the parent filter if the user decides to use the floating filter.\n return this.isTypeEditable(this.lastType);\n }\n // never allow editing if the filter is combined (ie has two parts)\n var isCombined = model.operator;\n if (isCombined) {\n return false;\n }\n var simpleModel = model;\n var typeIsEditable = this.isTypeEditable(simpleModel.type);\n return typeIsEditable;\n };\n SimpleFloatingFilter.prototype.init = function (params) {\n this.optionsFactory = new OptionsFactory();\n this.optionsFactory.init(params.filterParams, this.getDefaultFilterOptions());\n this.lastType = this.optionsFactory.getDefaultOption();\n // we are editable if:\n // 1) there is a type (user has configured filter wrong if not type)\n // AND\n // 2) the default type is not 'in range'\n var editable = this.isTypeEditable(this.lastType);\n this.setEditable(editable);\n };\n SimpleFloatingFilter.prototype.doesFilterHaveHiddenInput = function (filterType) {\n var customFilterOption = this.optionsFactory.getCustomOption(filterType);\n return customFilterOption && customFilterOption.hideFilterInput;\n };\n SimpleFloatingFilter.prototype.isTypeEditable = function (type) {\n if (this.doesFilterHaveHiddenInput(type)) {\n return false;\n }\n return type\n && (type != SimpleFilter.IN_RANGE)\n && (type != SimpleFilter.EMPTY);\n };\n return SimpleFloatingFilter;\n}(Component));\nexport { SimpleFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { DateFilter } from \"./dateFilter\";\nimport { Autowired } from \"../../../context/context\";\nimport { _ } from \"../../../utils\";\nimport { DateCompWrapper } from \"./dateCompWrapper\";\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\nimport { SimpleFilter } from \"../simpleFilter\";\nimport { SimpleFloatingFilter } from \"../../floating/provided/simpleFloatingFilter\";\nimport { ProvidedFilter } from \"../providedFilter\";\nvar DateFloatingFilter = /** @class */ (function (_super) {\n __extends(DateFloatingFilter, _super);\n function DateFloatingFilter() {\n return _super.call(this, \"
\\n \\n
\\n
\") || this;\n }\n DateFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return DateFilter.DEFAULT_FILTER_OPTIONS;\n };\n DateFloatingFilter.prototype.conditionToString = function (condition) {\n var isRange = condition.type == SimpleFilter.IN_RANGE;\n if (isRange) {\n return condition.dateFrom + \"-\" + condition.dateTo;\n }\n else {\n // cater for when the type doesn't need a value\n if (condition.dateFrom != null) {\n return \"\" + condition.dateFrom;\n }\n else {\n return \"\" + condition.type;\n }\n }\n };\n DateFloatingFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.params = params;\n this.createDateComponent();\n };\n DateFloatingFilter.prototype.setEditable = function (editable) {\n _.setDisplayed(this.eDateWrapper, editable);\n _.setDisplayed(this.eReadOnlyText, !editable);\n };\n DateFloatingFilter.prototype.onParentModelChanged = function (model, event) {\n // we don't want to update the floating filter if the floating filter caused the change.\n // as if it caused the change, the ui is already in sycn. if we didn't do this, the UI\n // would behave strange as it would be updating as the user is typing\n if (this.isEventFromFloatingFilter(event)) {\n return;\n }\n _super.prototype.setLastTypeFromModel.call(this, model);\n var allowEditing = this.canWeEditAfterModelFromParentFilter(model);\n this.setEditable(allowEditing);\n if (allowEditing) {\n if (model) {\n var dateModel = model;\n this.dateComp.setDate(_.parseYyyyMmDdToDate(dateModel.dateFrom, '-'));\n }\n else {\n this.dateComp.setDate(null);\n }\n this.eReadOnlyText.value = '';\n }\n else {\n this.eReadOnlyText.value = this.getTextFromModel(model);\n this.dateComp.setDate(null);\n }\n };\n DateFloatingFilter.prototype.onDateChanged = function () {\n var _this = this;\n var filterValueDate = this.dateComp.getDate();\n var filterValueText = _.serializeDateToYyyyMmDd(filterValueDate, \"-\");\n this.params.parentFilterInstance(function (filterInstance) {\n if (filterInstance) {\n var simpleFilter = filterInstance;\n simpleFilter.onFloatingFilterChanged(_this.getLastType(), filterValueText);\n }\n });\n };\n DateFloatingFilter.prototype.createDateComponent = function () {\n var _this = this;\n var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n var toDebounce = _.debounce(this.onDateChanged.bind(this), debounceMs);\n var dateComponentParams = {\n onDateChanged: toDebounce,\n filterParams: this.params.column.getColDef().filterParams\n };\n this.dateComp = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.eDateWrapper);\n this.addDestroyFunc(function () {\n _this.dateComp.destroy();\n });\n };\n __decorate([\n Autowired('userComponentFactory')\n ], DateFloatingFilter.prototype, \"userComponentFactory\", void 0);\n __decorate([\n RefSelector('eReadOnlyText')\n ], DateFloatingFilter.prototype, \"eReadOnlyText\", void 0);\n __decorate([\n RefSelector('eDateWrapper')\n ], DateFloatingFilter.prototype, \"eDateWrapper\", void 0);\n return DateFloatingFilter;\n}(SimpleFloatingFilter));\nexport { DateFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\nimport { _ } from \"../../../utils\";\nimport { Constants } from \"../../../constants\";\nimport { ProvidedFilter } from \"../../provided/providedFilter\";\nimport { PostConstruct } from \"../../../context/context\";\nimport { SimpleFloatingFilter } from \"./simpleFloatingFilter\";\nvar TextInputFloatingFilter = /** @class */ (function (_super) {\n __extends(TextInputFloatingFilter, _super);\n function TextInputFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextInputFloatingFilter.prototype.postConstruct = function () {\n this.setTemplate(\"
\\n \\n
\");\n };\n TextInputFloatingFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n TextInputFloatingFilter.prototype.onParentModelChanged = function (model, event) {\n // we don't want to update the floating filter if the floating filter caused the change.\n // as if it caused the change, the ui is already in sycn. if we didn't do this, the UI\n // would behave strange as it would be updating as the user is typing\n if (this.isEventFromFloatingFilter(event)) {\n return;\n }\n this.setLastTypeFromModel(model);\n var modelString = this.getTextFromModel(model);\n this.eFloatingFilterText.value = modelString;\n var editable = this.canWeEditAfterModelFromParentFilter(model);\n this.setEditable(editable);\n };\n TextInputFloatingFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.params = params;\n this.applyActive = ProvidedFilter.isUseApplyButton(this.params.filterParams);\n var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n var toDebounce = _.debounce(this.syncUpWithParentFilter.bind(this), debounceMs);\n this.addDestroyableEventListener(this.eFloatingFilterText, 'input', toDebounce);\n this.addDestroyableEventListener(this.eFloatingFilterText, 'keypress', toDebounce);\n this.addDestroyableEventListener(this.eFloatingFilterText, 'keydown', toDebounce);\n var columnDef = params.column.getDefinition();\n if (columnDef.filterParams && columnDef.filterParams.filterOptions && columnDef.filterParams.filterOptions.length === 1 && columnDef.filterParams.filterOptions[0] === 'inRange') {\n this.eFloatingFilterText.disabled = true;\n }\n };\n TextInputFloatingFilter.prototype.syncUpWithParentFilter = function (e) {\n var _this = this;\n var value = this.eFloatingFilterText.value;\n var enterKeyPressed = _.isKeyPressed(e, Constants.KEY_ENTER);\n if (this.applyActive && !enterKeyPressed) {\n return;\n }\n this.params.parentFilterInstance(function (filterInstance) {\n if (filterInstance) {\n var simpleFilter = filterInstance;\n simpleFilter.onFloatingFilterChanged(_this.getLastType(), value);\n }\n });\n };\n TextInputFloatingFilter.prototype.setEditable = function (editable) {\n this.eFloatingFilterText.disabled = !editable;\n };\n __decorate([\n RefSelector('eFloatingFilterText')\n ], TextInputFloatingFilter.prototype, \"eFloatingFilterText\", void 0);\n __decorate([\n PostConstruct\n ], TextInputFloatingFilter.prototype, \"postConstruct\", null);\n return TextInputFloatingFilter;\n}(SimpleFloatingFilter));\nexport { TextInputFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NumberFilter } from \"./numberFilter\";\nimport { SimpleFilter } from \"../simpleFilter\";\nimport { TextInputFloatingFilter } from \"../../floating/provided/textInputFloatingFilter\";\nvar NumberFloatingFilter = /** @class */ (function (_super) {\n __extends(NumberFloatingFilter, _super);\n function NumberFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NumberFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return NumberFilter.DEFAULT_FILTER_OPTIONS;\n };\n NumberFloatingFilter.prototype.conditionToString = function (condition) {\n var isRange = condition.type == SimpleFilter.IN_RANGE;\n if (isRange) {\n return condition.filter + \"-\" + condition.filterTo;\n }\n else {\n // cater for when the type doesn't need a value\n if (condition.filter != null) {\n return \"\" + condition.filter;\n }\n else {\n return \"\" + condition.type;\n }\n }\n };\n return NumberFloatingFilter;\n}(TextInputFloatingFilter));\nexport { NumberFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { TextFilter } from \"./textFilter\";\nimport { TextInputFloatingFilter } from \"../../floating/provided/textInputFloatingFilter\";\nvar TextFloatingFilter = /** @class */ (function (_super) {\n __extends(TextFloatingFilter, _super);\n function TextFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextFloatingFilter.prototype.conditionToString = function (condition) {\n // it's not possible to have 'in range' for string, so no need to check for it.\n // also cater for when the type doesn't need a value\n if (condition.filter != null) {\n return \"\" + condition.filter;\n }\n else {\n return \"\" + condition.type;\n }\n };\n TextFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return TextFilter.DEFAULT_FILTER_OPTIONS;\n };\n return TextFloatingFilter;\n}(TextInputFloatingFilter));\nexport { TextFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { TextCellEditor } from \"../../rendering/cellEditors/textCellEditor\";\nimport { Autowired, Bean, PostConstruct } from \"../../context/context\";\nimport { DateFilter } from \"../../filter/provided/date/dateFilter\";\nimport { HeaderComp } from \"../../headerRendering/header/headerComp\";\nimport { HeaderGroupComp } from \"../../headerRendering/headerGroup/headerGroupComp\";\nimport { GroupCellRenderer } from \"../../rendering/cellRenderers/groupCellRenderer\";\nimport { AnimateShowChangeCellRenderer } from \"../../rendering/cellRenderers/animateShowChangeCellRenderer\";\nimport { AnimateSlideCellRenderer } from \"../../rendering/cellRenderers/animateSlideCellRenderer\";\nimport { LoadingCellRenderer } from \"../../rendering/cellRenderers/loadingCellRenderer\";\nimport { SelectCellEditor } from \"../../rendering/cellEditors/selectCellEditor\";\nimport { PopupTextCellEditor } from \"../../rendering/cellEditors/popupTextCellEditor\";\nimport { PopupSelectCellEditor } from \"../../rendering/cellEditors/popupSelectCellEditor\";\nimport { LargeTextCellEditor } from \"../../rendering/cellEditors/largeTextCellEditor\";\nimport { NumberFilter } from \"../../filter/provided/number/numberFilter\";\nimport { LoadingOverlayComponent } from \"../../rendering/overlays/loadingOverlayComponent\";\nimport { NoRowsOverlayComponent } from \"../../rendering/overlays/noRowsOverlayComponent\";\nimport { TooltipComponent } from \"../../rendering/tooltipComponent\";\nimport { _ } from \"../../utils\";\nimport { DefaultDateComponent } from \"../../filter/provided/date/defaultDateComponent\";\nimport { DateFloatingFilter } from \"../../filter/provided/date/dateFloatingFilter\";\nimport { TextFilter } from \"../../filter/provided/text/textFilter\";\nimport { NumberFloatingFilter } from \"../../filter/provided/number/numberFloatingFilter\";\nimport { TextFloatingFilter } from \"../../filter/provided/text/textFloatingFilter\";\nexport var RegisteredComponentSource;\n(function (RegisteredComponentSource) {\n RegisteredComponentSource[RegisteredComponentSource[\"DEFAULT\"] = 0] = \"DEFAULT\";\n RegisteredComponentSource[RegisteredComponentSource[\"REGISTERED\"] = 1] = \"REGISTERED\";\n})(RegisteredComponentSource || (RegisteredComponentSource = {}));\nvar UserComponentRegistry = /** @class */ (function () {\n function UserComponentRegistry() {\n this.agGridDefaults = {\n //date\n agDateInput: DefaultDateComponent,\n //header\n agColumnHeader: HeaderComp,\n agColumnGroupHeader: HeaderGroupComp,\n //floating filters\n agTextColumnFloatingFilter: TextFloatingFilter,\n agNumberColumnFloatingFilter: NumberFloatingFilter,\n agDateColumnFloatingFilter: DateFloatingFilter,\n // renderers\n agAnimateShowChangeCellRenderer: AnimateShowChangeCellRenderer,\n agAnimateSlideCellRenderer: AnimateSlideCellRenderer,\n agGroupCellRenderer: GroupCellRenderer,\n agGroupRowRenderer: GroupCellRenderer,\n agLoadingCellRenderer: LoadingCellRenderer,\n //editors\n agCellEditor: TextCellEditor,\n agTextCellEditor: TextCellEditor,\n agSelectCellEditor: SelectCellEditor,\n agPopupTextCellEditor: PopupTextCellEditor,\n agPopupSelectCellEditor: PopupSelectCellEditor,\n agLargeTextCellEditor: LargeTextCellEditor,\n //filter\n agTextColumnFilter: TextFilter,\n agNumberColumnFilter: NumberFilter,\n agDateColumnFilter: DateFilter,\n //overlays\n agLoadingOverlay: LoadingOverlayComponent,\n agNoRowsOverlay: NoRowsOverlayComponent,\n // tooltips\n agTooltipComponent: 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 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 _.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 Autowired('gridOptions')\n ], UserComponentRegistry.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('context')\n ], UserComponentRegistry.prototype, \"context\", void 0);\n __decorate([\n PostConstruct\n ], UserComponentRegistry.prototype, \"init\", null);\n UserComponentRegistry = __decorate([\n Bean('userComponentRegistry')\n ], UserComponentRegistry);\n return UserComponentRegistry;\n}());\nexport { UserComponentRegistry };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/** Provides sync access to async component. Date component can be lazy created - this class encapsulates\n * this by keeping value locally until DateComp has loaded, then passing DateComp the value. */\nvar DateCompWrapper = /** @class */ (function () {\n function DateCompWrapper(userComponentFactory, dateComponentParams, eParent) {\n var _this = this;\n this.alive = true;\n userComponentFactory.newDateComponent(dateComponentParams).then(function (dateComp) {\n // because async, check the filter still exists after component comes back\n if (!_this.alive) {\n if (dateComp.destroy) {\n dateComp.destroy();\n }\n return;\n }\n _this.dateComp = dateComp;\n eParent.appendChild(dateComp.getGui());\n if (dateComp.afterGuiAttached) {\n dateComp.afterGuiAttached();\n }\n if (_this.tempValue) {\n dateComp.setDate(_this.tempValue);\n }\n });\n }\n DateCompWrapper.prototype.destroy = function () {\n this.alive = false;\n if (this.dateComp && this.dateComp.destroy) {\n this.dateComp.destroy();\n }\n };\n DateCompWrapper.prototype.getDate = function () {\n if (this.dateComp) {\n return this.dateComp.getDate();\n }\n else {\n return this.tempValue;\n }\n };\n DateCompWrapper.prototype.setDate = function (value) {\n if (this.dateComp) {\n this.dateComp.setDate(value);\n }\n else {\n this.tempValue = value;\n }\n };\n return DateCompWrapper;\n}());\nexport { DateCompWrapper };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\nimport { Autowired } from \"../../../context/context\";\nimport { _ } from \"../../../utils\";\nimport { DateCompWrapper } from \"./dateCompWrapper\";\nimport { ConditionPosition, SimpleFilter } from \"../simpleFilter\";\nimport { ScalerFilter } from \"../scalerFilter\";\nvar DateFilter = /** @class */ (function (_super) {\n __extends(DateFilter, _super);\n function DateFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DateFilter.prototype.mapRangeFromModel = function (filterModel) {\n // unlike the other filters, we do two things here:\n // 1) allow for different attribute names (same as done for other filters) (eg the 'from' and 'to'\n // are in different locations in Date and Number filter models)\n // 2) convert the type (cos Date filter uses Dates, however model is 'string')\n //\n // NOTE: The conversion of string to date also removes the timezone - ie when user picks\n // a date form the UI, it will have timezone info in it. This is lost when creating\n // the model. Then when we recreate the date again here, it's without timezone.\n return {\n from: _.parseYyyyMmDdToDate(filterModel.dateFrom, \"-\"),\n to: _.parseYyyyMmDdToDate(filterModel.dateTo, \"-\")\n };\n };\n DateFilter.prototype.setValueFromFloatingFilter = function (value) {\n if (value != null) {\n var dateFrom = _.parseYyyyMmDdToDate(value, \"-\");\n this.dateCompFrom1.setDate(dateFrom);\n }\n else {\n this.dateCompFrom1.setDate(null);\n }\n this.dateCompTo1.setDate(null);\n this.dateCompFrom2.setDate(null);\n this.dateCompTo2.setDate(null);\n };\n DateFilter.prototype.setConditionIntoUi = function (model, position) {\n var positionOne = position === ConditionPosition.One;\n var dateFromString = model ? model.dateFrom : null;\n var dateToString = model ? model.dateTo : null;\n var dateFrom = _.parseYyyyMmDdToDate(dateFromString, \"-\");\n var dateTo = _.parseYyyyMmDdToDate(dateToString, \"-\");\n var compFrom = positionOne ? this.dateCompFrom1 : this.dateCompFrom2;\n var compTo = positionOne ? this.dateCompTo1 : this.dateCompTo2;\n compFrom.setDate(dateFrom);\n compTo.setDate(dateTo);\n };\n DateFilter.prototype.resetUiToDefaults = function () {\n _super.prototype.resetUiToDefaults.call(this);\n this.dateCompTo1.setDate(null);\n this.dateCompTo2.setDate(null);\n this.dateCompFrom1.setDate(null);\n this.dateCompFrom2.setDate(null);\n };\n DateFilter.prototype.comparator = function () {\n return this.dateFilterParams.comparator ? this.dateFilterParams.comparator : this.defaultComparator.bind(this);\n };\n DateFilter.prototype.defaultComparator = function (filterDate, cellValue) {\n //The default comparator assumes that the cellValue is a date\n var cellAsDate = cellValue;\n if (cellAsDate < filterDate) {\n return -1;\n }\n if (cellAsDate > filterDate) {\n return 1;\n }\n return cellValue != null ? 0 : -1;\n };\n DateFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.dateFilterParams = params;\n this.createDateComponents();\n };\n DateFilter.prototype.createDateComponents = function () {\n var _this = this;\n // params to pass to all four date comps\n var dateComponentParams = {\n onDateChanged: function () { return _this.onUiChanged(); },\n filterParams: this.dateFilterParams\n };\n this.dateCompFrom1 = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.ePanelFrom1);\n this.dateCompFrom2 = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.ePanelFrom2);\n this.dateCompTo1 = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.ePanelTo1);\n this.dateCompTo2 = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.ePanelTo2);\n this.addDestroyFunc(function () {\n _this.dateCompFrom1.destroy();\n _this.dateCompFrom2.destroy();\n _this.dateCompTo1.destroy();\n _this.dateCompTo2.destroy();\n });\n };\n DateFilter.prototype.getDefaultFilterOptions = function () {\n return DateFilter.DEFAULT_FILTER_OPTIONS;\n };\n DateFilter.prototype.createValueTemplate = function (position) {\n var positionOne = position === ConditionPosition.One;\n var pos = positionOne ? '1' : '2';\n return \"
\\n
\\n
\\n
\\n
\\n
\";\n };\n DateFilter.prototype.isConditionUiComplete = function (position) {\n var positionOne = position === ConditionPosition.One;\n var option = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var compFrom = positionOne ? this.dateCompFrom1 : this.dateCompFrom2;\n var compTo = positionOne ? this.dateCompTo1 : this.dateCompTo2;\n var valueFrom = compFrom.getDate();\n var valueTo = compTo.getDate();\n if (option === SimpleFilter.EMPTY) {\n return false;\n }\n if (this.doesFilterHaveHiddenInput(option)) {\n return true;\n }\n if (option === SimpleFilter.IN_RANGE) {\n return valueFrom != null && valueTo != null;\n }\n else {\n return valueFrom != null;\n }\n };\n DateFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.dateFrom === bSimple.dateFrom\n && aSimple.dateTo === bSimple.dateTo\n && aSimple.type === bSimple.type;\n };\n // needed for creating filter model\n DateFilter.prototype.getFilterType = function () {\n return DateFilter.FILTER_TYPE;\n };\n DateFilter.prototype.createCondition = function (position) {\n var positionOne = position === ConditionPosition.One;\n var type = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var dateCompTo = positionOne ? this.dateCompTo1 : this.dateCompTo2;\n var dateCompFrom = positionOne ? this.dateCompFrom1 : this.dateCompFrom2;\n return {\n dateTo: _.serializeDateToYyyyMmDd(dateCompTo.getDate(), \"-\"),\n dateFrom: _.serializeDateToYyyyMmDd(dateCompFrom.getDate(), \"-\"),\n type: type,\n filterType: DateFilter.FILTER_TYPE\n };\n };\n DateFilter.prototype.updateUiVisibility = function () {\n _super.prototype.updateUiVisibility.call(this);\n var showFrom1 = this.showValueFrom(this.getCondition1Type());\n _.setDisplayed(this.ePanelFrom1, showFrom1);\n var showTo1 = this.showValueTo(this.getCondition1Type());\n _.setDisplayed(this.ePanelTo1, showTo1);\n var showFrom2 = this.showValueFrom(this.getCondition2Type());\n _.setDisplayed(this.ePanelFrom2, showFrom2);\n var showTo2 = this.showValueTo(this.getCondition2Type());\n _.setDisplayed(this.ePanelTo2, showTo2);\n };\n DateFilter.FILTER_TYPE = 'date';\n DateFilter.DEFAULT_FILTER_OPTIONS = [ScalerFilter.EQUALS, ScalerFilter.GREATER_THAN,\n ScalerFilter.LESS_THAN, ScalerFilter.NOT_EQUAL, ScalerFilter.IN_RANGE];\n __decorate([\n RefSelector('ePanelFrom1')\n ], DateFilter.prototype, \"ePanelFrom1\", void 0);\n __decorate([\n RefSelector('ePanelFrom2')\n ], DateFilter.prototype, \"ePanelFrom2\", void 0);\n __decorate([\n RefSelector('ePanelTo1')\n ], DateFilter.prototype, \"ePanelTo1\", void 0);\n __decorate([\n RefSelector('ePanelTo2')\n ], DateFilter.prototype, \"ePanelTo2\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], DateFilter.prototype, \"userComponentFactory\", void 0);\n return DateFilter;\n}(ScalerFilter));\nexport { DateFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\nimport { _ } from \"../../../utils\";\nimport { SimpleFilter, ConditionPosition } from \"../simpleFilter\";\nimport { ScalerFilter } from \"../scalerFilter\";\nvar NumberFilter = /** @class */ (function (_super) {\n __extends(NumberFilter, _super);\n function NumberFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NumberFilter.prototype.mapRangeFromModel = function (filterModel) {\n return {\n from: filterModel.filter,\n to: filterModel.filterTo\n };\n };\n NumberFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n NumberFilter.prototype.resetUiToDefaults = function () {\n _super.prototype.resetUiToDefaults.call(this);\n this.eValueFrom1.value = null;\n this.eValueFrom2.value = null;\n this.eValueTo1.value = null;\n this.eValueTo2.value = null;\n };\n NumberFilter.prototype.setConditionIntoUi = function (model, position) {\n var positionOne = position === ConditionPosition.One;\n var eValueFrom = positionOne ? this.eValueFrom1 : this.eValueFrom2;\n var eValueTo = positionOne ? this.eValueTo1 : this.eValueTo2;\n eValueFrom.value = model ? ('' + model.filter) : null;\n eValueTo.value = model ? ('' + model.filterTo) : null;\n };\n NumberFilter.prototype.setValueFromFloatingFilter = function (value) {\n this.eValueFrom1.value = value;\n this.eValueFrom2.value = null;\n this.eValueTo1.value = null;\n this.eValueTo2.value = null;\n };\n NumberFilter.prototype.comparator = function () {\n return function (left, right) {\n if (left === right) {\n return 0;\n }\n if (left < right) {\n return 1;\n }\n if (left > right) {\n return -1;\n }\n };\n };\n NumberFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.addValueChangedListeners();\n };\n NumberFilter.prototype.addValueChangedListeners = function () {\n var _this = this;\n var listener = function () { return _this.onUiChanged(); };\n this.addDestroyableEventListener(this.eValueFrom1, 'input', listener);\n this.addDestroyableEventListener(this.eValueFrom2, 'input', listener);\n this.addDestroyableEventListener(this.eValueTo1, 'input', listener);\n this.addDestroyableEventListener(this.eValueTo2, 'input', listener);\n };\n NumberFilter.prototype.afterGuiAttached = function () {\n this.eValueFrom1.focus();\n };\n NumberFilter.prototype.getDefaultFilterOptions = function () {\n return NumberFilter.DEFAULT_FILTER_OPTIONS;\n };\n NumberFilter.prototype.createValueTemplate = function (position) {\n var positionOne = position === ConditionPosition.One;\n var pos = positionOne ? '1' : '2';\n var translate = this.translate.bind(this);\n return \"
\\n
\\n \\n
\\n
\\n \\n
\\n
\";\n };\n NumberFilter.prototype.isConditionUiComplete = function (position) {\n var positionOne = position === ConditionPosition.One;\n var option = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var eValue = positionOne ? this.eValueFrom1 : this.eValueFrom2;\n var eValueTo = positionOne ? this.eValueTo1 : this.eValueTo2;\n var value = this.stringToFloat(eValue.value);\n var valueTo = this.stringToFloat(eValueTo.value);\n if (option === SimpleFilter.EMPTY) {\n return false;\n }\n if (this.doesFilterHaveHiddenInput(option)) {\n return true;\n }\n if (option === SimpleFilter.IN_RANGE) {\n return value != null && valueTo != null;\n }\n else {\n return value != null;\n }\n };\n NumberFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.filter === bSimple.filter\n && aSimple.filterTo === bSimple.filterTo\n && aSimple.type === bSimple.type;\n };\n // needed for creating filter model\n NumberFilter.prototype.getFilterType = function () {\n return NumberFilter.FILTER_TYPE;\n };\n NumberFilter.prototype.stringToFloat = function (value) {\n var filterText = _.makeNull(value);\n if (filterText && filterText.trim() === '') {\n filterText = null;\n }\n var newFilter;\n if (filterText !== null && filterText !== undefined) {\n newFilter = parseFloat(filterText);\n }\n else {\n newFilter = null;\n }\n return newFilter;\n };\n NumberFilter.prototype.createCondition = function (position) {\n var positionOne = position === ConditionPosition.One;\n var type = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var eValue = positionOne ? this.eValueFrom1 : this.eValueFrom2;\n var value = this.stringToFloat(eValue.value);\n var eValueTo = positionOne ? this.eValueTo1 : this.eValueTo2;\n var valueTo = this.stringToFloat(eValueTo.value);\n var model = {\n filterType: NumberFilter.FILTER_TYPE,\n type: type\n };\n if (!this.doesFilterHaveHiddenInput(type)) {\n model.filter = value;\n model.filterTo = valueTo; // FIX - should only populate this when filter choice has 'to' option\n }\n return model;\n };\n NumberFilter.prototype.updateUiVisibility = function () {\n _super.prototype.updateUiVisibility.call(this);\n var showFrom1 = this.showValueFrom(this.getCondition1Type());\n _.setDisplayed(this.eValueFrom1, showFrom1);\n var showTo1 = this.showValueTo(this.getCondition1Type());\n _.setDisplayed(this.eValueTo1, showTo1);\n var showFrom2 = this.showValueFrom(this.getCondition2Type());\n _.setDisplayed(this.eValueFrom2, showFrom2);\n var showTo2 = this.showValueTo(this.getCondition2Type());\n _.setDisplayed(this.eValueTo2, showTo2);\n };\n NumberFilter.FILTER_TYPE = 'number';\n NumberFilter.DEFAULT_FILTER_OPTIONS = [ScalerFilter.EQUALS, ScalerFilter.NOT_EQUAL,\n ScalerFilter.LESS_THAN, ScalerFilter.LESS_THAN_OR_EQUAL,\n ScalerFilter.GREATER_THAN, ScalerFilter.GREATER_THAN_OR_EQUAL,\n ScalerFilter.IN_RANGE];\n __decorate([\n RefSelector('eValueFrom1')\n ], NumberFilter.prototype, \"eValueFrom1\", void 0);\n __decorate([\n RefSelector('eValueFrom2')\n ], NumberFilter.prototype, \"eValueFrom2\", void 0);\n __decorate([\n RefSelector('eValueTo1')\n ], NumberFilter.prototype, \"eValueTo1\", void 0);\n __decorate([\n RefSelector('eValueTo2')\n ], NumberFilter.prototype, \"eValueTo2\", void 0);\n return NumberFilter;\n}(ScalerFilter));\nexport { NumberFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\nimport { _ } from \"../../../utils\";\nimport { SimpleFilter, ConditionPosition } from \"../simpleFilter\";\nvar TextFilter = /** @class */ (function (_super) {\n __extends(TextFilter, _super);\n function TextFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n TextFilter.prototype.getValue = function (element) {\n var val = element.value;\n val = _.makeNull(val);\n if (val && val.trim() === '') {\n val = null;\n }\n return val;\n };\n TextFilter.prototype.addValueChangedListeners = function () {\n var _this = this;\n var listener = function () { return _this.onUiChanged(); };\n this.addDestroyableEventListener(this.eValue1, 'input', listener);\n this.addDestroyableEventListener(this.eValue2, 'input', listener);\n };\n TextFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.textFilterParams = params;\n this.comparator = this.textFilterParams.textCustomComparator ? this.textFilterParams.textCustomComparator : TextFilter.DEFAULT_COMPARATOR;\n this.formatter =\n this.textFilterParams.textFormatter ? this.textFilterParams.textFormatter :\n this.textFilterParams.caseSensitive == true ? TextFilter.DEFAULT_FORMATTER :\n TextFilter.DEFAULT_LOWERCASE_FORMATTER;\n this.addValueChangedListeners();\n };\n TextFilter.prototype.setConditionIntoUi = function (model, position) {\n var positionOne = position === ConditionPosition.One;\n var eValue = positionOne ? this.eValue1 : this.eValue2;\n eValue.value = model ? model.filter : null;\n };\n TextFilter.prototype.createCondition = function (position) {\n var positionOne = position === ConditionPosition.One;\n var type = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var eValue = positionOne ? this.eValue1 : this.eValue2;\n var value = this.getValue(eValue);\n var model = {\n filterType: TextFilter.FILTER_TYPE,\n type: type\n };\n if (!this.doesFilterHaveHiddenInput(type)) {\n model.filter = value;\n }\n return model;\n };\n TextFilter.prototype.getFilterType = function () {\n return TextFilter.FILTER_TYPE;\n };\n TextFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.filter === bSimple.filter && aSimple.type === bSimple.type;\n };\n TextFilter.prototype.resetUiToDefaults = function () {\n _super.prototype.resetUiToDefaults.call(this);\n this.eValue1.value = null;\n this.eValue2.value = null;\n };\n TextFilter.prototype.setValueFromFloatingFilter = function (value) {\n this.eValue1.value = value;\n this.eValue2.value = null;\n };\n TextFilter.prototype.getDefaultFilterOptions = function () {\n return TextFilter.DEFAULT_FILTER_OPTIONS;\n };\n TextFilter.prototype.createValueTemplate = function (position) {\n var pos = position === ConditionPosition.One ? '1' : '2';\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n return \"
\\n
\\n \\n
\\n
\";\n };\n TextFilter.prototype.updateUiVisibility = function () {\n _super.prototype.updateUiVisibility.call(this);\n var showValue1 = this.showValueFrom(this.getCondition1Type());\n _.setDisplayed(this.eInputWrapper1, showValue1);\n var showValue2 = this.showValueFrom(this.getCondition2Type());\n _.setDisplayed(this.eInputWrapper2, showValue2);\n };\n TextFilter.prototype.afterGuiAttached = function () {\n this.eValue1.focus();\n };\n TextFilter.prototype.isConditionUiComplete = function (position) {\n var positionOne = position === ConditionPosition.One;\n var option = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var eFilterValue = positionOne ? this.eValue1 : this.eValue2;\n if (option === SimpleFilter.EMPTY) {\n return false;\n }\n var value = this.getValue(eFilterValue);\n if (this.doesFilterHaveHiddenInput(option)) {\n return true;\n }\n return value != null;\n };\n TextFilter.prototype.individualConditionPasses = function (params, filterModel) {\n var filterText = filterModel.filter;\n var filterOption = filterModel.type;\n var cellValue = this.textFilterParams.valueGetter(params.node);\n var cellValueFormatted = this.formatter(cellValue);\n var customFilterOption = this.optionsFactory.getCustomOption(filterOption);\n if (customFilterOption) {\n // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden\n if (filterText != null || customFilterOption.hideFilterInput) {\n return customFilterOption.test(filterText, cellValueFormatted);\n }\n }\n if (cellValue == null) {\n return filterOption === SimpleFilter.NOT_EQUAL || filterOption === SimpleFilter.NOT_CONTAINS;\n }\n var filterTextFormatted = this.formatter(filterText);\n return this.comparator(filterOption, cellValueFormatted, filterTextFormatted);\n };\n TextFilter.FILTER_TYPE = 'text';\n TextFilter.DEFAULT_FILTER_OPTIONS = [SimpleFilter.CONTAINS, SimpleFilter.NOT_CONTAINS,\n SimpleFilter.EQUALS, SimpleFilter.NOT_EQUAL,\n SimpleFilter.STARTS_WITH, SimpleFilter.ENDS_WITH];\n TextFilter.DEFAULT_FORMATTER = function (from) {\n return from;\n };\n TextFilter.DEFAULT_LOWERCASE_FORMATTER = function (from) {\n if (from == null) {\n return null;\n }\n return from.toString().toLowerCase();\n };\n TextFilter.DEFAULT_COMPARATOR = function (filter, value, filterText) {\n switch (filter) {\n case TextFilter.CONTAINS:\n return value.indexOf(filterText) >= 0;\n case TextFilter.NOT_CONTAINS:\n return value.indexOf(filterText) === -1;\n case TextFilter.EQUALS:\n return value === filterText;\n case TextFilter.NOT_EQUAL:\n return value != filterText;\n case TextFilter.STARTS_WITH:\n return value.indexOf(filterText) === 0;\n case TextFilter.ENDS_WITH:\n var index = value.lastIndexOf(filterText);\n return index >= 0 && index === (value.length - filterText.length);\n default:\n // should never happen\n console.warn('invalid filter type ' + filter);\n return false;\n }\n };\n __decorate([\n RefSelector('eValue1')\n ], TextFilter.prototype, \"eValue1\", void 0);\n __decorate([\n RefSelector('eValue2')\n ], TextFilter.prototype, \"eValue2\", void 0);\n __decorate([\n RefSelector('eInputWrapper1')\n ], TextFilter.prototype, \"eInputWrapper1\", void 0);\n __decorate([\n RefSelector('eInputWrapper2')\n ], TextFilter.prototype, \"eInputWrapper2\", void 0);\n return TextFilter;\n}(SimpleFilter));\nexport { TextFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar 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 'flex',\n 'width',\n 'minWidth',\n 'maxWidth',\n 'rowGroupIndex',\n 'pivotIndex'\n ];\n ColDefUtil.BOOLEAN_PROPERTIES = [\n 'suppressCellFlash',\n 'suppressColumnsToolPanel',\n 'suppressFiltersToolPanel',\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}());\nexport { ColDefUtil };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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\nimport { _ } from \"../utils\";\nvar ColumnKeyCreator = /** @class */ (function () {\n function ColumnKeyCreator() {\n this.existingKeys = {};\n }\n ColumnKeyCreator.prototype.addExistingKeys = function (keys) {\n for (var i = 0; i < keys.length; i++) {\n this.existingKeys[keys[i]] = true;\n }\n };\n ColumnKeyCreator.prototype.getUniqueKey = function (colId, colField) {\n // in case user passed in number for colId, convert to string\n colId = _.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[idToTry]) {\n this.existingKeys[idToTry] = true;\n return idToTry;\n }\n count++;\n }\n };\n return ColumnKeyCreator;\n}());\nexport { ColumnKeyCreator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { ColumnGroup } from \"../entities/columnGroup\";\nimport { Column } from \"../entities/column\";\nimport { Events } from \"../events\";\nimport { OriginalColumnGroup } from \"../entities/originalColumnGroup\";\nimport { GroupInstanceIdCreator } from \"./groupInstanceIdCreator\";\nimport { Autowired, Bean, Optional, PostConstruct, Qualifier } from \"../context/context\";\nimport { Constants } from \"../constants\";\nimport { _ } from \"../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 this.flexActive = false;\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.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.EVENT_NEW_COLUMNS_LOADED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(newColumnsLoadedEvent);\n this.flexActive = !!_.find(this.getDisplayedCenterColumns(), function (col) { return !!col.getFlex(); });\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 && _.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 (!_.exists(this.displayedCenterColumns)) {\n return;\n }\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.EVENT_VIRTUAL_COLUMNS_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\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 return true;\n }\n return true;\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.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 = _.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 ? _.last(this.displayedRightColumns) : null;\n }\n else {\n lastLeft = this.displayedLeftColumns ? _.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, skipHeader, 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 the 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 if (skipHeader == null) {\n skipHeader = this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n }\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, skipHeader);\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) {\n var event_2 = {\n type: 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, skipHeader, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.autoSizeColumns([key], skipHeader, source);\n }\n };\n ColumnController.prototype.autoSizeAllColumns = function (skipHeader, source) {\n if (source === void 0) { source = \"api\"; }\n var allDisplayedColumns = this.getAllDisplayedColumns();\n this.autoSizeColumns(allDisplayedColumns, skipHeader, source);\n };\n ColumnController.prototype.getColumnsFromTree = function (rootColumns) {\n var result = [];\n var recursiveFindColumns = function (childColumns) {\n for (var i = 0; i < childColumns.length; i++) {\n var child = childColumns[i];\n if (child instanceof Column) {\n result.push(child);\n }\n else if (child instanceof OriginalColumnGroup) {\n recursiveFindColumns(child.getChildren());\n }\n }\n };\n recursiveFindColumns(rootColumns);\n return result;\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 return null;\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 Constants.PINNED_LEFT:\n return this.getLeftDisplayedColumnGroups();\n case Constants.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 return this.getDisplayedColumnsForRow(rowNode, this.displayedLeftColumns);\n };\n ColumnController.prototype.getDisplayedRightColumnsForRow = function (rowNode) {\n if (!this.colSpanActive) {\n return this.displayedRightColumns;\n }\n return this.getDisplayedColumnsForRow(rowNode, this.displayedRightColumns);\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 || _.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 _.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.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.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.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.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.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.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 (_.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.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.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.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 return column || this.getGridColumn(key);\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 if (this.flexActive) {\n this.refreshFlexedColumns();\n }\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 = _.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.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, source);\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.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 return;\n }\n column.setAggFunc(aggFunc);\n var event = {\n type: 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);\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.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 _.moveInArray(this.gridColumns, columnsToMove, toIndex);\n this.updateDisplayedColumns(source);\n var event = {\n type: 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 _.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)) {\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 Constants.PINNED_LEFT:\n return this.leftWidth;\n case Constants.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_5 = {\n type: Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_5);\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 Constants.PINNED_LEFT:\n return this.getDisplayedLeftColumns();\n case Constants.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 _.missingOrEmpty(this.gridColumns);\n };\n ColumnController.prototype.isRowGroupEmpty = function () {\n return _.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 return false;\n }, source, function () {\n var event = {\n type: 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 === Constants.PINNED_LEFT) {\n actualPinned = Constants.PINNED_LEFT;\n }\n else if (pinned === Constants.PINNED_RIGHT) {\n actualPinned = Constants.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 return false;\n }, source, function () {\n var event = {\n type: 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 (_.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) {\n return;\n }\n this.updateDisplayedColumns(source);\n if (_.exists(createEvent) && createEvent) {\n var event_6 = createEvent();\n event_6.columns = updatedColumns;\n event_6.column = updatedColumns.length === 1 ? updatedColumns[0] : null;\n this.eventService.dispatchEvent(event_6);\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 return null;\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 return null;\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 && _.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 (_.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 (_.missing(rowGroupIndex) && rowGroup) {\n stateItem.rowGroupIndex = letRowGroupIndex++;\n }\n if (_.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 (_.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 (_.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 _.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_7 = {\n type: Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_7);\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 = _.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.EVENT_COLUMN_VALUE_CHANGED, valueColumnIdMapper, this.valueColumns);\n var pivotColumnIdMapper = function (cs) { return cs.colId + '-' + cs.pivotIndex; };\n raiseEventWithAllColumns(Events.EVENT_COLUMN_PIVOT_CHANGED, pivotColumnIdMapper, this.pivotColumns);\n var rowGroupColumnIdMapper = function (cs) { return cs.colId + '-' + cs.rowGroupIndex; };\n raiseEventWithAllColumns(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) {\n return;\n }\n var event = {\n type: 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);\n };\n ColumnController.prototype.raiseColumnVisibleEvent = function (changedColumns, source) {\n if (!changedColumns.length) {\n return;\n }\n var event = {\n type: 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);\n };\n ColumnController.prototype.raiseColumnResizeEvent = function (changedColumns, source) {\n if (!changedColumns.length) {\n return;\n }\n var event = {\n type: 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);\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 = _.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) {\n return;\n }\n var event = {\n type: 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);\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 (_.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 ||\n !_.exists(this.groupAutoColumns) ||\n _.missing(this.groupAutoColumns)) {\n return null;\n }\n return _.find(this.groupAutoColumns, function (groupCol) { return _this.columnsMatch(groupCol, key); });\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 return headerName;\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 return null;\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 console.warn('ag-grid: headerValueGetter must be a function or a string');\n return '';\n }\n else if (colDef.headerName != null) {\n return colDef.headerName;\n }\n else if (colDef.field) {\n return _.camelCaseToHumanText(colDef.field);\n }\n return '';\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 = _.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 return headerName;\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) {\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) {\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 return 1;\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) {\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) {\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.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) {\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) {\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) {\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 = this.gridColumns.filter(function (column) {\n var isAutoGroupCol = _this.groupAutoColumns && _.includes(_this.groupAutoColumns, column);\n var isValueCol = _this.valueColumns && _.includes(_this.valueColumns, column);\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 = this.gridColumns.filter(function (column) {\n // keep col if a) it's auto-group or b) it's visible\n var isAutoGroupCol = _this.groupAutoColumns && _.includes(_this.groupAutoColumns, column);\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 (_.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 && _.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 var searchForColDefs = function (colDefs2) {\n colDefs2.forEach(function (abstractColDef) {\n var isGroup = _.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 if (colDefs) {\n searchForColDefs(colDefs);\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.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 (_.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 _.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 (_.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.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 [\n this.displayedLeftColumns,\n this.displayedRightColumns,\n this.displayedCenterColumns\n ].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 _.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 [\n this.displayedLeftColumnTree,\n this.displayedRightColumnTree,\n this.displayedCentreColumnTree\n ].forEach(function (columns) {\n columns.forEach(function (column) {\n if (column instanceof 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) {\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 Constants.PINNED_LEFT:\n result = this.displayedLeftHeaderRows[dept];\n break;\n case Constants.PINNED_RIGHT:\n result = this.displayedRightHeaderRows[dept];\n break;\n default:\n result = this.displayedCentreHeaderRows[dept];\n break;\n }\n if (_.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 var testGroup = function (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) {\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 testGroup(this.displayedLeftColumnTree, this.displayedLeftHeaderRows, 0);\n testGroup(this.displayedRightColumnTree, this.displayedRightHeaderRows, 0);\n testGroup(this.displayedCentreColumnTree, this.displayedCentreHeaderRows, 0);\n };\n ColumnController.prototype.updateVirtualSets = function () {\n var virtualColIds = this.updateDisplayedCenterVirtualColumns();\n this.updateDisplayedVirtualGroups(virtualColIds);\n };\n ColumnController.prototype.filterOutColumnsWithinViewport = function () {\n return this.displayedCenterColumns.filter(this.isColumnInViewport.bind(this));\n };\n ColumnController.prototype.refreshFlexedColumns = function (updatedFlexViewportWidth, source) {\n if (source === void 0) { source = 'flex'; }\n if (!this.flexActive) {\n return;\n }\n this.flexViewportWidth = updatedFlexViewportWidth || this.flexViewportWidth;\n if (!this.flexViewportWidth) {\n return;\n }\n // If the grid has left-over space, divide it between flexing columns in proportion to their flex value.\n // A \"flexing column\" is one that has a 'flex' value set and is not currently being constrained by its\n // minWidth or maxWidth rules.\n var knownWidthColumns = this.displayedCenterColumns.filter(function (col) { return !col.getFlex(); });\n var flexingColumns = this.displayedCenterColumns.filter(function (col) { return col.getFlex(); });\n var flexingColumnSizes = [];\n var spaceForFlexingColumns;\n outer: while (true) {\n var totalFlex = flexingColumns.reduce(function (count, col) { return count + col.getFlex(); }, 0);\n spaceForFlexingColumns = this.flexViewportWidth - this.getWidthOfColsInList(knownWidthColumns);\n for (var i = 0; i < flexingColumns.length; i++) {\n var col = flexingColumns[i];\n var widthByFlexRule = spaceForFlexingColumns * col.getFlex() / totalFlex;\n var constrainedWidth = void 0;\n if (widthByFlexRule < col.getMinWidth()) {\n constrainedWidth = col.getMinWidth();\n }\n else if (col.getMaxWidth() != null && widthByFlexRule > col.getMaxWidth()) {\n constrainedWidth = col.getMaxWidth();\n }\n if (constrainedWidth) {\n // This column is not in fact flexing as it is being constrained to a specific size\n // so remove it from the list of flexing columns and start again\n col.setActualWidth(constrainedWidth, source);\n _.removeFromArray(flexingColumns, col);\n knownWidthColumns.push(col);\n continue outer;\n }\n flexingColumnSizes[i] = Math.round(widthByFlexRule);\n }\n break;\n }\n var remainingSpace = spaceForFlexingColumns;\n flexingColumns.forEach(function (col, i) {\n col.setActualWidth(Math.min(flexingColumnSizes[i], remainingSpace), source);\n remainingSpace -= flexingColumnSizes[i];\n });\n this.setLeftValues(source);\n this.updateBodyWidths();\n this.fireResizedEventForColumns(flexingColumns, source);\n };\n // called from api\n ColumnController.prototype.sizeColumnsToFit = function (gridWidth, source, silent) {\n if (source === void 0) { source = \"sizeColumnsToFit\"; }\n // avoid divide by zero\n var allDisplayedColumns = this.getAllDisplayedColumns();\n if (gridWidth <= 0 || !allDisplayedColumns.length) {\n return;\n }\n var colsToSpread = [];\n var colsToNotSpread = [];\n allDisplayedColumns.forEach(function (column) {\n if (column.getColDef().suppressSizeToFit === true) {\n colsToNotSpread.push(column);\n }\n else {\n colsToSpread.push(column);\n }\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 var moveToNotSpread = function (column) {\n _.removeFromArray(colsToSpread, column);\n colsToNotSpread.push(column);\n };\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 if (silent) {\n return;\n }\n this.fireResizedEventForColumns(colsToFireEventFor, source);\n };\n ColumnController.prototype.fireResizedEventForColumns = function (columns, source) {\n var _this = this;\n columns.forEach(function (column) {\n var event = {\n type: Events.EVENT_COLUMN_RESIZED,\n column: column,\n columns: [column],\n finished: true,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: source\n };\n _this.eventService.dispatchEvent(event);\n });\n };\n ColumnController.prototype.buildDisplayedTrees = function (visibleColumns) {\n var leftVisibleColumns = [];\n var rightVisibleColumns = [];\n var centerVisibleColumns = [];\n visibleColumns.forEach(function (column) {\n switch (column.getPinned()) {\n case \"left\":\n leftVisibleColumns.push(column);\n break;\n case \"right\":\n rightVisibleColumns.push(column);\n break;\n default:\n centerVisibleColumns.push(column);\n break;\n }\n });\n var groupInstanceIdCreator = new GroupInstanceIdCreator();\n this.displayedLeftColumnTree = this.displayedGroupCreator.createDisplayedGroups(leftVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, Constants.PINNED_LEFT, this.displayedLeftColumnTree);\n this.displayedRightColumnTree = this.displayedGroupCreator.createDisplayedGroups(rightVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, Constants.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) {\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 || 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 return columnList.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);\n };\n ColumnController.prototype.getGridBalancedTree = function () {\n return this.gridBalancedTree;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ColumnController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('expressionService')\n ], ColumnController.prototype, \"expressionService\", void 0);\n __decorate([\n Autowired('columnFactory')\n ], ColumnController.prototype, \"columnFactory\", void 0);\n __decorate([\n Autowired('displayedGroupCreator')\n ], ColumnController.prototype, \"displayedGroupCreator\", void 0);\n __decorate([\n Autowired('autoWidthCalculator')\n ], ColumnController.prototype, \"autoWidthCalculator\", void 0);\n __decorate([\n Autowired('eventService')\n ], ColumnController.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnUtils')\n ], ColumnController.prototype, \"columnUtils\", void 0);\n __decorate([\n Autowired('context')\n ], ColumnController.prototype, \"context\", void 0);\n __decorate([\n Autowired('columnAnimationService')\n ], ColumnController.prototype, \"columnAnimationService\", void 0);\n __decorate([\n Autowired('autoGroupColService')\n ], ColumnController.prototype, \"autoGroupColService\", void 0);\n __decorate([\n Optional('aggFuncService')\n ], ColumnController.prototype, \"aggFuncService\", void 0);\n __decorate([\n Optional('valueCache')\n ], ColumnController.prototype, \"valueCache\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ColumnController.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ColumnController.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], ColumnController.prototype, \"init\", null);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], ColumnController.prototype, \"setBeans\", null);\n ColumnController = __decorate([\n Bean('columnController')\n ], ColumnController);\n return ColumnController;\n}());\nexport { ColumnController };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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}());\nexport { GroupInstanceIdCreator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ColumnGroup } from \"../entities/columnGroup\";\nimport { OriginalColumnGroup } from \"../entities/originalColumnGroup\";\nimport { Bean } from \"../context/context\";\nimport { Autowired } from \"../context/context\";\nimport { _ } from \"../utils\";\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 var optionsWrapper = this.gridOptionsWrapper;\n var minColWidth = colDef.minWidth != null ? colDef.minWidth : optionsWrapper.getMinColWidth();\n var maxColWidth = colDef.maxWidth != null ? colDef.maxWidth : (optionsWrapper.getMaxColWidth() || _.getMaxSafeInteger());\n var width = colDef.width != null ? colDef.width : optionsWrapper.getColWidth();\n return Math.max(Math.min(width, maxColWidth), minColWidth);\n };\n ColumnUtils.prototype.getOriginalPathForColumn = function (column, originalBalancedTree) {\n var result = [];\n var found = false;\n var recursePath = function (balancedColumnTree, dept) {\n for (var i = 0; i < balancedColumnTree.length; i++) {\n if (found) {\n return;\n }\n // quit the search, so 'result' is kept with the found result\n var node = balancedColumnTree[i];\n if (node instanceof OriginalColumnGroup) {\n var nextNode = node;\n recursePath(nextNode.getChildren(), dept + 1);\n result[dept] = node;\n }\n else if (node === column) {\n found = true;\n }\n }\n };\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 return found ? result : null;\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) {\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) {\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) {\n _this.depthFirstDisplayedColumnTreeSearch(child.getDisplayedChildren(), callback);\n }\n callback(child);\n });\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ColumnUtils.prototype, \"gridOptionsWrapper\", void 0);\n ColumnUtils = __decorate([\n Bean('columnUtils')\n ], ColumnUtils);\n return ColumnUtils;\n}());\nexport { ColumnUtils };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired } from \"../context/context\";\nimport { ColumnGroup } from \"../entities/columnGroup\";\nimport { OriginalColumnGroup } from \"../entities/originalColumnGroup\";\nimport { Bean } from \"../context/context\";\nimport { _ } from \"../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 = _.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.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 (_.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(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) {\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) {\n var columnGroup = columnsOrGroup;\n _this.setupParentsIntoColumns(columnGroup.getChildren(), columnGroup);\n }\n });\n };\n DisplayedGroupCreator.prototype.getOriginalPathForColumn = function (balancedColumnTree, column) {\n var result = [];\n var found = false;\n var recursePath = function (balancedColumnTree, dept) {\n for (var i = 0; i < balancedColumnTree.length; i++) {\n // quit the search, so 'result' is kept with the found result\n if (found) {\n return;\n }\n var node = balancedColumnTree[i];\n if (node instanceof OriginalColumnGroup) {\n var nextNode = node;\n recursePath(nextNode.getChildren(), dept + 1);\n result[dept] = node;\n }\n else if (node === column) {\n found = true;\n }\n }\n };\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 console.warn('could not get path');\n return null;\n };\n __decorate([\n Autowired('columnUtils')\n ], DisplayedGroupCreator.prototype, \"columnUtils\", void 0);\n __decorate([\n Autowired('context')\n ], DisplayedGroupCreator.prototype, \"context\", void 0);\n DisplayedGroupCreator = __decorate([\n Bean('displayedGroupCreator')\n ], DisplayedGroupCreator);\n return DisplayedGroupCreator;\n}());\nexport { DisplayedGroupCreator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"../context/context\";\nvar ColumnApi = /** @class */ (function () {\n function ColumnApi() {\n }\n ColumnApi.prototype.sizeColumnsToFit = function (gridWidth) {\n // AG-3403 validate that gridWidth is provided because this method has the same name as\n // a method on the grid API that takes no arguments, and it's easy to confuse the two\n if (typeof gridWidth === \"undefined\") {\n console.error('ag-Grid: missing parameter to columnApi.sizeColumnsToFit(gridWidth)');\n }\n this.columnController.sizeColumnsToFit(gridWidth, 'api');\n };\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, skipHeader) { return this.columnController.autoSizeColumn(key, skipHeader, 'api'); };\n ColumnApi.prototype.autoSizeColumns = function (keys, skipHeader) { return this.columnController.autoSizeColumns(keys, skipHeader, 'api'); };\n ColumnApi.prototype.autoSizeAllColumns = function (skipHeader) { this.columnController.autoSizeAllColumns(skipHeader, '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 Autowired('columnController')\n ], ColumnApi.prototype, \"columnController\", void 0);\n ColumnApi = __decorate([\n Bean('columnApi')\n ], ColumnApi);\n return ColumnApi;\n}());\nexport { ColumnApi };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Promise } from \"../utils\";\nimport { Autowired, Bean, PostConstruct, PreDestroy } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { ModuleNames } from \"../modules/moduleNames\";\nimport { ModuleRegistry } from \"../modules/moduleRegistry\";\nvar FilterManager = /** @class */ (function () {\n function FilterManager() {\n this.allFilters = {};\n this.quickFilter = null;\n this.quickFilterParts = null;\n // this is true when the grid is processing the filter change. this is used by the cell comps, so that they\n // don't flash when data changes due to filter changes. there is no need to flash when filter changes as the\n // user is in control, so doesn't make sense to show flashing changes. for example, go to main demo where\n // this feature is turned off (hack code to always return false for isSuppressFlashingCellsBecauseFiltering(), put in)\n // 100,000 rows and group by country. then do some filtering. all the cells flash, which is silly.\n this.processingFilterChange = false;\n }\n FilterManager_1 = FilterManager;\n FilterManager.prototype.registerGridCore = function (gridCore) {\n this.gridCore = gridCore;\n };\n FilterManager.prototype.init = function () {\n this.eventService.addEventListener(Events.EVENT_ROW_DATA_CHANGED, this.onNewRowsLoaded.bind(this));\n this.eventService.addEventListener(Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n this.quickFilter = this.parseQuickFilter(this.gridOptionsWrapper.getQuickFilterText());\n this.setQuickFilterParts();\n this.allowShowChangeAfterFilter = this.gridOptionsWrapper.isAllowShowChangeAfterFilter();\n // check this here, in case there is a filter from the start\n this.checkExternalFilter();\n };\n FilterManager.prototype.setQuickFilterParts = function () {\n if (this.quickFilter) {\n this.quickFilterParts = this.quickFilter.split(' ');\n }\n else {\n this.quickFilterParts = null;\n }\n };\n FilterManager.prototype.setFilterModel = function (model) {\n var _this = this;\n var allPromises = [];\n if (model) {\n // mark the filters as we set them, so any active filters left over we stop\n var modelKeys_1 = Object.keys(model);\n _.iterateObject(this.allFilters, function (colId, filterWrapper) {\n _.removeFromArray(modelKeys_1, colId);\n var newModel = model[colId];\n _this.setModelOnFilterWrapper(filterWrapper.filterPromise, newModel);\n allPromises.push(filterWrapper.filterPromise);\n });\n // at this point, processedFields contains data for which we don't have a filter working yet\n modelKeys_1.forEach(function (colId) {\n var column = _this.columnController.getPrimaryColumn(colId);\n if (!column) {\n console.warn('Warning ag-grid setFilterModel - no column found for colId ' + colId);\n return;\n }\n var filterWrapper = _this.getOrCreateFilterWrapper(column, 'NO_UI');\n _this.setModelOnFilterWrapper(filterWrapper.filterPromise, model[colId]);\n allPromises.push(filterWrapper.filterPromise);\n });\n }\n else {\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n _this.setModelOnFilterWrapper(filterWrapper.filterPromise, null);\n allPromises.push(filterWrapper.filterPromise);\n });\n }\n Promise.all(allPromises).then(function (whatever) {\n _this.onFilterChanged();\n });\n };\n FilterManager.prototype.setModelOnFilterWrapper = function (filterPromise, newModel) {\n filterPromise.then(function (filter) {\n if (typeof filter.setModel !== 'function') {\n console.warn('Warning ag-grid - filter missing setModel method, which is needed for setFilterModel');\n return;\n }\n filter.setModel(newModel);\n });\n };\n FilterManager.prototype.getFilterModel = function () {\n var result = {};\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n // because user can provide filters, we provide useful error checking and messages\n var filterPromise = filterWrapper.filterPromise;\n var filter = filterPromise.resolveNow(null, function (filter) { return filter; });\n if (filter == null) {\n return null;\n }\n if (typeof filter.getModel !== 'function') {\n console.warn('Warning ag-grid - filter API missing getModel method, which is needed for getFilterModel');\n return;\n }\n var model = filter.getModel();\n if (_.exists(model)) {\n result[key] = model;\n }\n });\n return result;\n };\n // returns true if any advanced filter (ie not quick filter) active\n FilterManager.prototype.isAdvancedFilterPresent = function () {\n return this.advancedFilterPresent;\n };\n // called by:\n // 1) onFilterChanged()\n // 2) onNewRowsLoaded()\n FilterManager.prototype.setAdvancedFilterPresent = function () {\n var atLeastOneActive = false;\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n if (filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); })) {\n atLeastOneActive = true;\n }\n });\n this.advancedFilterPresent = atLeastOneActive;\n };\n FilterManager.prototype.updateFilterFlagInColumns = function (source, additionalEventAttributes) {\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n var filterActive = filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n filterWrapper.column.setFilterActive(filterActive, source, additionalEventAttributes);\n });\n };\n // returns true if quickFilter or advancedFilter\n FilterManager.prototype.isAnyFilterPresent = function () {\n return this.isQuickFilterPresent() || this.advancedFilterPresent || this.externalFilterPresent;\n };\n FilterManager.prototype.doesFilterPass = function (node, filterToSkip) {\n var data = node.data;\n var colKeys = Object.keys(this.allFilters);\n for (var i = 0, l = colKeys.length; i < l; i++) { // critical code, don't use functional programming\n var colId = colKeys[i];\n var filterWrapper = this.allFilters[colId];\n // if no filter, always pass\n if (filterWrapper === undefined) {\n continue;\n }\n var filter = filterWrapper.filterPromise.resolveNow(undefined, function (filter) { return filter; });\n // if filter not yet there, continue\n if (filter === undefined) {\n continue;\n }\n if (filter === filterToSkip) {\n continue;\n }\n // don't bother with filters that are not active\n if (!filter.isFilterActive()) {\n continue;\n }\n if (!filter.doesFilterPass) { // because users can do custom filters, give nice error message\n console.error('Filter is missing method doesFilterPass');\n }\n var params = {\n node: node,\n data: data\n };\n if (!filter.doesFilterPass(params)) {\n return false;\n }\n }\n // all filters passed\n return true;\n };\n FilterManager.prototype.parseQuickFilter = function (newFilter) {\n if (_.missing(newFilter) || newFilter === \"\") {\n return null;\n }\n if (!this.gridOptionsWrapper.isRowModelDefault()) {\n console.warn('ag-grid: quick filtering only works with the Client-side Row Model');\n return null;\n }\n return newFilter.toUpperCase();\n };\n // returns true if it has changed (not just same value again)\n FilterManager.prototype.setQuickFilter = function (newFilter) {\n var parsedFilter = this.parseQuickFilter(newFilter);\n if (this.quickFilter !== parsedFilter) {\n this.quickFilter = parsedFilter;\n this.setQuickFilterParts();\n this.onFilterChanged();\n }\n };\n FilterManager.prototype.checkExternalFilter = function () {\n this.externalFilterPresent = this.gridOptionsWrapper.isExternalFilterPresent();\n };\n FilterManager.prototype.onFilterChanged = function (additionalEventAttributes) {\n this.setAdvancedFilterPresent();\n this.updateFilterFlagInColumns(\"filterChanged\", additionalEventAttributes);\n this.checkExternalFilter();\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.onAnyFilterChanged) {\n filter.onAnyFilterChanged();\n }\n });\n });\n var filterChangedEvent = {\n type: Events.EVENT_FILTER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n if (additionalEventAttributes) {\n _.mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n // because internal events are not async in ag-grid, when the dispatchEvent\n // method comes back, we know all listeners have finished executing.\n this.processingFilterChange = true;\n this.eventService.dispatchEvent(filterChangedEvent);\n this.processingFilterChange = false;\n };\n FilterManager.prototype.isSuppressFlashingCellsBecauseFiltering = function () {\n if (this.allowShowChangeAfterFilter) {\n // if user has elected to always flash cell changes, then return false always\n return false;\n }\n else {\n // otherwise we suppress flashing changes when filtering\n return this.processingFilterChange;\n }\n };\n FilterManager.prototype.isQuickFilterPresent = function () {\n return this.quickFilter !== null;\n };\n FilterManager.prototype.doesRowPassOtherFilters = function (filterToSkip, node) {\n return this.doesRowPassFilter(node, filterToSkip);\n };\n FilterManager.prototype.doesRowPassQuickFilterNoCache = function (node, filterPart) {\n var _this = this;\n var columns = this.columnController.getAllColumnsForQuickFilter();\n var filterPasses = false;\n columns.forEach(function (column) {\n if (filterPasses) {\n return;\n }\n var part = _this.getQuickFilterTextForColumn(column, node);\n if (_.exists(part)) {\n if (part.indexOf(filterPart) >= 0) {\n filterPasses = true;\n }\n }\n });\n return filterPasses;\n };\n FilterManager.prototype.doesRowPassQuickFilterCache = function (node, filterPart) {\n if (!node.quickFilterAggregateText) {\n this.aggregateRowForQuickFilter(node);\n }\n var filterPasses = node.quickFilterAggregateText.indexOf(filterPart) >= 0;\n return filterPasses;\n };\n FilterManager.prototype.doesRowPassQuickFilter = function (node) {\n var _this = this;\n var filterPasses = true;\n var usingCache = this.gridOptionsWrapper.isCacheQuickFilter();\n this.quickFilterParts.forEach(function (filterPart) {\n var partPasses = usingCache ?\n _this.doesRowPassQuickFilterCache(node, filterPart) : _this.doesRowPassQuickFilterNoCache(node, filterPart);\n // each part must pass, if any fails, then the whole filter fails\n if (!partPasses) {\n filterPasses = false;\n }\n });\n return filterPasses;\n };\n FilterManager.prototype.doesRowPassFilter = function (node, filterToSkip) {\n // the row must pass ALL of the filters, so if any of them fail,\n // we return true. that means if a row passes the quick filter,\n // but fails the column filter, it fails overall\n // first up, check quick filter\n if (this.isQuickFilterPresent()) {\n if (!this.doesRowPassQuickFilter(node)) {\n return false;\n }\n }\n // secondly, give the client a chance to reject this row\n if (this.externalFilterPresent) {\n if (!this.gridOptionsWrapper.doesExternalFilterPass(node)) {\n return false;\n }\n }\n // lastly, check our internal advanced filter\n if (this.advancedFilterPresent) {\n if (!this.doesFilterPass(node, filterToSkip)) {\n return false;\n }\n }\n // got this far, all filters pass\n return true;\n };\n FilterManager.prototype.getQuickFilterTextForColumn = function (column, rowNode) {\n var value = this.valueService.getValue(column, rowNode, true);\n var valueAfterCallback;\n var colDef = column.getColDef();\n if (column.getColDef().getQuickFilterText) {\n var params = {\n value: value,\n node: rowNode,\n data: rowNode.data,\n column: column,\n colDef: colDef,\n context: this.gridOptionsWrapper.getContext()\n };\n valueAfterCallback = column.getColDef().getQuickFilterText(params);\n }\n else {\n valueAfterCallback = value;\n }\n if (_.exists(valueAfterCallback)) {\n return valueAfterCallback.toString().toUpperCase();\n }\n else {\n return null;\n }\n };\n FilterManager.prototype.aggregateRowForQuickFilter = function (node) {\n var _this = this;\n var stringParts = [];\n var columns = this.columnController.getAllColumnsForQuickFilter();\n columns.forEach(function (column) {\n var part = _this.getQuickFilterTextForColumn(column, node);\n if (_.exists(part)) {\n stringParts.push(part);\n }\n });\n node.quickFilterAggregateText = stringParts.join(FilterManager_1.QUICK_FILTER_SEPARATOR);\n };\n FilterManager.prototype.onNewRowsLoaded = function (source) {\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.onNewRowsLoaded) {\n filter.onNewRowsLoaded();\n }\n });\n });\n this.updateFilterFlagInColumns(source);\n this.setAdvancedFilterPresent();\n };\n FilterManager.prototype.createValueGetter = function (column) {\n var _this = this;\n return function (node) {\n return _this.valueService.getValue(column, node, true);\n };\n };\n FilterManager.prototype.getFilterComponent = function (column, source) {\n var filterWrapper = this.getOrCreateFilterWrapper(column, source);\n return filterWrapper.filterPromise;\n };\n FilterManager.prototype.isFilterActive = function (column) {\n var filterWrapper = this.cachedFilter(column);\n if (filterWrapper) {\n return filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n }\n else {\n return false;\n }\n };\n FilterManager.prototype.getOrCreateFilterWrapper = function (column, source) {\n var filterWrapper = this.cachedFilter(column);\n if (!filterWrapper) {\n filterWrapper = this.createFilterWrapper(column, source);\n this.allFilters[column.getColId()] = filterWrapper;\n }\n else {\n if (source !== 'NO_UI') {\n this.putIntoGui(filterWrapper, source);\n }\n }\n return filterWrapper;\n };\n FilterManager.prototype.cachedFilter = function (column) {\n return this.allFilters[column.getColId()];\n };\n FilterManager.prototype.createFilterInstance = function (column, $scope) {\n var _this = this;\n var defaultFilter = 'agTextColumnFilter';\n if (ModuleRegistry.isRegistered(ModuleNames.SetFilterModule)) {\n defaultFilter = 'agSetColumnFilter';\n }\n var sanitisedColDef = _.cloneObject(column.getColDef());\n var filterInstance;\n var params = this.createFilterParams(column, sanitisedColDef, $scope);\n params.filterChangedCallback = this.onFilterChanged.bind(this);\n params.filterModifiedCallback = function () {\n var event = {\n type: Events.EVENT_FILTER_MODIFIED,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n column: column,\n filterInstance: filterInstance\n };\n _this.eventService.dispatchEvent(event);\n };\n // we modify params in a callback as we need the filter instance, and this isn't available\n // when creating the params above\n var modifyParamsCallback = function (params, filter) { return _.assign(params, {\n doesRowPassOtherFilter: _this.doesRowPassOtherFilters.bind(_this, filter),\n }); };\n var res = this.userComponentFactory.newFilterComponent(sanitisedColDef, params, defaultFilter, modifyParamsCallback);\n if (res) {\n res.then(function (r) { return filterInstance = r; });\n }\n return res;\n };\n FilterManager.prototype.createFilterParams = function (column, colDef, $scope) {\n if ($scope === void 0) { $scope = null; }\n var params = {\n api: this.gridOptionsWrapper.getApi(),\n column: column,\n colDef: colDef,\n rowModel: this.rowModel,\n filterChangedCallback: null,\n filterModifiedCallback: null,\n valueGetter: this.createValueGetter(column),\n context: this.gridOptionsWrapper.getContext(),\n doesRowPassOtherFilter: null\n };\n // hack in scope if using AngularJS\n if ($scope) {\n params.$scope = $scope;\n }\n return params;\n };\n FilterManager.prototype.createFilterWrapper = function (column, source) {\n var filterWrapper = {\n column: column,\n filterPromise: null,\n scope: null,\n compiledElement: null,\n guiPromise: Promise.external()\n };\n filterWrapper.scope = this.gridOptionsWrapper.isAngularCompileFilters() ? this.$scope.$new() : null;\n filterWrapper.filterPromise = this.createFilterInstance(column, filterWrapper.scope);\n if (filterWrapper.filterPromise) {\n this.putIntoGui(filterWrapper, source);\n }\n return filterWrapper;\n };\n FilterManager.prototype.putIntoGui = function (filterWrapper, source) {\n var _this = this;\n var eFilterGui = document.createElement('div');\n eFilterGui.className = 'ag-filter';\n filterWrapper.filterPromise.then(function (filter) {\n var guiFromFilter = filter.getGui();\n if (_.missing(guiFromFilter)) {\n console.warn(\"getGui method from filter returned \" + guiFromFilter + \", it should be a DOM element or an HTML template string.\");\n }\n // for backwards compatibility with Angular 1 - we\n // used to allow providing back HTML from getGui().\n // once we move away from supporting Angular 1\n // directly, we can change this.\n if (typeof guiFromFilter === 'string') {\n guiFromFilter = _.loadTemplate(guiFromFilter);\n }\n eFilterGui.appendChild(guiFromFilter);\n if (filterWrapper.scope) {\n var compiledElement = _this.$compile(eFilterGui)(filterWrapper.scope);\n filterWrapper.compiledElement = compiledElement;\n window.setTimeout(function () { return filterWrapper.scope.$apply(); }, 0);\n }\n filterWrapper.guiPromise.resolve(eFilterGui);\n _this.eventService.dispatchEvent({\n type: Events.EVENT_FILTER_OPENED,\n column: filterWrapper.column,\n source: source,\n eGui: eFilterGui,\n api: _this.gridApi,\n columnApi: _this.columnApi\n });\n });\n };\n FilterManager.prototype.onNewColumnsLoaded = function () {\n var _this = this;\n var atLeastOneFilterGone = false;\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n var oldColumn = !_this.columnController.getPrimaryColumn(filterWrapper.column);\n if (oldColumn) {\n atLeastOneFilterGone = true;\n _this.disposeFilterWrapper(filterWrapper, \"filterDestroyed\");\n }\n });\n if (atLeastOneFilterGone) {\n this.onFilterChanged();\n }\n };\n // destroys the filter, so it not longer takes part\n FilterManager.prototype.destroyFilter = function (column, source) {\n if (source === void 0) { source = \"api\"; }\n var filterWrapper = this.allFilters[column.getColId()];\n if (filterWrapper) {\n this.disposeFilterWrapper(filterWrapper, source);\n this.onFilterChanged();\n }\n };\n FilterManager.prototype.disposeFilterWrapper = function (filterWrapper, source) {\n var _this = this;\n filterWrapper.filterPromise.then(function (filter) {\n filter.setModel(null);\n if (filter.destroy) {\n filter.destroy();\n }\n filterWrapper.column.setFilterActive(false, source);\n if (filterWrapper.scope) {\n if (filterWrapper.compiledElement) {\n filterWrapper.compiledElement.remove();\n }\n filterWrapper.scope.$destroy();\n }\n delete _this.allFilters[filterWrapper.column.getColId()];\n });\n };\n FilterManager.prototype.destroy = function () {\n var _this = this;\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n _this.disposeFilterWrapper(filterWrapper, \"filterDestroyed\");\n });\n };\n var FilterManager_1;\n FilterManager.QUICK_FILTER_SEPARATOR = '\\n';\n __decorate([\n Autowired('$compile')\n ], FilterManager.prototype, \"$compile\", void 0);\n __decorate([\n Autowired('$scope')\n ], FilterManager.prototype, \"$scope\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], FilterManager.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('popupService')\n ], FilterManager.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('valueService')\n ], FilterManager.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('columnController')\n ], FilterManager.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('rowModel')\n ], FilterManager.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('eventService')\n ], FilterManager.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('context')\n ], FilterManager.prototype, \"context\", void 0);\n __decorate([\n Autowired('columnApi')\n ], FilterManager.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], FilterManager.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], FilterManager.prototype, \"userComponentFactory\", void 0);\n __decorate([\n PostConstruct\n ], FilterManager.prototype, \"init\", null);\n __decorate([\n PreDestroy\n ], FilterManager.prototype, \"destroy\", null);\n FilterManager = FilterManager_1 = __decorate([\n Bean('filterManager')\n ], FilterManager);\n return FilterManager;\n}());\nexport { FilterManager };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, PreDestroy, Autowired, PostConstruct } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { _ } from \"../utils\";\n/** Adds drag listening onto an element. In ag-Grid this is used twice, first is resizing columns,\n * second is moving the columns and column groups around (ie the 'drag' part of Drag and Drop. */\nvar DragService = /** @class */ (function () {\n function DragService() {\n this.onMouseUpListener = this.onMouseUp.bind(this);\n this.onMouseMoveListener = this.onMouseMove.bind(this);\n this.onTouchEndListener = this.onTouchUp.bind(this);\n this.onTouchMoveListener = this.onTouchMove.bind(this);\n this.dragEndFunctions = [];\n this.dragSources = [];\n }\n DragService.prototype.init = function () {\n this.logger = this.loggerFactory.create('DragService');\n };\n DragService.prototype.destroy = function () {\n this.dragSources.forEach(this.removeListener.bind(this));\n this.dragSources.length = 0;\n };\n DragService.prototype.removeListener = function (dragSourceAndListener) {\n var element = dragSourceAndListener.dragSource.eElement;\n var mouseDownListener = dragSourceAndListener.mouseDownListener;\n element.removeEventListener('mousedown', mouseDownListener);\n // remove touch listener only if it exists\n if (dragSourceAndListener.touchEnabled) {\n var touchStartListener = dragSourceAndListener.touchStartListener;\n element.removeEventListener('touchstart', touchStartListener, { passive: true });\n }\n };\n DragService.prototype.removeDragSource = function (params) {\n var dragSourceAndListener = _.find(this.dragSources, function (item) { return item.dragSource === params; });\n if (!dragSourceAndListener) {\n return;\n }\n this.removeListener(dragSourceAndListener);\n _.removeFromArray(this.dragSources, dragSourceAndListener);\n };\n DragService.prototype.setNoSelectToBody = function (noSelect) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var eBody = eDocument.querySelector('body');\n if (_.exists(eBody)) {\n // when we drag the mouse in ag-Grid, this class gets added / removed from the body, so that\n // the mouse isn't selecting text when dragging.\n _.addOrRemoveCssClass(eBody, 'ag-unselectable', noSelect);\n }\n };\n DragService.prototype.addDragSource = function (params, includeTouch) {\n if (includeTouch === void 0) { includeTouch = false; }\n var mouseListener = this.onMouseDown.bind(this, params);\n params.eElement.addEventListener('mousedown', mouseListener);\n var touchListener = null;\n var suppressTouch = this.gridOptionsWrapper.isSuppressTouch();\n if (includeTouch && !suppressTouch) {\n touchListener = this.onTouchStart.bind(this, params);\n params.eElement.addEventListener('touchstart', touchListener, { passive: false });\n }\n this.dragSources.push({\n dragSource: params,\n mouseDownListener: mouseListener,\n touchStartListener: touchListener,\n touchEnabled: includeTouch\n });\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onTouchStart = function (params, touchEvent) {\n var _this = this;\n this.currentDragParams = params;\n this.dragging = false;\n var touch = touchEvent.touches[0];\n this.touchLastTime = touch;\n this.touchStart = touch;\n touchEvent.preventDefault();\n // we temporally add these listeners, for the duration of the drag, they\n // are removed in touch end handling.\n params.eElement.addEventListener('touchmove', this.onTouchMoveListener, { passive: true });\n params.eElement.addEventListener('touchend', this.onTouchEndListener, { passive: true });\n params.eElement.addEventListener('touchcancel', this.onTouchEndListener, { passive: true });\n this.dragEndFunctions.push(function () {\n params.eElement.removeEventListener('touchmove', _this.onTouchMoveListener, { passive: true });\n params.eElement.removeEventListener('touchend', _this.onTouchEndListener, { passive: true });\n params.eElement.removeEventListener('touchcancel', _this.onTouchEndListener, { passive: true });\n });\n // see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onCommonMove(touch, this.touchStart);\n }\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onMouseDown = function (params, mouseEvent) {\n var _this = this;\n // we ignore when shift key is pressed. this is for the range selection, as when\n // user shift-clicks a cell, this should not be interpreted as the start of a drag.\n // if (mouseEvent.shiftKey) { return; }\n if (params.skipMouseEvent) {\n if (params.skipMouseEvent(mouseEvent)) {\n return;\n }\n }\n // if there are two elements with parent / child relationship, and both are draggable,\n // when we drag the child, we should NOT drag the parent. an example of this is row moving\n // and range selection - row moving should get preference when use drags the rowDrag component.\n if (mouseEvent._alreadyProcessedByDragService) {\n return;\n }\n mouseEvent._alreadyProcessedByDragService = true;\n // only interested in left button clicks\n if (mouseEvent.button !== 0) {\n return;\n }\n this.currentDragParams = params;\n this.dragging = false;\n this.mouseStartEvent = mouseEvent;\n var eDocument = this.gridOptionsWrapper.getDocument();\n this.setNoSelectToBody(true);\n // we temporally add these listeners, for the duration of the drag, they\n // are removed in mouseup handling.\n eDocument.addEventListener('mousemove', this.onMouseMoveListener);\n eDocument.addEventListener('mouseup', this.onMouseUpListener);\n this.dragEndFunctions.push(function () {\n eDocument.removeEventListener('mousemove', _this.onMouseMoveListener);\n eDocument.removeEventListener('mouseup', _this.onMouseUpListener);\n });\n //see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onMouseMove(mouseEvent);\n }\n };\n // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n DragService.prototype.isEventNearStartEvent = function (currentEvent, startEvent) {\n // by default, we wait 4 pixels before starting the drag\n var dragStartPixels = this.currentDragParams.dragStartPixels;\n var requiredPixelDiff = _.exists(dragStartPixels) ? dragStartPixels : 4;\n return _.areEventsNear(currentEvent, startEvent, requiredPixelDiff);\n };\n DragService.prototype.getFirstActiveTouch = function (touchList) {\n for (var i = 0; i < touchList.length; i++) {\n if (touchList[i].identifier === this.touchStart.identifier) {\n return touchList[i];\n }\n }\n return null;\n };\n DragService.prototype.onCommonMove = function (currentEvent, startEvent) {\n if (!this.dragging) {\n // if mouse hasn't travelled from the start position enough, do nothing\n if (!this.dragging && this.isEventNearStartEvent(currentEvent, startEvent)) {\n return;\n }\n this.dragging = true;\n var event_1 = {\n type: Events.EVENT_DRAG_STARTED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n this.currentDragParams.onDragStart(startEvent);\n }\n this.currentDragParams.onDragging(currentEvent);\n };\n DragService.prototype.onTouchMove = function (touchEvent) {\n var touch = this.getFirstActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n // this.___statusPanel.setInfoText(Math.random() + ' onTouchMove preventDefault stopPropagation');\n // if we don't preview default, then the browser will try and do it's own touch stuff,\n // like do 'back button' (chrome does this) or scroll the page (eg drag column could be confused\n // with scroll page in the app)\n // touchEvent.preventDefault();\n this.onCommonMove(touch, this.touchStart);\n };\n // only gets called after a mouse down - as this is only added after mouseDown\n // and is removed when mouseUp happens\n DragService.prototype.onMouseMove = function (mouseEvent) {\n this.onCommonMove(mouseEvent, this.mouseStartEvent);\n };\n DragService.prototype.onTouchUp = function (touchEvent) {\n var touch = this.getFirstActiveTouch(touchEvent.changedTouches);\n // i haven't worked this out yet, but there is no matching touch\n // when we get the touch up event. to get around this, we swap in\n // the last touch. this is a hack to 'get it working' while we\n // figure out what's going on, why we are not getting a touch in\n // current event.\n if (!touch) {\n touch = this.touchLastTime;\n }\n // if mouse was left up before we started to move, then this is a tap.\n // we check this before onUpCommon as onUpCommon resets the dragging\n // let tap = !this.dragging;\n // let tapTarget = this.currentDragParams.eElement;\n this.onUpCommon(touch);\n // if tap, tell user\n // console.log(`${Math.random()} tap = ${tap}`);\n // if (tap) {\n // tapTarget.click();\n // }\n };\n DragService.prototype.onMouseUp = function (mouseEvent) {\n this.onUpCommon(mouseEvent);\n };\n DragService.prototype.onUpCommon = function (eventOrTouch) {\n if (this.dragging) {\n this.dragging = false;\n this.currentDragParams.onDragStop(eventOrTouch);\n var event_2 = {\n type: Events.EVENT_DRAG_STOPPED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_2);\n }\n this.setNoSelectToBody(false);\n this.mouseStartEvent = null;\n this.touchStart = null;\n this.touchLastTime = null;\n this.currentDragParams = null;\n this.dragEndFunctions.forEach(function (func) { return func(); });\n this.dragEndFunctions.length = 0;\n };\n __decorate([\n Autowired('loggerFactory')\n ], DragService.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('eventService')\n ], DragService.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], DragService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnApi')\n ], DragService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], DragService.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], DragService.prototype, \"init\", null);\n __decorate([\n PreDestroy\n ], DragService.prototype, \"destroy\", null);\n DragService = __decorate([\n Bean('dragService')\n ], DragService);\n return DragService;\n}());\nexport { DragService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, Autowired, PostConstruct } from \"./context/context\";\nimport { Events } from \"./events\";\nimport { CellComp } from \"./rendering/cellComp\";\nimport { _ } from \"./utils\";\nvar FocusedCellController = /** @class */ (function () {\n function FocusedCellController() {\n }\n FocusedCellController.prototype.init = function () {\n this.eventService.addEventListener(Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_GROUP_OPENED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.clearFocusedCell.bind(this));\n // we used to remove focus when moving column, am not sure why. so taking this out and see who complains.\n // we can delete these three lines of code soon.\n // this.eventService.addEventListener(Events.EVENT_COLUMN_MOVED, this.clearFocusedCell.bind(this));\n // this.eventService.addEventListener(Events.EVENT_COLUMN_PINNED, this.clearFocusedCell.bind(this));\n // this.eventService.addEventListener(Events.EVENT_COLUMN_VISIBLE, this.clearFocusedCell.bind(this));\n };\n FocusedCellController.prototype.clearFocusedCell = function () {\n this.focusedCellPosition = null;\n this.onCellFocused(false);\n };\n FocusedCellController.prototype.getFocusedCell = function () {\n return this.focusedCellPosition;\n };\n // we check if the browser is focusing something, and if it is, and\n // it's the cell we think is focused, then return the cell. so this\n // methods returns the cell if a) we think it has focus and b) the\n // browser thinks it has focus. this then returns nothing if we\n // first focus a cell, then second click outside the grid, as then the\n // grid cell will still be focused as far as the grid is concerned,\n // however the browser focus will have moved somewhere else.\n FocusedCellController.prototype.getFocusCellToUseAfterRefresh = function () {\n if (this.gridOptionsWrapper.isSuppressFocusAfterRefresh()) {\n return null;\n }\n if (!this.focusedCellPosition) {\n return null;\n }\n // we check that the browser is actually focusing on the grid, if it is not, then\n // we have nothing to worry about\n var browserFocusedCell = this.getGridCellForDomElement(document.activeElement);\n if (!browserFocusedCell) {\n return null;\n }\n return this.focusedCellPosition;\n };\n FocusedCellController.prototype.getGridCellForDomElement = function (eBrowserCell) {\n var ePointer = eBrowserCell;\n while (ePointer) {\n var cellComp = this.gridOptionsWrapper.getDomData(ePointer, CellComp.DOM_DATA_KEY_CELL_COMP);\n if (cellComp) {\n return cellComp.getCellPosition();\n }\n ePointer = ePointer.parentNode;\n }\n return null;\n };\n FocusedCellController.prototype.setFocusedCell = function (rowIndex, colKey, floating, forceBrowserFocus) {\n if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n var column = _.makeNull(this.columnController.getGridColumn(colKey));\n this.focusedCellPosition = { rowIndex: rowIndex, rowPinned: _.makeNull(floating), column: column };\n this.onCellFocused(forceBrowserFocus);\n };\n FocusedCellController.prototype.isCellFocused = function (cellPosition) {\n if (_.missing(this.focusedCellPosition)) {\n return false;\n }\n return this.focusedCellPosition.column === cellPosition.column && this.isRowFocused(cellPosition.rowIndex, cellPosition.rowPinned);\n };\n FocusedCellController.prototype.isRowNodeFocused = function (rowNode) {\n return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);\n };\n FocusedCellController.prototype.isAnyCellFocused = function () {\n return !!this.focusedCellPosition;\n };\n FocusedCellController.prototype.isRowFocused = function (rowIndex, floating) {\n if (_.missing(this.focusedCellPosition)) {\n return false;\n }\n var floatingOrNull = _.makeNull(floating);\n return this.focusedCellPosition.rowIndex === rowIndex && this.focusedCellPosition.rowPinned === floatingOrNull;\n };\n FocusedCellController.prototype.onCellFocused = function (forceBrowserFocus) {\n var event = {\n type: Events.EVENT_CELL_FOCUSED,\n forceBrowserFocus: forceBrowserFocus,\n rowIndex: null,\n column: null,\n floating: null,\n api: this.gridApi,\n columnApi: this.columnApi,\n rowPinned: null\n };\n if (this.focusedCellPosition) {\n event.rowIndex = this.focusedCellPosition.rowIndex;\n event.column = this.focusedCellPosition.column;\n event.rowPinned = this.focusedCellPosition.rowPinned;\n }\n this.eventService.dispatchEvent(event);\n };\n __decorate([\n Autowired('eventService')\n ], FocusedCellController.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], FocusedCellController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], FocusedCellController.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('columnApi')\n ], FocusedCellController.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], FocusedCellController.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], FocusedCellController.prototype, \"init\", null);\n FocusedCellController = __decorate([\n Bean('focusedCellController')\n ], FocusedCellController);\n return FocusedCellController;\n}());\nexport { FocusedCellController };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"./context/context\";\nimport { Constants } from \"./constants\";\nimport { _ } from \"./utils\";\nvar CellNavigationService = /** @class */ (function () {\n function CellNavigationService() {\n }\n // returns null if no cell to focus on, ie at the end of the grid\n CellNavigationService.prototype.getNextCellToFocus = function (key, lastCellToFocus) {\n // starting with the provided cell, we keep moving until we find a cell we can\n // focus on.\n var pointer = lastCellToFocus;\n var finished = false;\n // finished will be true when either:\n // a) cell found that we can focus on\n // b) run out of cells (ie the method returns null)\n while (!finished) {\n switch (key) {\n case Constants.KEY_UP:\n pointer = this.getCellAbove(pointer);\n break;\n case Constants.KEY_DOWN:\n pointer = this.getCellBelow(pointer);\n break;\n case Constants.KEY_RIGHT:\n if (this.gridOptionsWrapper.isEnableRtl()) {\n pointer = this.getCellToLeft(pointer);\n }\n else {\n pointer = this.getCellToRight(pointer);\n }\n break;\n case Constants.KEY_LEFT:\n if (this.gridOptionsWrapper.isEnableRtl()) {\n pointer = this.getCellToRight(pointer);\n }\n else {\n pointer = this.getCellToLeft(pointer);\n }\n break;\n default:\n pointer = null;\n console.warn('ag-Grid: unknown key for navigation ' + key);\n break;\n }\n if (pointer) {\n finished = this.isCellGoodToFocusOn(pointer);\n }\n else {\n finished = true;\n }\n }\n return pointer;\n };\n CellNavigationService.prototype.isCellGoodToFocusOn = function (gridCell) {\n var column = gridCell.column;\n var rowNode;\n switch (gridCell.rowPinned) {\n case Constants.PINNED_TOP:\n rowNode = this.pinnedRowModel.getPinnedTopRow(gridCell.rowIndex);\n break;\n case Constants.PINNED_BOTTOM:\n rowNode = this.pinnedRowModel.getPinnedBottomRow(gridCell.rowIndex);\n break;\n default:\n rowNode = this.rowModel.getRow(gridCell.rowIndex);\n break;\n }\n var suppressNavigable = column.isSuppressNavigable(rowNode);\n return !suppressNavigable;\n };\n CellNavigationService.prototype.getCellToLeft = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToLeft = this.columnController.getDisplayedColBefore(lastCell.column);\n if (!colToLeft) {\n return null;\n }\n return {\n rowIndex: lastCell.rowIndex,\n column: colToLeft,\n rowPinned: lastCell.rowPinned\n };\n };\n CellNavigationService.prototype.getCellToRight = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToRight = this.columnController.getDisplayedColAfter(lastCell.column);\n // if already on right, do nothing\n if (!colToRight) {\n return null;\n }\n return {\n rowIndex: lastCell.rowIndex,\n column: colToRight,\n rowPinned: lastCell.rowPinned\n };\n };\n CellNavigationService.prototype.getRowBelow = function (rowPosition) {\n // if already on top row, do nothing\n var index = rowPosition.rowIndex;\n var pinned = rowPosition.rowPinned;\n if (this.isLastRowInContainer(rowPosition)) {\n switch (pinned) {\n case Constants.PINNED_BOTTOM:\n // never any rows after pinned bottom\n return null;\n case Constants.PINNED_TOP:\n // if on last row of pinned top, then next row is main body (if rows exist),\n // otherwise it's the pinned bottom\n if (this.rowModel.isRowsToRender()) {\n return { rowIndex: 0, rowPinned: null };\n }\n else if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_BOTTOM)) {\n return { rowIndex: 0, rowPinned: Constants.PINNED_BOTTOM };\n }\n return null;\n default:\n // if in the main body, then try pinned bottom, otherwise return nothing\n if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_BOTTOM)) {\n return { rowIndex: 0, rowPinned: Constants.PINNED_BOTTOM };\n }\n return null;\n }\n }\n return { rowIndex: index + 1, rowPinned: pinned };\n };\n CellNavigationService.prototype.getCellBelow = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowBelow = this.getRowBelow(lastCell);\n if (rowBelow) {\n return {\n rowIndex: rowBelow.rowIndex,\n column: lastCell.column,\n rowPinned: rowBelow.rowPinned\n };\n }\n return null;\n };\n CellNavigationService.prototype.isLastRowInContainer = function (rowPosition) {\n var pinned = rowPosition.rowPinned;\n var index = rowPosition.rowIndex;\n if (pinned === Constants.PINNED_TOP) {\n var lastTopIndex = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return lastTopIndex <= index;\n }\n else if (pinned === Constants.PINNED_BOTTOM) {\n var lastBottomIndex = this.pinnedRowModel.getPinnedBottomRowData().length - 1;\n return lastBottomIndex <= index;\n }\n var lastBodyIndex = this.rowModel.getRowCount() - 1;\n return lastBodyIndex <= index;\n };\n CellNavigationService.prototype.getRowAbove = function (rowPosition) {\n // if already on top row, do nothing\n var index = rowPosition.rowIndex;\n var pinned = rowPosition.rowPinned;\n // if already on top row, do nothing\n if (index === 0) {\n if (pinned === Constants.PINNED_TOP) {\n return null;\n }\n else if (!pinned) {\n if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_TOP)) {\n return this.getLastFloatingTopRow();\n }\n return null;\n }\n else {\n // last floating bottom\n if (this.rowModel.isRowsToRender()) {\n return this.getLastBodyCell();\n }\n else if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_TOP)) {\n return this.getLastFloatingTopRow();\n }\n return null;\n }\n }\n return { rowIndex: index - 1, rowPinned: pinned };\n };\n CellNavigationService.prototype.getCellAbove = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowAbove = this.getRowAbove({ rowIndex: lastCell.rowIndex, rowPinned: lastCell.rowPinned });\n if (rowAbove) {\n return {\n rowIndex: rowAbove.rowIndex,\n column: lastCell.column,\n rowPinned: rowAbove.rowPinned\n };\n }\n return null;\n };\n CellNavigationService.prototype.getLastBodyCell = function () {\n var lastBodyRow = this.rowModel.getRowCount() - 1;\n return { rowIndex: lastBodyRow, rowPinned: null };\n };\n CellNavigationService.prototype.getLastFloatingTopRow = function () {\n var lastFloatingRow = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return { rowIndex: lastFloatingRow, rowPinned: Constants.PINNED_TOP };\n };\n CellNavigationService.prototype.getNextTabbedCell = function (gridCell, backwards) {\n if (backwards) {\n return this.getNextTabbedCellBackwards(gridCell);\n }\n return this.getNextTabbedCellForwards(gridCell);\n };\n CellNavigationService.prototype.getNextTabbedCellForwards = function (gridCell) {\n var displayedColumns = this.columnController.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.rowPinned;\n // move along to the next cell\n var newColumn = this.columnController.getDisplayedColAfter(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = displayedColumns[0];\n var rowBelow = this.getRowBelow(gridCell);\n if (_.missing(rowBelow)) {\n return null;\n }\n newRowIndex = rowBelow ? rowBelow.rowIndex : null;\n newFloating = rowBelow ? rowBelow.rowPinned : null;\n }\n return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n };\n CellNavigationService.prototype.getNextTabbedCellBackwards = function (gridCell) {\n var displayedColumns = this.columnController.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.rowPinned;\n // move along to the next cell\n var newColumn = this.columnController.getDisplayedColBefore(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = _.last(displayedColumns);\n var rowAbove = this.getRowAbove({ rowIndex: gridCell.rowIndex, rowPinned: gridCell.rowPinned });\n if (_.missing(rowAbove)) {\n return null;\n }\n newRowIndex = rowAbove ? rowAbove.rowIndex : null;\n newFloating = rowAbove ? rowAbove.rowPinned : null;\n }\n return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n };\n __decorate([\n Autowired('columnController')\n ], CellNavigationService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('rowModel')\n ], CellNavigationService.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], CellNavigationService.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], CellNavigationService.prototype, \"gridOptionsWrapper\", void 0);\n CellNavigationService = __decorate([\n Bean('cellNavigationService')\n ], CellNavigationService);\n return CellNavigationService;\n}());\nexport { CellNavigationService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Events } from \"./events\";\nimport { Bean } from \"./context/context\";\nimport { Qualifier } from \"./context/context\";\nimport { Autowired } from \"./context/context\";\nimport { PostConstruct } from \"./context/context\";\nvar AlignedGridsService = /** @class */ (function () {\n function AlignedGridsService() {\n // flag to mark if we are consuming. to avoid cyclic events (ie other grid firing back to master\n // while processing a master event) we mark this if consuming an event, and if we are, then\n // we don't fire back any events.\n this.consuming = false;\n }\n AlignedGridsService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('AlignedGridsService');\n };\n AlignedGridsService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n AlignedGridsService.prototype.init = function () {\n this.eventService.addEventListener(Events.EVENT_COLUMN_MOVED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_VISIBLE, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_PINNED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_GROUP_OPENED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_RESIZED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(Events.EVENT_BODY_SCROLL, this.fireScrollEvent.bind(this));\n };\n // common logic across all the fire methods\n AlignedGridsService.prototype.fireEvent = function (callback) {\n // if we are already consuming, then we are acting on an event from a master,\n // so we don't cause a cyclic firing of events\n if (this.consuming) {\n return;\n }\n // iterate through the aligned grids, and pass each aligned grid service to the callback\n var otherGrids = this.gridOptionsWrapper.getAlignedGrids();\n if (otherGrids) {\n otherGrids.forEach(function (otherGridOptions) {\n if (otherGridOptions.api) {\n var alignedGridService = otherGridOptions.api.__getAlignedGridService();\n callback(alignedGridService);\n }\n });\n }\n };\n // common logic across all consume methods. very little common logic, however extracting\n // guarantees consistency across the methods.\n AlignedGridsService.prototype.onEvent = function (callback) {\n this.consuming = true;\n callback();\n this.consuming = false;\n };\n AlignedGridsService.prototype.fireColumnEvent = function (event) {\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onColumnEvent(event);\n });\n };\n AlignedGridsService.prototype.fireScrollEvent = function (event) {\n if (event.direction !== 'horizontal') {\n return;\n }\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onScrollEvent(event);\n });\n };\n AlignedGridsService.prototype.onScrollEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n _this.gridPanel.setHorizontalScrollPosition(event.left);\n });\n };\n AlignedGridsService.prototype.getMasterColumns = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column);\n });\n }\n else if (event.column) {\n result.push(event.column);\n }\n return result;\n };\n AlignedGridsService.prototype.getColumnIds = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column.getColId());\n });\n }\n else if (event.column) {\n result.push(event.column.getColId());\n }\n return result;\n };\n AlignedGridsService.prototype.onColumnEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n switch (event.type) {\n case Events.EVENT_COLUMN_MOVED:\n case Events.EVENT_COLUMN_VISIBLE:\n case Events.EVENT_COLUMN_PINNED:\n case Events.EVENT_COLUMN_RESIZED:\n var colEvent = event;\n _this.processColumnEvent(colEvent);\n break;\n case Events.EVENT_COLUMN_GROUP_OPENED:\n var groupOpenedEvent = event;\n _this.processGroupOpenedEvent(groupOpenedEvent);\n break;\n case Events.EVENT_COLUMN_PIVOT_CHANGED:\n // we cannot support pivoting with aligned grids as the columns will be out of sync as the\n // grids will have columns created based on the row data of the grid.\n console.warn('ag-Grid: pivoting is not supported with aligned grids. ' +\n 'You can only use one of these features at a time in a grid.');\n break;\n }\n });\n };\n AlignedGridsService.prototype.processGroupOpenedEvent = function (groupOpenedEvent) {\n // likewise for column group\n var masterColumnGroup = groupOpenedEvent.columnGroup;\n var otherColumnGroup;\n if (masterColumnGroup) {\n var groupId = masterColumnGroup.getGroupId();\n otherColumnGroup = this.columnController.getOriginalColumnGroup(groupId);\n }\n if (masterColumnGroup && !otherColumnGroup) {\n return;\n }\n this.logger.log('onColumnEvent-> processing ' + groupOpenedEvent + ' expanded = ' + masterColumnGroup.isExpanded());\n this.columnController.setColumnGroupOpened(otherColumnGroup, masterColumnGroup.isExpanded(), \"alignedGridChanged\");\n };\n AlignedGridsService.prototype.processColumnEvent = function (colEvent) {\n var _this = this;\n // the column in the event is from the master grid. need to\n // look up the equivalent from this (other) grid\n var masterColumn = colEvent.column;\n var otherColumn;\n if (masterColumn) {\n otherColumn = this.columnController.getPrimaryColumn(masterColumn.getColId());\n }\n // if event was with respect to a master column, that is not present in this\n // grid, then we ignore the event\n if (masterColumn && !otherColumn) {\n return;\n }\n // in time, all the methods below should use the column ids, it's a more generic way\n // of handling columns, and also allows for single or multi column events\n var columnIds = this.getColumnIds(colEvent);\n var masterColumns = this.getMasterColumns(colEvent);\n switch (colEvent.type) {\n case Events.EVENT_COLUMN_MOVED:\n var movedEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" toIndex = \" + movedEvent.toIndex);\n this.columnController.moveColumns(columnIds, movedEvent.toIndex, \"alignedGridChanged\");\n break;\n case Events.EVENT_COLUMN_VISIBLE:\n var visibleEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" visible = \" + visibleEvent.visible);\n this.columnController.setColumnsVisible(columnIds, visibleEvent.visible, \"alignedGridChanged\");\n break;\n case Events.EVENT_COLUMN_PINNED:\n var pinnedEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" pinned = \" + pinnedEvent.pinned);\n this.columnController.setColumnsPinned(columnIds, pinnedEvent.pinned, \"alignedGridChanged\");\n break;\n case Events.EVENT_COLUMN_RESIZED:\n var resizedEvent_1 = colEvent;\n masterColumns.forEach(function (column) {\n _this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" actualWidth = \" + column.getActualWidth());\n _this.columnController.setColumnWidth(column.getColId(), column.getActualWidth(), false, resizedEvent_1.finished, \"alignedGridChanged\");\n });\n break;\n }\n var isVerticalScrollShowing = this.gridPanel.isVerticalScrollShowing();\n var alignedGrids = this.gridOptionsWrapper.getAlignedGrids();\n alignedGrids.forEach(function (grid) {\n grid.api.setAlwaysShowVerticalScroll(isVerticalScrollShowing);\n });\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], AlignedGridsService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], AlignedGridsService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], AlignedGridsService.prototype, \"eventService\", void 0);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], AlignedGridsService.prototype, \"setBeans\", null);\n __decorate([\n PostConstruct\n ], AlignedGridsService.prototype, \"init\", null);\n AlignedGridsService = __decorate([\n Bean('alignedGridsService')\n ], AlignedGridsService);\n return AlignedGridsService;\n}());\nexport { AlignedGridsService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, Autowired } from './context/context';\nimport { _ } from './utils';\nvar MAT_GRID_SIZE = 8;\nvar FRESH_GRID_SIZE = 4;\nvar BALHAM_GRID_SIZE = 4;\nvar ALPINE_GRID_SIZE = 6;\nvar HARD_CODED_SIZES = {\n 'ag-theme-material': {\n headerHeight: MAT_GRID_SIZE * 7,\n virtualItemHeight: MAT_GRID_SIZE * 5,\n rowHeight: MAT_GRID_SIZE * 6,\n chartMenuPanelWidth: 220\n },\n 'ag-theme-classic': {\n headerHeight: 25,\n virtualItemHeight: FRESH_GRID_SIZE * 5,\n rowHeight: 25,\n chartMenuPanelWidth: 220\n },\n 'ag-theme-balham': {\n headerHeight: BALHAM_GRID_SIZE * 8,\n virtualItemHeight: BALHAM_GRID_SIZE * 7,\n rowHeight: BALHAM_GRID_SIZE * 7,\n chartMenuPanelWidth: 220\n },\n 'ag-theme-alpine': {\n headerHeight: ALPINE_GRID_SIZE * 8,\n virtualItemHeight: ALPINE_GRID_SIZE * 5,\n rowHeight: ALPINE_GRID_SIZE * 7,\n chartMenuPanelWidth: 240\n }\n};\n/**\n * this object contains a list of Sass variables and an array\n * of CSS styles required to get the correct value.\n * eg. $virtual-item-height requires a structure, so we can get its height.\n *
\n *
\n *
\n *
\n */\nvar SASS_PROPERTY_BUILDER = {\n headerHeight: ['ag-header-row'],\n virtualItemHeight: ['ag-virtual-list-container', 'ag-virtual-list-item'],\n rowHeight: ['ag-row'],\n chartMenuPanelWidth: ['ag-chart-docked-container']\n};\nvar CALCULATED_SIZES = {};\nvar Environment = /** @class */ (function () {\n function Environment() {\n }\n Environment.prototype.getSassVariable = function (theme, key) {\n var useTheme = 'ag-theme-' + (theme.match('material') ? 'material' : theme.match('balham') ? 'balham' : theme.match('alpine') ? 'alpine' : 'classic');\n var defaultValue = HARD_CODED_SIZES[useTheme][key];\n var calculatedValue = 0;\n if (!CALCULATED_SIZES[theme]) {\n CALCULATED_SIZES[theme] = {};\n }\n if (CALCULATED_SIZES[theme][key]) {\n return CALCULATED_SIZES[theme][key];\n }\n if (SASS_PROPERTY_BUILDER[key]) {\n var classList = SASS_PROPERTY_BUILDER[key];\n var div = document.createElement('div');\n var el = classList.reduce(function (el, currentClass, idx) {\n if (idx === 0) {\n _.addCssClass(el, theme);\n }\n var div = document.createElement('div');\n _.addCssClass(div, currentClass);\n el.appendChild(div);\n return div;\n }, div);\n if (document.body) {\n document.body.appendChild(div);\n calculatedValue = parseInt(window.getComputedStyle(el).height, 10);\n document.body.removeChild(div);\n }\n }\n CALCULATED_SIZES[theme][key] = calculatedValue || defaultValue;\n return CALCULATED_SIZES[theme][key];\n };\n Environment.prototype.isThemeDark = function () {\n var theme = this.getTheme().theme;\n return !!theme && theme.indexOf('dark') >= 0;\n };\n Environment.prototype.useNativeCheckboxes = function () {\n var theme = this.getTheme().theme;\n return !!theme && theme.indexOf('alpine') >= 0;\n };\n Environment.prototype.chartMenuPanelWidth = function () {\n return HARD_CODED_SIZES[this.getTheme().themeFamily].chartMenuPanelWidth;\n };\n Environment.prototype.getTheme = function () {\n var reg = /\\bag-(fresh|dark|blue|material|bootstrap|(?:theme-([\\w\\-]*)))\\b/;\n var el = this.eGridDiv;\n var themeMatch;\n while (el) {\n themeMatch = reg.exec(el.className);\n if (!themeMatch) {\n el = el.parentElement;\n }\n else {\n break;\n }\n }\n if (!themeMatch) {\n return {};\n }\n var theme = themeMatch[0];\n var usingOldTheme = themeMatch[2] === undefined;\n if (usingOldTheme) {\n var newTheme_1 = theme.replace('ag-', 'ag-theme-');\n _.doOnce(function () { return console.warn(\"ag-Grid: As of v19 old theme are no longer provided. Please replace \" + theme + \" with \" + newTheme_1 + \".\"); }, 'using-old-theme');\n }\n return { theme: theme, el: el, themeFamily: theme.replace(/-dark$/, '') };\n };\n __decorate([\n Autowired('eGridDiv')\n ], Environment.prototype, \"eGridDiv\", void 0);\n Environment = __decorate([\n Bean('environment')\n ], Environment);\n return Environment;\n}());\nexport { Environment };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Constants } from \"../constants\";\nimport { Autowired, Bean } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar RowPositionUtils = /** @class */ (function () {\n function RowPositionUtils() {\n }\n RowPositionUtils.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case Constants.PINNED_TOP:\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case Constants.PINNED_BOTTOM:\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n RowPositionUtils.prototype.sameRow = function (rowA, rowB) {\n // if both missing\n if (!rowA && !rowB) {\n return true;\n }\n // if only one missing\n if ((rowA && !rowB) || (!rowA && rowB)) {\n return false;\n }\n // otherwise compare (use == to compare rowPinned because it can be null or undefined)\n return rowA.rowIndex === rowB.rowIndex && rowA.rowPinned == rowB.rowPinned;\n };\n // tests if this row selection is before the other row selection\n RowPositionUtils.prototype.before = function (rowA, rowB) {\n switch (rowA.rowPinned) {\n case Constants.PINNED_TOP:\n // we we are floating top, and other isn't, then we are always before\n if (rowB.rowPinned !== Constants.PINNED_TOP) {\n return true;\n }\n break;\n case Constants.PINNED_BOTTOM:\n // if we are floating bottom, and the other isn't, then we are never before\n if (rowB.rowPinned !== Constants.PINNED_BOTTOM) {\n return false;\n }\n break;\n default:\n // if we are not floating, but the other one is floating...\n if (_.exists(rowB.rowPinned)) {\n return rowB.rowPinned !== Constants.PINNED_TOP;\n }\n break;\n }\n return rowA.rowIndex < rowB.rowIndex;\n };\n __decorate([\n Autowired('rowModel')\n ], RowPositionUtils.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], RowPositionUtils.prototype, \"pinnedRowModel\", void 0);\n RowPositionUtils = __decorate([\n Bean('rowPositionUtils')\n ], RowPositionUtils);\n return RowPositionUtils;\n}());\nexport { RowPositionUtils };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean } from \"../context/context\";\nvar CellPositionUtils = /** @class */ (function () {\n function CellPositionUtils() {\n }\n CellPositionUtils.prototype.createId = function (cellPosition) {\n var rowIndex = cellPosition.rowIndex, rowPinned = cellPosition.rowPinned, column = cellPosition.column;\n return this.createIdFromValues(rowIndex, column, rowPinned);\n };\n CellPositionUtils.prototype.createIdFromValues = function (rowIndex, column, rowPinned) {\n return rowIndex + \".\" + (rowPinned == null ? 'null' : rowPinned) + \".\" + column.getId();\n };\n CellPositionUtils.prototype.equals = function (cellA, cellB) {\n var colsMatch = cellA.column === cellB.column;\n var floatingMatch = cellA.rowPinned === cellB.rowPinned;\n var indexMatch = cellA.rowIndex === cellB.rowIndex;\n return colsMatch && floatingMatch && indexMatch;\n };\n CellPositionUtils = __decorate([\n Bean('cellPositionUtils')\n ], CellPositionUtils);\n return CellPositionUtils;\n}());\nexport { CellPositionUtils };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var DefaultColumnTypes = {\n numericColumn: {\n headerClass: \"ag-numeric-header\",\n cellClass: \"ag-numeric-cell\"\n }\n};\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { ColumnKeyCreator } from \"./columnKeyCreator\";\nimport { OriginalColumnGroup } from \"../entities/originalColumnGroup\";\nimport { Column } from \"../entities/column\";\nimport { Autowired, Bean, Qualifier } from \"../context/context\";\nimport { DefaultColumnTypes } from \"../entities/defaultColumnTypes\";\nimport { _ } from \"../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();\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 columnTree = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);\n var deptFirstCallback = function (child, parent) {\n if (child instanceof 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, columnTree, deptFirstCallback);\n return {\n columnTree: columnTree,\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(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) {\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) {\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(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; });\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) {\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(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 _.assign(colGroupDefMerged, this.gridOptionsWrapper.getDefaultColGroupDef());\n _.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(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 = _.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 return false;\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 _.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 _.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 _.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 = _.assign({}, this.gridOptionsWrapper.getColumnTypes(), DefaultColumnTypes);\n typeKeys.forEach(function (t) {\n var typeColDef = allColumnTypes[t.trim()];\n if (typeColDef) {\n _.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 Autowired('gridOptionsWrapper')\n ], ColumnFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnUtils')\n ], ColumnFactory.prototype, \"columnUtils\", void 0);\n __decorate([\n Autowired('context')\n ], ColumnFactory.prototype, \"context\", void 0);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], ColumnFactory.prototype, \"setBeans\", null);\n ColumnFactory = __decorate([\n Bean('columnFactory')\n ], ColumnFactory);\n return ColumnFactory;\n}());\nexport { ColumnFactory };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar SideBarDefParser = /** @class */ (function () {\n function SideBarDefParser() {\n }\n SideBarDefParser.parse = function (toParse) {\n if (!toParse) {\n return null;\n }\n if (toParse === true) {\n return {\n toolPanels: [\n SideBarDefParser.DEFAULT_COLUMN_COMP,\n SideBarDefParser.DEFAULT_FILTER_COMP,\n ],\n defaultToolPanel: 'columns'\n };\n }\n if (typeof toParse === 'string') {\n return SideBarDefParser.parse([toParse]);\n }\n if (Array.isArray(toParse)) {\n var comps_1 = [];\n toParse.forEach(function (key) {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[key];\n if (!lookupResult) {\n console.warn(\"ag-grid: the key \" + key + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n comps_1.push(lookupResult);\n });\n if (comps_1.length === 0) {\n return null;\n }\n return {\n toolPanels: comps_1,\n defaultToolPanel: comps_1[0].id\n };\n }\n var result = {\n toolPanels: SideBarDefParser.parseComponents(toParse.toolPanels),\n defaultToolPanel: toParse.defaultToolPanel,\n hiddenByDefault: toParse.hiddenByDefault,\n position: toParse.position\n };\n return result;\n };\n SideBarDefParser.parseComponents = function (from) {\n var result = [];\n from.forEach(function (it) {\n var toAdd = null;\n if (typeof it === 'string') {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[it];\n if (!lookupResult) {\n console.warn(\"ag-grid: the key \" + it + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n toAdd = lookupResult;\n }\n else {\n toAdd = it;\n }\n result.push(toAdd);\n });\n return result;\n };\n SideBarDefParser.DEFAULT_COLUMN_COMP = {\n id: 'columns',\n labelDefault: 'Columns',\n labelKey: 'columns',\n iconKey: 'columns',\n toolPanel: 'agColumnsToolPanel',\n };\n SideBarDefParser.DEFAULT_FILTER_COMP = {\n id: 'filters',\n labelDefault: 'Filters',\n labelKey: 'filters',\n iconKey: 'filter',\n toolPanel: 'agFiltersToolPanel',\n };\n SideBarDefParser.DEFAULT_BY_KEY = {\n columns: SideBarDefParser.DEFAULT_COLUMN_COMP,\n filters: SideBarDefParser.DEFAULT_FILTER_COMP\n };\n return SideBarDefParser;\n}());\nexport { SideBarDefParser };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/* Common logic for options, used by both filters and floating filters. */\nvar OptionsFactory = /** @class */ (function () {\n function OptionsFactory() {\n this.customFilterOptions = {};\n }\n OptionsFactory.prototype.init = function (params, defaultOptions) {\n this.filterOptions = params.filterOptions ? params.filterOptions : defaultOptions;\n this.mapCustomOptions();\n this.selectDefaultItem(params);\n };\n OptionsFactory.prototype.getFilterOptions = function () {\n return this.filterOptions;\n };\n OptionsFactory.prototype.mapCustomOptions = function () {\n var _this = this;\n if (!this.filterOptions) {\n return;\n }\n this.filterOptions.forEach(function (filterOption) {\n if (typeof filterOption === 'string') {\n return;\n }\n if (!filterOption.displayKey) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'displayKey'\");\n return;\n }\n if (!filterOption.displayName) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'displayName'\");\n return;\n }\n if (!filterOption.test) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'test'\");\n return;\n }\n _this.customFilterOptions[filterOption.displayKey] = filterOption;\n });\n };\n OptionsFactory.prototype.selectDefaultItem = function (params) {\n if (params.defaultOption) {\n this.defaultOption = params.defaultOption;\n }\n else if (this.filterOptions.length >= 1) {\n var firstFilterOption = this.filterOptions[0];\n if (typeof firstFilterOption === 'string') {\n this.defaultOption = firstFilterOption;\n }\n else if (firstFilterOption.displayKey) {\n this.defaultOption = firstFilterOption.displayKey;\n }\n else {\n console.warn(\"ag-Grid: invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'\");\n }\n }\n else {\n console.warn('ag-Grid: no filter options for filter');\n }\n };\n OptionsFactory.prototype.getDefaultOption = function () {\n return this.defaultOption;\n };\n OptionsFactory.prototype.getCustomOption = function (name) {\n return this.customFilterOptions[name];\n };\n return OptionsFactory;\n}());\nexport { OptionsFactory };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { Grid } from \"../grid\";\nexport function 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}\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(eGridDiv, gridOptions, gridParams);\n $scope.$on(\"$destroy\", function () {\n grid.destroy();\n grid = null;\n });\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { ComponentUtil } from \"./componentUtil\";\nimport { Grid } from \"../grid\";\nvar registered = false;\nexport function 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.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.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.copyAttributesToGridOptions(options, this);\n var gridParams = {\n globalEventListener: globalEventListener\n };\n this._agGrid = new 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.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}\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/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar 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}());\nexport { BaseComponentWrapper };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"../context/context\";\nimport { Column } from \"../entities/column\";\nimport { Constants } from \"../constants\";\nimport { _ } from \"../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.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 _.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 = _.missing(defaultAutoColDef.field) && _.missing(defaultAutoColDef.valueGetter) && _.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(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 _.assign(defaultAutoColDef, {\n // cellRendererParams.groupKey: colDefToCopy.field;\n headerName: this.columnController.getDisplayNameForColumn(rowGroupCol, 'header'),\n headerValueGetter: rowGroupColDef.headerValueGetter\n });\n if (rowGroupColDef.cellRenderer) {\n _.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.GROUP_AUTO_COLUMN_ID;\n __decorate([\n Autowired('gridOptionsWrapper')\n ], AutoGroupColService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('context')\n ], AutoGroupColService.prototype, \"context\", void 0);\n __decorate([\n Autowired('columnController')\n ], AutoGroupColService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('columnFactory')\n ], AutoGroupColService.prototype, \"columnFactory\", void 0);\n AutoGroupColService = AutoGroupColService_1 = __decorate([\n Bean('autoGroupColService')\n ], AutoGroupColService);\n return AutoGroupColService;\n}());\nexport { AutoGroupColService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"../../context/context\";\nimport { _ } from \"../../utils\";\nvar 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 _.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 Autowired(\"componentMetadataProvider\")\n ], AgComponentUtils.prototype, \"componentMetadataProvider\", void 0);\n AgComponentUtils = __decorate([\n Bean(\"agComponentUtils\")\n ], AgComponentUtils);\n return AgComponentUtils;\n}());\nexport { AgComponentUtils };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct } from \"../../context/context\";\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 Autowired(\"agComponentUtils\")\n ], ComponentMetadataProvider.prototype, \"agComponentUtils\", void 0);\n __decorate([\n PostConstruct\n ], ComponentMetadataProvider.prototype, \"postConstruct\", null);\n ComponentMetadataProvider = __decorate([\n Bean(\"componentMetadataProvider\")\n ], ComponentMetadataProvider);\n return ComponentMetadataProvider;\n}());\nexport { ComponentMetadataProvider };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { _ } from \"../utils\";\nvar Context = /** @class */ (function () {\n function Context(params, logger) {\n this.beanWrappers = {};\n this.componentsMappedByName = {};\n this.destroyed = false;\n if (!params || !params.beanClasses) {\n return;\n }\n this.contextParams = params;\n this.logger = logger;\n this.logger.log(\">> creating ag-Application Context\");\n this.setupComponents();\n this.createBeans();\n var beanInstances = this.getBeanInstances();\n this.wireBeans(beanInstances);\n this.logger.log(\">> ag-Application Context ready - component is alive\");\n }\n Context.prototype.getBeanInstances = function () {\n return _.values(this.beanWrappers).map(function (beanEntry) { return beanEntry.beanInstance; });\n };\n Context.prototype.setupComponents = function () {\n var _this = this;\n if (this.contextParams.components) {\n this.contextParams.components.forEach(function (componentMeta) { return _this.addComponent(componentMeta); });\n }\n };\n Context.prototype.addComponent = function (componentMeta) {\n // get name of the class as a string\n // let className = _.getNameOfClass(ComponentClass);\n // insert a dash after every capital letter\n // let classEscaped = className.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n var classEscaped = componentMeta.componentName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n // put all to upper case\n var classUpperCase = classEscaped.toUpperCase();\n // finally store\n this.componentsMappedByName[classUpperCase] = componentMeta.componentClass;\n };\n Context.prototype.createComponentFromElement = function (element, afterPreCreateCallback) {\n var key = element.nodeName;\n return this.createComponent(key, afterPreCreateCallback);\n };\n Context.prototype.createComponent = function (key, afterPreCreateCallback) {\n if (this.componentsMappedByName && this.componentsMappedByName[key]) {\n var newComponent = new this.componentsMappedByName[key]();\n this.wireBean(newComponent, afterPreCreateCallback);\n return newComponent;\n }\n return null;\n };\n Context.prototype.wireBean = function (bean, afterPreCreateCallback) {\n if (!bean) {\n throw Error(\"Can't wire to bean since it is null\");\n }\n this.wireBeans([bean], afterPreCreateCallback);\n };\n Context.prototype.wireBeans = function (beanInstances, afterPreCreateCallback) {\n this.autoWireBeans(beanInstances);\n this.methodWireBeans(beanInstances);\n this.callLifeCycleMethods(beanInstances, 'preConstructMethods');\n // the callback sets the attributes, so the component has access to attributes\n // before postConstruct methods in the component are executed\n if (_.exists(afterPreCreateCallback)) {\n beanInstances.forEach(afterPreCreateCallback);\n }\n this.callLifeCycleMethods(beanInstances, 'postConstructMethods');\n };\n Context.prototype.createBeans = function () {\n var _this = this;\n // register all normal beans\n this.contextParams.beanClasses.forEach(this.createBeanWrapper.bind(this));\n // register override beans, these will overwrite beans above of same name\n // instantiate all beans - overridden beans will be left out\n _.iterateObject(this.beanWrappers, function (key, beanEntry) {\n var constructorParamsMeta;\n if (beanEntry.bean.__agBeanMetaData && beanEntry.bean.__agBeanMetaData.autowireMethods && beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor) {\n constructorParamsMeta = beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor;\n }\n var constructorParams = _this.getBeansForParameters(constructorParamsMeta, beanEntry.bean.name);\n var newInstance = applyToConstructor(beanEntry.bean, constructorParams);\n beanEntry.beanInstance = newInstance;\n });\n var createdBeanNames = Object.keys(this.beanWrappers).join(', ');\n this.logger.log(\"created beans: \" + createdBeanNames);\n };\n // tslint:disable-next-line\n Context.prototype.createBeanWrapper = function (Bean) {\n var metaData = Bean.__agBeanMetaData;\n if (!metaData) {\n var beanName = void 0;\n if (Bean.prototype.constructor) {\n beanName = Bean.prototype.constructor.name;\n }\n else {\n beanName = \"\" + Bean;\n }\n console.error(\"context item \" + beanName + \" is not a bean\");\n return;\n }\n var beanEntry = {\n bean: Bean,\n beanInstance: null,\n beanName: metaData.beanName\n };\n this.beanWrappers[metaData.beanName] = beanEntry;\n };\n Context.prototype.autoWireBeans = function (beanInstances) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {\n var attributes = metaData.agClassAttributes;\n if (!attributes) {\n return;\n }\n attributes.forEach(function (attribute) {\n var otherBean = _this.lookupBeanInstance(beanName, attribute.beanName, attribute.optional);\n beanInstance[attribute.attributeName] = otherBean;\n });\n });\n });\n };\n Context.prototype.methodWireBeans = function (beanInstances) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {\n _.iterateObject(metaData.autowireMethods, function (methodName, wireParams) {\n // skip constructor, as this is dealt with elsewhere\n if (methodName === \"agConstructor\") {\n return;\n }\n var initParams = _this.getBeansForParameters(wireParams, beanName);\n beanInstance[methodName].apply(beanInstance, initParams);\n });\n });\n });\n };\n Context.prototype.forEachMetaDataInHierarchy = function (beanInstance, callback) {\n var prototype = Object.getPrototypeOf(beanInstance);\n while (prototype != null) {\n var constructor = prototype.constructor;\n if (constructor.hasOwnProperty('__agBeanMetaData')) {\n var metaData = constructor.__agBeanMetaData;\n var beanName = this.getBeanName(constructor);\n callback(metaData, beanName);\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n };\n Context.prototype.getBeanName = function (constructor) {\n if (constructor.__agBeanMetaData && constructor.__agBeanMetaData.beanName) {\n return constructor.__agBeanMetaData.beanName;\n }\n var constructorString = constructor.toString();\n var beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n return beanName;\n };\n Context.prototype.getBeansForParameters = function (parameters, beanName) {\n var _this = this;\n var beansList = [];\n if (parameters) {\n _.iterateObject(parameters, function (paramIndex, otherBeanName) {\n var otherBean = _this.lookupBeanInstance(beanName, otherBeanName);\n beansList[Number(paramIndex)] = otherBean;\n });\n }\n return beansList;\n };\n Context.prototype.lookupBeanInstance = function (wiringBean, beanName, optional) {\n if (optional === void 0) { optional = false; }\n if (beanName === \"context\") {\n return this;\n }\n else if (this.contextParams.providedBeanInstances && this.contextParams.providedBeanInstances.hasOwnProperty(beanName)) {\n return this.contextParams.providedBeanInstances[beanName];\n }\n else {\n var beanEntry = this.beanWrappers[beanName];\n if (beanEntry) {\n return beanEntry.beanInstance;\n }\n if (!optional) {\n console.error(\"ag-Grid: unable to find bean reference \" + beanName + \" while initialising \" + wiringBean);\n }\n return null;\n }\n };\n Context.prototype.callLifeCycleMethods = function (beanInstances, lifeCycleMethod) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData) {\n var methods = metaData[lifeCycleMethod];\n if (!methods) {\n return;\n }\n methods.forEach(function (methodName) { return beanInstance[methodName](); });\n });\n });\n };\n Context.prototype.getBean = function (name) {\n return this.lookupBeanInstance(\"getBean\", name, true);\n };\n Context.prototype.destroy = function () {\n // should only be able to destroy once\n if (this.destroyed) {\n return;\n }\n this.logger.log(\">> Shutting down ag-Application Context\");\n var beanInstances = this.getBeanInstances();\n this.callLifeCycleMethods(beanInstances, 'preDestroyMethods');\n this.contextParams.providedBeanInstances = null;\n this.destroyed = true;\n this.logger.log(\">> ag-Application Context shut down - component is dead\");\n };\n return Context;\n}());\nexport { Context };\n// taken from: http://stackoverflow.com/questions/3362471/how-can-i-call-a-javascript-constructor-using-call-or-apply\n// allows calling 'apply' on a constructor\nfunction applyToConstructor(constructor, argArray) {\n var args = [null].concat(argArray);\n var factoryFunction = constructor.bind.apply(constructor, args);\n return new factoryFunction();\n}\nexport function PreConstruct(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.postConstructMethods) {\n props.preConstructMethods = [];\n }\n props.preConstructMethods.push(methodName);\n}\nexport function PostConstruct(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.postConstructMethods) {\n props.postConstructMethods = [];\n }\n props.postConstructMethods.push(methodName);\n}\nexport function PreDestroy(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.preDestroyMethods) {\n props.preDestroyMethods = [];\n }\n props.preDestroyMethods.push(methodName);\n}\nexport function Bean(beanName) {\n return function (classConstructor) {\n var props = getOrCreateProps(classConstructor);\n props.beanName = beanName;\n };\n}\nexport function Autowired(name) {\n return function (target, propertyKey, descriptor) {\n autowiredFunc(target, name, false, target, propertyKey, null);\n };\n}\nexport function Optional(name) {\n return function (target, propertyKey, descriptor) {\n autowiredFunc(target, name, true, target, propertyKey, null);\n };\n}\nfunction autowiredFunc(target, name, optional, classPrototype, methodOrAttributeName, index) {\n if (name === null) {\n console.error(\"ag-Grid: Autowired name should not be null\");\n return;\n }\n if (typeof index === \"number\") {\n console.error(\"ag-Grid: Autowired should be on an attribute\");\n return;\n }\n // it's an attribute on the class\n var props = getOrCreateProps(target.constructor);\n if (!props.agClassAttributes) {\n props.agClassAttributes = [];\n }\n props.agClassAttributes.push({\n attributeName: methodOrAttributeName,\n beanName: name,\n optional: optional\n });\n}\nexport function Qualifier(name) {\n return function (classPrototype, methodOrAttributeName, index) {\n var constructor = typeof classPrototype == \"function\" ? classPrototype : classPrototype.constructor;\n var props;\n if (typeof index === \"number\") {\n // it's a parameter on a method\n var methodName = void 0;\n if (methodOrAttributeName) {\n props = getOrCreateProps(constructor);\n methodName = methodOrAttributeName;\n }\n else {\n props = getOrCreateProps(constructor);\n methodName = \"agConstructor\";\n }\n if (!props.autowireMethods) {\n props.autowireMethods = {};\n }\n if (!props.autowireMethods[methodName]) {\n props.autowireMethods[methodName] = {};\n }\n props.autowireMethods[methodName][index] = name;\n }\n };\n}\nfunction getOrCreateProps(target) {\n if (!target.hasOwnProperty(\"__agBeanMetaData\")) {\n target.__agBeanMetaData = {};\n }\n return target.__agBeanMetaData;\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../../../widgets/component\";\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\n// optional floating filter for user provided filters - instead of providing a floating filter,\n// they can provide a getModelAsString() method on the filter instead. this class just displays\n// the string returned from getModelAsString()\nvar ReadOnlyFloatingFilter = /** @class */ (function (_super) {\n __extends(ReadOnlyFloatingFilter, _super);\n function ReadOnlyFloatingFilter() {\n return _super.call(this, \"
\") || this;\n }\n ReadOnlyFloatingFilter.prototype.init = function (params) {\n this.params = params;\n this.eFloatingFilterText.disabled = true;\n };\n ReadOnlyFloatingFilter.prototype.onParentModelChanged = function (parentModel) {\n var _this = this;\n if (!parentModel) {\n this.eFloatingFilterText.value = '';\n return;\n }\n this.params.parentFilterInstance(function (filterInstance) {\n // getModelAsString should be present, as we check this\n // in floatingFilterWrapper\n if (filterInstance.getModelAsString) {\n var modelAsString = filterInstance.getModelAsString(parentModel);\n _this.eFloatingFilterText.value = modelAsString;\n }\n });\n };\n __decorate([\n RefSelector('eFloatingFilterText')\n ], ReadOnlyFloatingFilter.prototype, \"eFloatingFilterText\", void 0);\n return ReadOnlyFloatingFilter;\n}(Component));\nexport { ReadOnlyFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { Column } from \"../../entities/column\";\nimport { SetLeftFeature } from \"../../rendering/features/setLeftFeature\";\nimport { Component } from \"../../widgets/component\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { HoverFeature } from \"../../headerRendering/hoverFeature\";\nimport { Events } from \"../../events\";\nimport { _, Promise } from \"../../utils\";\nimport { ReadOnlyFloatingFilter } from \"./provided/readOnlyFloatingFilter\";\nimport { ModuleNames } from \"../../modules/moduleNames\";\nimport { ModuleRegistry } from \"../../modules/moduleRegistry\";\nvar FloatingFilterWrapper = /** @class */ (function (_super) {\n __extends(FloatingFilterWrapper, _super);\n function FloatingFilterWrapper(column) {\n var _this = _super.call(this, FloatingFilterWrapper.TEMPLATE) || this;\n _this.column = column;\n return _this;\n }\n FloatingFilterWrapper.prototype.postConstruct = function () {\n this.setupFloatingFilter();\n this.setupWidth();\n this.setupLeftPositioning();\n this.setupColumnHover();\n this.addFeature(new HoverFeature([this.column], this.getGui()));\n this.addDestroyableEventListener(this.eButtonShowMainFilter, 'click', this.showParentFilter.bind(this));\n };\n FloatingFilterWrapper.prototype.setupFloatingFilter = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n if (colDef.filter) {\n this.floatingFilterCompPromise = this.getFloatingFilterInstance();\n if (this.floatingFilterCompPromise) {\n this.floatingFilterCompPromise.then(function (compInstance) {\n if (compInstance) {\n _this.setupWithFloatingFilter(compInstance);\n _this.setupSyncWithFilter();\n }\n else {\n _this.setupEmpty();\n }\n });\n }\n else {\n this.setupEmpty();\n }\n }\n else {\n this.setupEmpty();\n }\n };\n FloatingFilterWrapper.prototype.setupLeftPositioning = function () {\n var setLeftFeature = new SetLeftFeature(this.column, this.getGui(), this.beans);\n setLeftFeature.init();\n this.addDestroyFunc(setLeftFeature.destroy.bind(setLeftFeature));\n };\n FloatingFilterWrapper.prototype.setupSyncWithFilter = function () {\n var _this = this;\n var syncWithFilter = function (filterChangedEvent) {\n var filterComponentPromise = _this.filterManager.getFilterComponent(_this.column, 'NO_UI');\n var parentModel = filterComponentPromise.resolveNow(null, function (filter) { return filter.getModel(); });\n _this.onParentModelChanged(parentModel, filterChangedEvent);\n };\n this.addDestroyableEventListener(this.column, Column.EVENT_FILTER_CHANGED, syncWithFilter);\n if (this.filterManager.isFilterActive(this.column)) {\n syncWithFilter(null);\n }\n };\n // linked to event listener in template\n FloatingFilterWrapper.prototype.showParentFilter = function () {\n this.menuFactory.showMenuAfterButtonClick(this.column, this.eButtonShowMainFilter, 'filterMenuTab', ['filterMenuTab']);\n };\n FloatingFilterWrapper.prototype.setupColumnHover = function () {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, this.onColumnHover.bind(this));\n this.onColumnHover();\n };\n FloatingFilterWrapper.prototype.onColumnHover = function () {\n var isHovered = this.columnHoverService.isHovered(this.column);\n _.addOrRemoveCssClass(this.getGui(), 'ag-column-hover', isHovered);\n };\n FloatingFilterWrapper.prototype.setupWidth = function () {\n this.addDestroyableEventListener(this.column, Column.EVENT_WIDTH_CHANGED, this.onColumnWidthChanged.bind(this));\n this.onColumnWidthChanged();\n };\n FloatingFilterWrapper.prototype.onColumnWidthChanged = function () {\n this.getGui().style.width = this.column.getActualWidth() + 'px';\n };\n FloatingFilterWrapper.prototype.setupWithFloatingFilter = function (floatingFilterComp) {\n var disposeFunc = function () {\n if (floatingFilterComp.destroy) {\n floatingFilterComp.destroy();\n }\n };\n if (!this.isAlive()) {\n disposeFunc();\n return;\n }\n this.addDestroyFunc(disposeFunc);\n var floatingFilterCompUi = floatingFilterComp.getGui();\n _.addOrRemoveCssClass(this.eFloatingFilterBody, 'ag-floating-filter-body', !this.suppressFilterButton);\n _.addOrRemoveCssClass(this.eFloatingFilterBody, 'ag-floating-filter-full-body', this.suppressFilterButton);\n _.setDisplayed(this.eButtonWrapper, !this.suppressFilterButton);\n var eIcon = _.createIconNoSpan('filter', this.gridOptionsWrapper, this.column);\n this.eButtonShowMainFilter.appendChild(eIcon);\n this.eFloatingFilterBody.appendChild(floatingFilterCompUi);\n if (floatingFilterComp.afterGuiAttached) {\n floatingFilterComp.afterGuiAttached();\n }\n };\n FloatingFilterWrapper.prototype.parentFilterInstance = function (callback) {\n var promise = this.filterManager.getFilterComponent(this.column, 'NO_UI');\n promise.then(callback);\n };\n FloatingFilterWrapper.prototype.getFloatingFilterInstance = function () {\n var colDef = this.column.getColDef();\n var defaultFloatingFilterType;\n if (typeof colDef.filter === 'string') {\n // will be undefined if not in the map\n defaultFloatingFilterType = FloatingFilterWrapper.filterToFloatingFilterNames[colDef.filter];\n }\n else if (colDef.filter === true) {\n var setFilterModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.SetFilterModule);\n defaultFloatingFilterType = setFilterModuleLoaded ? 'agSetColumnFloatingFilter' : 'agTextColumnFloatingFilter';\n }\n var filterParams = this.filterManager.createFilterParams(this.column, this.column.getColDef());\n var finalFilterParams = this.userComponentFactory.createFinalParams(colDef, 'filter', filterParams);\n var params = {\n api: this.gridApi,\n column: this.column,\n filterParams: finalFilterParams,\n currentParentModel: this.currentParentModel.bind(this),\n parentFilterInstance: this.parentFilterInstance.bind(this),\n onFloatingFilterChanged: this.onFloatingFilterChanged.bind(this),\n suppressFilterButton: false // This one might be overridden from the colDef\n };\n // this is unusual - we need a params value OUTSIDE the component the params are for.\n // the params are for the floating filter component, but this property is actually for the wrapper.\n this.suppressFilterButton = colDef.floatingFilterComponentParams ? !!colDef.floatingFilterComponentParams.suppressFilterButton : false;\n var promise = this.userComponentFactory.newFloatingFilterComponent(colDef, params, defaultFloatingFilterType);\n if (!promise) {\n var filterComponent = this.getFilterComponentPrototype(colDef);\n var getModelAsStringExists = filterComponent && filterComponent.prototype && filterComponent.prototype.getModelAsString;\n if (getModelAsStringExists) {\n var compInstance = this.userComponentFactory.createUserComponentFromConcreteClass(ReadOnlyFloatingFilter, params);\n promise = Promise.resolve(compInstance);\n }\n }\n return promise;\n };\n FloatingFilterWrapper.prototype.createDynamicParams = function () {\n return {\n column: this.column,\n colDef: this.column.getColDef(),\n api: this.gridApi,\n columnApi: this.columnApi\n };\n };\n FloatingFilterWrapper.prototype.getFilterComponentPrototype = function (colDef) {\n var resolvedComponent = this.userComponentFactory.lookupComponentClassDef(colDef, \"filter\", this.createDynamicParams());\n return resolvedComponent ? resolvedComponent.component : null;\n };\n FloatingFilterWrapper.prototype.setupEmpty = function () {\n _.setDisplayed(this.eButtonWrapper, false);\n };\n FloatingFilterWrapper.prototype.currentParentModel = function () {\n var filterPromise = this.filterManager.getFilterComponent(this.column, 'NO_UI');\n return filterPromise.resolveNow(null, function (filter) { return filter.getModel(); });\n };\n FloatingFilterWrapper.prototype.onParentModelChanged = function (model, filterChangedEvent) {\n if (!this.floatingFilterCompPromise) {\n return;\n }\n this.floatingFilterCompPromise.then(function (floatingFilterComp) {\n floatingFilterComp.onParentModelChanged(model, filterChangedEvent);\n });\n };\n FloatingFilterWrapper.prototype.onFloatingFilterChanged = function () {\n console.warn('ag-Grid: since version 21.x, how floating filters are implemented has changed. ' +\n 'Instead of calling params.onFloatingFilterChanged(), get a reference to the main filter via ' +\n 'params.parentFilterInstance() and then set a value on the parent filter directly.');\n };\n FloatingFilterWrapper.filterToFloatingFilterNames = {\n set: 'agSetColumnFloatingFilter',\n agSetColumnFilter: 'agSetColumnFloatingFilter',\n number: 'agNumberColumnFloatingFilter',\n agNumberColumnFilter: 'agNumberColumnFloatingFilter',\n date: 'agDateColumnFloatingFilter',\n agDateColumnFilter: 'agDateColumnFloatingFilter',\n text: 'agTextColumnFloatingFilter',\n agTextColumnFilter: 'agTextColumnFloatingFilter'\n };\n FloatingFilterWrapper.TEMPLATE = \"
\\n
\\n
\\n \\n
\\n
\";\n __decorate([\n Autowired('columnHoverService')\n ], FloatingFilterWrapper.prototype, \"columnHoverService\", void 0);\n __decorate([\n Autowired('eventService')\n ], FloatingFilterWrapper.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('beans')\n ], FloatingFilterWrapper.prototype, \"beans\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], FloatingFilterWrapper.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired(\"userComponentFactory\")\n ], FloatingFilterWrapper.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired(\"gridApi\")\n ], FloatingFilterWrapper.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired(\"columnApi\")\n ], FloatingFilterWrapper.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired(\"filterManager\")\n ], FloatingFilterWrapper.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('menuFactory')\n ], FloatingFilterWrapper.prototype, \"menuFactory\", void 0);\n __decorate([\n RefSelector('eFloatingFilterBody')\n ], FloatingFilterWrapper.prototype, \"eFloatingFilterBody\", void 0);\n __decorate([\n RefSelector('eButtonWrapper')\n ], FloatingFilterWrapper.prototype, \"eButtonWrapper\", void 0);\n __decorate([\n RefSelector('eButtonShowMainFilter')\n ], FloatingFilterWrapper.prototype, \"eButtonShowMainFilter\", void 0);\n __decorate([\n PostConstruct\n ], FloatingFilterWrapper.prototype, \"postConstruct\", null);\n return FloatingFilterWrapper;\n}(Component));\nexport { FloatingFilterWrapper };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar 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_Z = 90;\n Constants.KEY_Y = 89;\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 Constants.SOURCE_PASTE = 'paste';\n Constants.PINNED_RIGHT = 'right';\n Constants.PINNED_LEFT = 'left';\n Constants.SORT_ASC = 'asc';\n Constants.SORT_DESC = 'desc';\n return Constants;\n}());\nexport { Constants };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport { Events } from './eventKeys';\n"],"sourceRoot":""}