{"version":3,"sources":["webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerContainer.js","webpack:///./node_modules/ag-grid-community/dist/lib/interfaces/iChartOptions.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerGroup/headerGroupComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/horizontalResizeService.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/cssClassApplier.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerRowComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/bodyDropTarget.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerGroup/headerGroupWrapperComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/standardMenu.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/header/headerWrapperComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/interfaces/iRangeController.js","webpack:///./node_modules/ag-grid-community/dist/lib/layout/verticalStack.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/moveColumnController.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/bodyDropPivotTarget.js","webpack:///./node_modules/ag-grid-community/dist/lib/layout/tabbedLayout.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/header/headerComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/header/selectAllFeature.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/headerRootComp.js","webpack:///./node_modules/ag-grid-community/dist/lib/headerRendering/hoverFeature.js"],"names":["__decorate","this","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__metadata","k","v","metadata","exports","value","gridOptionsWrapper_1","context_1","dragAndDropService_1","columnController_1","eventService_1","events_1","headerRowComp_1","bodyDropTarget_1","column_1","scrollVisibleService_1","utils_1","HeaderContainer","eContainer","eViewport","pinned","headerRowComps","prototype","registerGridComp","gridPanel","setupDragAndDrop","forEachHeaderElement","callback","forEach","headerRowComp","init","scrollWidth","gridOptionsWrapper","getScrollbarWidth","eventService","addEventListener","Events","EVENT_COLUMN_VALUE_CHANGED","onColumnValueChanged","bind","EVENT_COLUMN_ROW_GROUP_CHANGED","onColumnRowGroupChanged","EVENT_GRID_COLUMNS_CHANGED","onGridColumnsChanged","EVENT_SCROLL_VISIBILITY_CHANGED","onScrollVisibilityChanged","EVENT_COLUMN_RESIZED","onColumnResized","EVENT_DISPLAYED_COLUMNS_CHANGED","onDisplayedColumnsChanged","setWidthOfPinnedContainer","pinningLeft","Column","PINNED_LEFT","pinningRight","PINNED_RIGHT","controller","columnController","isRtl","isEnableRtl","width","addPaddingForScrollbar","scrollVisibleService","isVerticalScrollShowing","_","setFixedWidth","destroy","removeHeaderRowComps","getRowComps","removeAndCreateAllRowComps","createHeaderRowComps","refresh","gridComp","dropContainer","bodyDropTarget","BodyDropTarget","context","wireBean","clearElement","rowCount","getHeaderRowCount","dept","groupRow","type","HeaderRowType","COLUMN_GROUP","COLUMN","HeaderRowComp","dropTarget","push","getGui","setAttribute","toString","appendChild","includeFloatingFilterRow","isFloatingFilter","isPivotMode","FLOATING_FILTER","Autowired","GridOptionsWrapper","Context","DragAndDropService","ColumnController","EventService","ScrollVisibleService","PostConstruct","Function","ChartType","__extends","extendStatics","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","create","component_1","touchListener_1","componentAnnotations_1","originalColumnGroup_1","HeaderGroupComp","_super","call","TEMPLATE","params","setupLabel","addGroupExpandIcon","setupExpandIcons","_this","addInIcon","expandAction","event","isStopPropagationForAgGrid","newExpandedValue","columnGroup","isExpanded","setColumnGroupOpened","getOriginalColumnGroup","addTouchAndClickListeners","eCloseIcon","eOpenIcon","stopPropagationAction","stopPropagationForAgGrid","addDestroyableEventListener","updateIconVisibility","originalColumnGroup","OriginalColumnGroup","EVENT_EXPANDED_CHANGED","EVENT_EXPANDABLE_CHANGED","eElement","action","touchListener","TouchListener","EVENT_TAP","addDestroyFunc","isExpandable","expanded","setDisplayed","iconName","refName","eIcon","createIconNoSpan","getRefElement","displayName","eInnerText","innerHTML","RefSelector","HTMLElement","Component","dragService_1","HorizontalResizeService","addResizeBar","dragSource","dragStartPixels","eResizeBar","onDragStart","onDragStop","onDragging","dragService","addDragSource","finishedWithResizeFunc","removeDragSource","mouseEvent","draggingStarted","dragStartX","clientX","setResizeIcons","shiftKey","MouseEvent","onResizeStart","oldBodyCursor","eGridDiv","style","cursor","oldMsUserSelect","msUserSelect","oldWebkitUserSelect","webkitUserSelect","onResizeEnd","resizeAmount","resetIcons","onResizing","DragService","Bean","CssClassApplier","addHeaderClassesFromColDef","abstractColDef","eHeaderCell","column","missing","addColumnClassesFromCollDef","headerClass","addToolPanelClassesFromColDef","toolPanelClass","classesOrFunc","classToUse","colDef","getContext","api","getApi","headerClassFunc","addCssClass","isArray","cssClassItem","headerWrapperComp_1","headerGroupWrapperComp_1","filterManager_1","gridApi_1","constants_1","floatingFilterWrapper_1","headerComps","keys","idsOfAllChildren","removeAndDestroyChildComponents","idsToDestroy","id","childHeaderComp","removeChild","onRowHeightChanged","groupHeight","headerHeight","headerRowCount","sizes","numberOfFloating","getPivotGroupHeaderHeight","getPivotHeaderHeight","getGroupHeaderHeight","getHeaderHeight","numberOfNonGroups","numberOfGroups","getFloatingFiltersHeight","rowHeight","top","height","onVirtualColumnsChanged","setWidth","PROP_HEADER_HEIGHT","PROP_PIVOT_HEADER_HEIGHT","PROP_GROUP_HEADER_HEIGHT","PROP_PIVOT_GROUP_HEADER_HEIGHT","PROP_FLOATING_FILTERS_HEIGHT","EVENT_VIRTUAL_COLUMNS_CHANGED","getWidthForRow","printLayout","getDomLayout","Constants","DOM_LAYOUT_PRINT","centerRow","getContainerWidth","removeAndDestroyAllChildComponents","getItemsAtDept","centerContainer","result_1","items","getVirtualHeaderGroupRow","concat","eBefore","currentChildIds","itemsAtDepth","ensureDomOrder","isEnsureDomOrder","child","isEmptyGroup","headerComp","eHeaderCompGui","idOfChild","getUniqueId","eParentContainer","colAlreadyInDom","indexOf","removeFromArray","createHeaderComp","insertWithDomOrder","columnGroupChild","result","HeaderWrapperComp","HeaderGroupWrapperComp","FloatingFilterWrapper","GridApi","FilterManager","DropType","moveColumnController_1","bodyDropPivotTarget_1","dropListeners","moveColumnController","eSecondaryContainers","getDropTargetLeftContainers","getDropTargetRightContainers","getDropTargetBodyContainers","isInterestedIn","DragSourceType","HeaderCell","ToolPanel","getSecondaryContainers","getContainer","MoveColumnController","bodyDropPivotTarget","BodyDropPivotTarget","ColumnMove","Pivot","dragAndDropService","addDropTarget","getIconName","currentDropListener","getDropType","draggingEvent","onDragEnter","dropType","onDragLeave","columnGroup_1","columnApi_1","horizontalResizeService_1","cssClassApplier_1","setLeftFeature_1","userComponentFactory_1","beans_1","hoverFeature_1","dragSourceDropTarget","childColumnsDestroyFuncs","postConstruct","getComponentHolder","getDisplayNameForColumnGroup","appendHeaderGroupComp","setupResize","addClasses","setupWidth","addAttributes","setupMovingCss","setupTooltip","addFeature","HoverFeature","getLeafColumns","setLeftFeature","SetLeftFeature","beans","leafColumns","col","EVENT_MOVING_CHANGED","onColumnMovingChanged","getColumn","getColGroupDef","getTooltipText","colGroupDef","headerTooltip","tooltipText","isEnableBrowserTooltips","tooltipManager","registerTooltip","addOrRemoveCssClass","isMoving","setExpanded","gridApi","columnApi","leafCols","getParent","headerName","getDisplayNameForColumn","afterHeaderCompCreated","userComponentFactory","newHeaderGroupComponent","then","headerGroupComp","setupMove","isPadding","eHeaderGroup","isSuppressMoving","allLeafColumns","dragSource_1","dragItemName","dragItemCallback","getDragItemForGroup","dragStarted","setMoving","dragStopped","allColumnsOriginalOrder","visibleState","getId","isVisible","allColumnsCurrentOrder","getAllDisplayedColumns","columns","childSuppressesMoving","getColDef","suppressMovable","lockPosition","isSuppressMovableColumns","addListenersToChildrenColumns","ColumnGroup","EVENT_DISPLAYED_CHILDREN_CHANGED","onDisplayedChildrenChanged","onWidthChanged","destroyListenersOnChildrenColumns","widthChangedListener","EVENT_WIDTH_CHANGED","EVENT_VISIBLE_CHANGED","removeEventListener","func","getActualWidth","eHeaderCellResize","isResizable","horizontalResizeService","isSuppressAutoSize","getDisplayedLeafColumns","suppressAutoSize","getColId","autoSizeColumns","removeFromParent","resizeCols","filter","resizeStartWidth","resizeRatios","takeFromGroup","getDisplayedGroupAfter","takeFromLeafCols","resizeTakeFromCols","resizeTakeFromStartWidth","resizeTakeFromRatios","finished","resizeSets","resizeAmountNormalised","normaliseDragChange","ratios","resizeColumnSets","removeCssClass","dragChange","UserComponentFactory","ColumnApi","Beans","popupService_1","StandardMenuFactory","hideActiveMenu","hidePopup","showMenuAfterMouseEvent","showPopup","eMenu","popupService","positionPopupUnderMouseEvent","ePopup","showMenuAfterButtonClick","eventSource","positionPopupUnderComponent","keepWithinBounds","positionCallback","filterWrapper","filterManager","getOrCreateFilterWrapper","document","createElement","guiPromise","promise","gui","bodyScrollListener","direction","closedCallback","setMenuVisible","addAsModalPopup","filterPromise","afterGuiAttached","isMenuEnabled","isFilterAllowed","PopupService","sortController_1","agCheckbox_1","selectAllFeature_1","columnHoverService_1","enableSorting","sortable","enableMenu","menuFactory","suppressMenu","appendHeaderComp","setupMenuClass","setupSortableClass","addColumnHoverListener","EVENT_FILTER_ACTIVE_CHANGED","onFilterChanged","SelectAllFeature","cbSelectAll","EVENT_COLUMN_HOVER_CHANGED","onColumnHover","isHovered","columnHoverService","element","filterPresent","isFilterActive","showColumnMenu","source","showColumnMenuAfterButtonClick","progressSort","multiSort","sortController","setSort","sort","setSortForColumn","newHeaderComponent","eHeaderCellLabel","suppressMove","createDragItem","eResize","weWantAutoSize","autoSizeColumn","EVENT_DOUBLE_TAP","normaliseResizeAmount","newWidth","setColumnWidth","resizeWithShiftKey","onColumnWidthChanged","EVENT_MENU_VISIBLE_CHANGED","onMenuVisible","isMenuVisible","SortController","ColumnHoverService","AgCheckbox","CellRangeType","VerticalStack","isLayoutPanel","childPanels","eGui","addPanel","panel","component","doLayout","logger_1","needToMoveLeft","needToMoveRight","exists","logger","loggerFactory","ICON_PINNED","ICON_MOVE","dragItem","dragCameFromToolPanel","setColumnsVisible","visibleState_1","visibleColumns","setColumnsPinned","hideColumnOnExit","isSuppressDragLeaveHidesColumns","fromNudge","ensureIntervalCleared","visible","allowedCols","lockVisible","lockPinned","normaliseX","x","flipHorizontallyForRtl","clientWidth","adjustForScroll","getCenterViewportScrollLeft","checkCenterForScrolling","xAdjustedForScroll","firstVisiblePixel","lastVisiblePixel","getCenterWidth","ensureIntervalStarted","fromEnter","lastDraggingEvent","hDirection","mouseXNormalised","hDirectionNormalised","normaliseDirection","dragSourceType","columnsToMove","getPinned","attemptMoveColumns","HDirection","Left","Right","console","error","calculateOldIndex","movingCols","gridCols","getAllGridColumns","indexes","sortNumberArray","firstIndex","lastIndex","last","spread","gapsExist","allMovingColumns","mouseX","draggingLeft","draggingRight","validMoves","calculateValidMoves","oldIndex","firstValidMove","constrainDirection","move","doesMovePassRules","moveColumns","allDisplayedCols","getDisplayedColumns","allGridCols","colIsMovingFunc","colIsNotMovingFunc","movingDisplayedCols","otherDisplayedCols","otherGridCols","displayIndex","availableWidth","widthOfMovingDisplayedCols_1","leftColumn","pointer","displacedCol","isColumnHidden","firstDisplayIndex","displayedColumns","movingIntervalId","intervalCount","failedMoveAttempts","window","setInterval","moveInterval","setGhostIcon","ICON_LEFT","ICON_RIGHT","clearInterval","pixelsToMove","pixelsMoved","scrollHorizontally","columnsThatCanPin","pinType","nudge","LoggerFactory","columnsToAggregate","columnsToGroup","columnsToPivot","clearColumnsList","isFunctionsReadOnly","dragColumns","isPrimary","isAnyFunctionActive","isAllowValue","isAllowRowGroup","totalColumns","addValueColumns","addRowGroupColumns","addPivotColumns","TabbedLayout","eHeader","querySelector","eBody","cssClass","item","addItem","setAfterAttachedParams","afterAttachedParams","getMinDimensions","eDummyContainer","cloneNode","eDummyBody","position","minWidth","minHeight","itemWrapper","eClone","tabbedItem","bodyPromise","resolveNow","body","offsetWidth","offsetHeight","showFirstItem","showItemWrapper","eHeaderButton","title","wrapper","showItem","find","onItemClicked","activeItem","afterAttachedCallback","callIfPresent","onActiveItemClicked","HeaderComp","apply","lastMovingChanged","template","firstExistingValue","trim","setTemplate","setupTap","setupIcons","setupMenu","setupSort","setupFilterIcon","setupText","displayNameSanitised","escape","eText","eSortAsc","eSortDesc","eSortNone","eFilter","eParent","options","isSuppressTouch","suppressMenuHide","isSuppressMenuHide","tapMenuButton","menuTouchListener","eventType","showMenuFn","showColumnMenuAfterMouseClick","touchStart","tapListener","contains","hideShowMenu","isUserAgentIPad","showMenu","opacity","addGuiEventListener","transition","removeSortIcons","eSortOrder","sortUsingCtrl","isMultiSortKeyCtrl","Date","getTime","eLabel","moving","nowTime","movedRecently","columnMoving","ctrlKey","metaKey","EVENT_SORT_CHANGED","onSortChanged","setMultiSortOrder","isSortAscending","isSortDescending","isSortNone","alwaysHideNoSort","unSortIcon","isUnSortIcon","allColumnsWithSorting","getColumnsWithSortingOrdered","indexThisCol","moreThanOneColSorting","showIndex","isSorting","EVENT_FILTER_CHANGED","beanStub_1","selectionController_1","cbSelectAllVisible","processingEventFromCheckbox","filteredOnly","headerCheckboxSelectionFilteredOnly","showOrHideSelectAll","EVENT_SELECTION_CHANGED","onSelectionChanged","EVENT_MODEL_UPDATED","onModelChanged","EVENT_CHANGED","onCbSelectAll","isCheckboxSelection","checkRightRowModelType","updateStateOfCheckbox","getNextCheckboxState","selectionCount","selected","notSelected","getSelectionCount","allSelected","setValue","selectedCount","notSelectedCount","node","isGroupSelectsChildren","group","isSelected","selectable","forEachNodeAfterFilter","forEachNode","rowModelType","rowModel","getType","rowModelMatches","ROW_MODEL_TYPE_CLIENT_SIDE","warn","getValue","selectionController","selectAllRowNodes","deselectAllRowNodes","headerCheckboxSelection","isRowModelServerSide","isRowModelInfinite","isRowModelViewport","SelectionController","BeanStub","headerContainer_1","autoWidthCalculator_1","HeaderRootComp","childContainers","registerHeaderRootComp","autoWidthCalculator","eHeaderContainer","eHeaderViewport","pinnedLeftContainer","ePinnedLeftHeader","pinnedRightContainer","ePinnedRightHeader","container","refreshHeader","PROP_DOM_LAYOUT","onDomLayoutChanged","EVENT_COLUMN_PIVOT_MODE_CHANGED","onPivotModeChanged","addPreventHeaderScroll","isReady","newValue","setHorizontalScroll","offset","transform","childContainer","pivotMode","setHeight","px","scrollLeft","setHeaderContainerWidth","setLeftVisible","setRightVisible","AutoWidthCalculator","addMouseHoverListeners","onMouseOut","onMouseOver","clearMouseOver","setMouseOver"],"mappings":"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","file":"js/chunk-vendors~fdf8e748.d67a8789.js","sourcesContent":["/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar context_1 = require(\"../context/context\");\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar headerRowComp_1 = require(\"./headerRowComp\");\nvar bodyDropTarget_1 = require(\"./bodyDropTarget\");\nvar column_1 = require(\"../entities/column\");\nvar scrollVisibleService_1 = require(\"../gridPanel/scrollVisibleService\");\nvar utils_1 = require(\"../utils\");\nvar HeaderContainer = /** @class */ (function () {\n function HeaderContainer(eContainer, eViewport, pinned) {\n this.headerRowComps = [];\n this.eContainer = eContainer;\n this.pinned = pinned;\n this.eViewport = eViewport;\n }\n HeaderContainer.prototype.registerGridComp = function (gridPanel) {\n this.setupDragAndDrop(gridPanel);\n };\n HeaderContainer.prototype.forEachHeaderElement = function (callback) {\n this.headerRowComps.forEach(function (headerRowComp) { return headerRowComp.forEachHeaderElement(callback); });\n };\n HeaderContainer.prototype.init = function () {\n this.scrollWidth = this.gridOptionsWrapper.getScrollbarWidth();\n // if value changes, then if not pivoting, we at least need to change the label eg from sum() to avg(),\n // if pivoting, then the columns have changed\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_VALUE_CHANGED, this.onColumnValueChanged.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n };\n // if row group changes, that means we may need to add aggFuncs to the column headers,\n // if the grid goes from no aggregation (ie no grouping) to grouping\n HeaderContainer.prototype.onColumnRowGroupChanged = function () {\n this.onGridColumnsChanged();\n };\n // if the agg func of a column changes, then we may need to update the agg func in columns header\n HeaderContainer.prototype.onColumnValueChanged = function () {\n this.onGridColumnsChanged();\n };\n HeaderContainer.prototype.onColumnResized = function () {\n this.setWidthOfPinnedContainer();\n };\n HeaderContainer.prototype.onDisplayedColumnsChanged = function () {\n this.setWidthOfPinnedContainer();\n };\n HeaderContainer.prototype.onScrollVisibilityChanged = function () {\n this.setWidthOfPinnedContainer();\n };\n HeaderContainer.prototype.setWidthOfPinnedContainer = function () {\n var pinningLeft = this.pinned === column_1.Column.PINNED_LEFT;\n var pinningRight = this.pinned === column_1.Column.PINNED_RIGHT;\n var controller = this.columnController;\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n if (pinningLeft || pinningRight) {\n // size to fit all columns\n var width = controller[pinningLeft ? 'getPinnedLeftContainerWidth' : 'getPinnedRightContainerWidth']();\n // if there is a scroll showing (and taking up space, so Windows, and not iOS)\n // in the body, then we add extra space to keep header aligned with the body,\n // as body width fits the cols and the scrollbar\n var addPaddingForScrollbar = this.scrollVisibleService.isVerticalScrollShowing() && ((isRtl && pinningLeft) || (!isRtl && pinningRight));\n if (addPaddingForScrollbar) {\n width += this.scrollWidth;\n }\n utils_1._.setFixedWidth(this.eContainer, width);\n }\n };\n HeaderContainer.prototype.destroy = function () {\n this.removeHeaderRowComps();\n };\n HeaderContainer.prototype.getRowComps = function () {\n return this.headerRowComps;\n };\n // grid cols have changed - this also means the number of rows in the header can have\n // changed. so we remove all the old rows and insert new ones for a complete refresh\n HeaderContainer.prototype.onGridColumnsChanged = function () {\n this.removeAndCreateAllRowComps();\n };\n HeaderContainer.prototype.removeAndCreateAllRowComps = function () {\n this.removeHeaderRowComps();\n this.createHeaderRowComps();\n };\n // we expose this for gridOptions.api.refreshHeader() to call\n HeaderContainer.prototype.refresh = function () {\n this.removeAndCreateAllRowComps();\n };\n HeaderContainer.prototype.setupDragAndDrop = function (gridComp) {\n var dropContainer = this.eViewport ? this.eViewport : this.eContainer;\n var bodyDropTarget = new bodyDropTarget_1.BodyDropTarget(this.pinned, dropContainer);\n this.context.wireBean(bodyDropTarget);\n bodyDropTarget.registerGridComp(gridComp);\n };\n HeaderContainer.prototype.removeHeaderRowComps = function () {\n this.headerRowComps.forEach(function (headerRowComp) {\n headerRowComp.destroy();\n });\n this.headerRowComps.length = 0;\n utils_1._.clearElement(this.eContainer);\n };\n HeaderContainer.prototype.createHeaderRowComps = function () {\n // if we are displaying header groups, then we have many rows here.\n // go through each row of the header, one by one.\n var rowCount = this.columnController.getHeaderRowCount();\n for (var dept = 0; dept < rowCount; dept++) {\n var groupRow = dept !== (rowCount - 1);\n var type = groupRow ? headerRowComp_1.HeaderRowType.COLUMN_GROUP : headerRowComp_1.HeaderRowType.COLUMN;\n var headerRowComp = new headerRowComp_1.HeaderRowComp(dept, type, this.pinned, this.dropTarget);\n this.context.wireBean(headerRowComp);\n this.headerRowComps.push(headerRowComp);\n headerRowComp.getGui().setAttribute('aria-rowindex', this.headerRowComps.length.toString());\n this.eContainer.appendChild(headerRowComp.getGui());\n }\n var includeFloatingFilterRow = this.gridOptionsWrapper.isFloatingFilter() && !this.columnController.isPivotMode();\n if (includeFloatingFilterRow) {\n var headerRowComp = new headerRowComp_1.HeaderRowComp(rowCount, headerRowComp_1.HeaderRowType.FLOATING_FILTER, this.pinned, this.dropTarget);\n this.context.wireBean(headerRowComp);\n this.headerRowComps.push(headerRowComp);\n headerRowComp.getGui().setAttribute('aria-rowindex', this.headerRowComps.length.toString());\n this.eContainer.appendChild(headerRowComp.getGui());\n }\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], HeaderContainer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], HeaderContainer.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired('$scope'),\n __metadata(\"design:type\", Object)\n ], HeaderContainer.prototype, \"$scope\", void 0);\n __decorate([\n context_1.Autowired('dragAndDropService'),\n __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n ], HeaderContainer.prototype, \"dragAndDropService\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], HeaderContainer.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], HeaderContainer.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('scrollVisibleService'),\n __metadata(\"design:type\", scrollVisibleService_1.ScrollVisibleService)\n ], HeaderContainer.prototype, \"scrollVisibleService\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], HeaderContainer.prototype, \"init\", null);\n return HeaderContainer;\n}());\nexports.HeaderContainer = HeaderContainer;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChartType;\n(function (ChartType) {\n ChartType[\"GroupedColumn\"] = \"groupedColumn\";\n ChartType[\"StackedColumn\"] = \"stackedColumn\";\n ChartType[\"NormalizedColumn\"] = \"normalizedColumn\";\n ChartType[\"GroupedBar\"] = \"groupedBar\";\n ChartType[\"StackedBar\"] = \"stackedBar\";\n ChartType[\"NormalizedBar\"] = \"normalizedBar\";\n ChartType[\"Line\"] = \"line\";\n ChartType[\"Scatter\"] = \"scatter\";\n ChartType[\"Bubble\"] = \"bubble\";\n ChartType[\"Pie\"] = \"pie\";\n ChartType[\"Doughnut\"] = \"doughnut\";\n ChartType[\"Area\"] = \"area\";\n ChartType[\"StackedArea\"] = \"stackedArea\";\n ChartType[\"NormalizedArea\"] = \"normalizedArea\";\n})(ChartType = exports.ChartType || (exports.ChartType = {}));\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar context_1 = require(\"../../context/context\");\nvar touchListener_1 = require(\"../../widgets/touchListener\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar originalColumnGroup_1 = require(\"../../entities/originalColumnGroup\");\nvar utils_1 = require(\"../../utils\");\nvar HeaderGroupComp = /** @class */ (function (_super) {\n __extends(HeaderGroupComp, _super);\n function HeaderGroupComp() {\n return _super.call(this, HeaderGroupComp.TEMPLATE) || this;\n }\n HeaderGroupComp.prototype.init = function (params) {\n this.params = params;\n this.setupLabel();\n this.addGroupExpandIcon();\n this.setupExpandIcons();\n };\n HeaderGroupComp.prototype.setupExpandIcons = function () {\n var _this = this;\n this.addInIcon(\"columnGroupOpened\", \"agOpened\");\n this.addInIcon(\"columnGroupClosed\", \"agClosed\");\n var expandAction = function (event) {\n if (utils_1._.isStopPropagationForAgGrid(event)) {\n return;\n }\n var newExpandedValue = !_this.params.columnGroup.isExpanded();\n _this.columnController.setColumnGroupOpened(_this.params.columnGroup.getOriginalColumnGroup(), newExpandedValue, \"uiColumnExpanded\");\n };\n this.addTouchAndClickListeners(this.eCloseIcon, expandAction);\n this.addTouchAndClickListeners(this.eOpenIcon, expandAction);\n var stopPropagationAction = function (event) {\n utils_1._.stopPropagationForAgGrid(event);\n };\n // adding stopPropagation to the double click for the icons prevents double click action happening\n // when the icons are clicked. if the icons are double clicked, then the groups should open and\n // then close again straight away. if we also listened to double click, then the group would open,\n // close, then open, which is not what we want. double click should only action if the user double\n // clicks outside of the icons.\n this.addDestroyableEventListener(this.eCloseIcon, \"dblclick\", stopPropagationAction);\n this.addDestroyableEventListener(this.eOpenIcon, \"dblclick\", stopPropagationAction);\n this.addDestroyableEventListener(this.getGui(), \"dblclick\", expandAction);\n this.updateIconVisibility();\n var originalColumnGroup = this.params.columnGroup.getOriginalColumnGroup();\n this.addDestroyableEventListener(originalColumnGroup, originalColumnGroup_1.OriginalColumnGroup.EVENT_EXPANDED_CHANGED, this.updateIconVisibility.bind(this));\n this.addDestroyableEventListener(originalColumnGroup, originalColumnGroup_1.OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED, this.updateIconVisibility.bind(this));\n };\n HeaderGroupComp.prototype.addTouchAndClickListeners = function (eElement, action) {\n var touchListener = new touchListener_1.TouchListener(eElement);\n this.addDestroyableEventListener(touchListener, touchListener_1.TouchListener.EVENT_TAP, action);\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n this.addDestroyableEventListener(eElement, \"click\", action);\n };\n HeaderGroupComp.prototype.updateIconVisibility = function () {\n var columnGroup = this.params.columnGroup;\n if (columnGroup.isExpandable()) {\n var expanded = this.params.columnGroup.isExpanded();\n utils_1._.setDisplayed(this.eOpenIcon, !expanded);\n utils_1._.setDisplayed(this.eCloseIcon, expanded);\n }\n else {\n utils_1._.setDisplayed(this.eOpenIcon, false);\n utils_1._.setDisplayed(this.eCloseIcon, false);\n }\n };\n HeaderGroupComp.prototype.addInIcon = function (iconName, refName) {\n var eIcon = utils_1._.createIconNoSpan(iconName, this.gridOptionsWrapper, null);\n this.getRefElement(refName).appendChild(eIcon);\n };\n HeaderGroupComp.prototype.addGroupExpandIcon = function () {\n if (!this.params.columnGroup.isExpandable()) {\n utils_1._.setDisplayed(this.eOpenIcon, false);\n utils_1._.setDisplayed(this.eCloseIcon, false);\n return;\n }\n };\n HeaderGroupComp.prototype.setupLabel = function () {\n // no renderer, default text render\n if (this.params.displayName && this.params.displayName !== \"\") {\n var eInnerText = this.getRefElement(\"agLabel\");\n eInnerText.innerHTML = this.params.displayName;\n }\n };\n HeaderGroupComp.TEMPLATE = \"
\" +\n \"\" +\n \"\" +\n \"\" +\n \"
\";\n __decorate([\n context_1.Autowired(\"columnController\"),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], HeaderGroupComp.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired(\"gridOptionsWrapper\"),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], HeaderGroupComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector(\"agOpened\"),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderGroupComp.prototype, \"eOpenIcon\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector(\"agClosed\"),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderGroupComp.prototype, \"eCloseIcon\", void 0);\n return HeaderGroupComp;\n}(component_1.Component));\nexports.HeaderGroupComp = HeaderGroupComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar context_1 = require(\"../context/context\");\nvar dragService_1 = require(\"../dragAndDrop/dragService\");\nvar HorizontalResizeService = /** @class */ (function () {\n function HorizontalResizeService() {\n }\n HorizontalResizeService.prototype.addResizeBar = function (params) {\n var _this = this;\n var dragSource = {\n dragStartPixels: params.dragStartPixels || 0,\n eElement: params.eResizeBar,\n onDragStart: this.onDragStart.bind(this, params),\n onDragStop: this.onDragStop.bind(this, params),\n onDragging: this.onDragging.bind(this, params)\n };\n this.dragService.addDragSource(dragSource, true);\n // we pass remove func back to the caller, so call can tell us when they\n // are finished, and then we remove the listener from the drag source\n var finishedWithResizeFunc = function () { return _this.dragService.removeDragSource(dragSource); };\n return finishedWithResizeFunc;\n };\n HorizontalResizeService.prototype.onDragStart = function (params, mouseEvent) {\n this.draggingStarted = true;\n this.dragStartX = mouseEvent.clientX;\n this.setResizeIcons();\n var shiftKey = mouseEvent instanceof MouseEvent ? mouseEvent.shiftKey === true : false;\n params.onResizeStart(shiftKey);\n };\n HorizontalResizeService.prototype.setResizeIcons = function () {\n this.oldBodyCursor = this.eGridDiv.style.cursor;\n this.oldMsUserSelect = this.eGridDiv.style.msUserSelect;\n this.oldWebkitUserSelect = this.eGridDiv.style.webkitUserSelect;\n // change the body cursor, so when drag moves out of the drag bar, the cursor is still 'resize' (or 'move'\n this.eGridDiv.style.cursor = 'col-resize';\n // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)\n this.eGridDiv.style.msUserSelect = 'none';\n this.eGridDiv.style.webkitUserSelect = 'none';\n };\n HorizontalResizeService.prototype.onDragStop = function (params, mouseEvent) {\n params.onResizeEnd(this.resizeAmount);\n this.resetIcons();\n };\n HorizontalResizeService.prototype.resetIcons = function () {\n // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)\n this.eGridDiv.style.cursor = this.oldBodyCursor;\n this.eGridDiv.style.msUserSelect = this.oldMsUserSelect;\n this.eGridDiv.style.webkitUserSelect = this.oldWebkitUserSelect;\n };\n HorizontalResizeService.prototype.onDragging = function (params, mouseEvent) {\n this.resizeAmount = mouseEvent.clientX - this.dragStartX;\n params.onResizing(this.resizeAmount);\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], HorizontalResizeService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('dragService'),\n __metadata(\"design:type\", dragService_1.DragService)\n ], HorizontalResizeService.prototype, \"dragService\", void 0);\n __decorate([\n context_1.Autowired('eGridDiv'),\n __metadata(\"design:type\", HTMLElement)\n ], HorizontalResizeService.prototype, \"eGridDiv\", void 0);\n HorizontalResizeService = __decorate([\n context_1.Bean('horizontalResizeService')\n ], HorizontalResizeService);\n return HorizontalResizeService;\n}());\nexports.HorizontalResizeService = HorizontalResizeService;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar CssClassApplier = /** @class */ (function () {\n function CssClassApplier() {\n }\n CssClassApplier.addHeaderClassesFromColDef = function (abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n if (utils_1._.missing(abstractColDef)) {\n return;\n }\n this.addColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup);\n };\n CssClassApplier.addToolPanelClassesFromColDef = function (abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n if (utils_1._.missing(abstractColDef)) {\n return;\n }\n this.addColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup);\n };\n CssClassApplier.addColumnClassesFromCollDef = function (classesOrFunc, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n if (utils_1._.missing(classesOrFunc)) {\n return;\n }\n var classToUse;\n if (typeof classesOrFunc === 'function') {\n var params = {\n // bad naming, as colDef here can be a group or a column,\n // however most people won't appreciate the difference,\n // so keeping it as colDef to avoid confusion.\n colDef: abstractColDef,\n column: column,\n columnGroup: columnGroup,\n context: gridOptionsWrapper.getContext(),\n api: gridOptionsWrapper.getApi()\n };\n var headerClassFunc = classesOrFunc;\n classToUse = headerClassFunc(params);\n }\n else {\n classToUse = classesOrFunc;\n }\n if (typeof classToUse === 'string') {\n utils_1._.addCssClass(eHeaderCell, classToUse);\n }\n else if (Array.isArray(classToUse)) {\n classToUse.forEach(function (cssClassItem) {\n utils_1._.addCssClass(eHeaderCell, cssClassItem);\n });\n }\n };\n return CssClassApplier;\n}());\nexports.CssClassApplier = CssClassApplier;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../widgets/component\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar column_1 = require(\"../entities/column\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar headerWrapperComp_1 = require(\"./header/headerWrapperComp\");\nvar headerGroupWrapperComp_1 = require(\"./headerGroup/headerGroupWrapperComp\");\nvar filterManager_1 = require(\"../filter/filterManager\");\nvar gridApi_1 = require(\"../gridApi\");\nvar constants_1 = require(\"../constants\");\nvar utils_1 = require(\"../utils\");\nvar floatingFilterWrapper_1 = require(\"../filter/floating/floatingFilterWrapper\");\nvar HeaderRowType;\n(function (HeaderRowType) {\n HeaderRowType[HeaderRowType[\"COLUMN_GROUP\"] = 0] = \"COLUMN_GROUP\";\n HeaderRowType[HeaderRowType[\"COLUMN\"] = 1] = \"COLUMN\";\n HeaderRowType[HeaderRowType[\"FLOATING_FILTER\"] = 2] = \"FLOATING_FILTER\";\n})(HeaderRowType = exports.HeaderRowType || (exports.HeaderRowType = {}));\nvar HeaderRowComp = /** @class */ (function (_super) {\n __extends(HeaderRowComp, _super);\n function HeaderRowComp(dept, type, pinned, dropTarget) {\n var _this = _super.call(this, \"
\") || this;\n _this.headerComps = {};\n _this.dept = dept;\n _this.type = type;\n _this.pinned = pinned;\n _this.dropTarget = dropTarget;\n return _this;\n }\n HeaderRowComp.prototype.forEachHeaderElement = function (callback) {\n var _this = this;\n Object.keys(this.headerComps).forEach(function (key) {\n callback(_this.headerComps[key]);\n });\n };\n HeaderRowComp.prototype.destroy = function () {\n var idsOfAllChildren = Object.keys(this.headerComps);\n this.removeAndDestroyChildComponents(idsOfAllChildren);\n _super.prototype.destroy.call(this);\n };\n HeaderRowComp.prototype.removeAndDestroyChildComponents = function (idsToDestroy) {\n var _this = this;\n idsToDestroy.forEach(function (id) {\n var childHeaderComp = _this.headerComps[id];\n _this.getGui().removeChild(childHeaderComp.getGui());\n childHeaderComp.destroy();\n delete _this.headerComps[id];\n });\n };\n HeaderRowComp.prototype.onRowHeightChanged = function () {\n var headerRowCount = this.columnController.getHeaderRowCount();\n var sizes = [];\n var numberOfFloating = 0;\n var groupHeight;\n var headerHeight;\n if (!this.columnController.isPivotMode()) {\n if (this.gridOptionsWrapper.isFloatingFilter()) {\n headerRowCount++;\n }\n numberOfFloating = (this.gridOptionsWrapper.isFloatingFilter()) ? 1 : 0;\n groupHeight = this.gridOptionsWrapper.getGroupHeaderHeight();\n headerHeight = this.gridOptionsWrapper.getHeaderHeight();\n }\n else {\n numberOfFloating = 0;\n groupHeight = this.gridOptionsWrapper.getPivotGroupHeaderHeight();\n headerHeight = this.gridOptionsWrapper.getPivotHeaderHeight();\n }\n var numberOfNonGroups = 1 + numberOfFloating;\n var numberOfGroups = headerRowCount - numberOfNonGroups;\n for (var i = 0; i < numberOfGroups; i++) {\n sizes.push(groupHeight);\n }\n sizes.push(headerHeight);\n for (var i = 0; i < numberOfFloating; i++) {\n sizes.push(this.gridOptionsWrapper.getFloatingFiltersHeight());\n }\n var rowHeight = 0;\n for (var i = 0; i < this.dept; i++) {\n rowHeight += sizes[i];\n }\n this.getGui().style.top = rowHeight + 'px';\n this.getGui().style.height = sizes[this.dept] + 'px';\n };\n //noinspection JSUnusedLocalSymbols\n HeaderRowComp.prototype.init = function () {\n this.onRowHeightChanged();\n this.onVirtualColumnsChanged();\n this.setWidth();\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n };\n HeaderRowComp.prototype.onColumnResized = function () {\n this.setWidth();\n };\n HeaderRowComp.prototype.setWidth = function () {\n var width = this.getWidthForRow();\n this.getGui().style.width = width + 'px';\n };\n HeaderRowComp.prototype.getWidthForRow = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n if (printLayout) {\n var centerRow = utils_1._.missing(this.pinned);\n if (centerRow) {\n return this.columnController.getContainerWidth(column_1.Column.PINNED_RIGHT)\n + this.columnController.getContainerWidth(column_1.Column.PINNED_LEFT)\n + this.columnController.getContainerWidth(null);\n }\n else {\n return 0;\n }\n }\n else {\n // if not printing, just return the width as normal\n return this.columnController.getContainerWidth(this.pinned);\n }\n };\n HeaderRowComp.prototype.onGridColumnsChanged = function () {\n this.removeAndDestroyAllChildComponents();\n };\n HeaderRowComp.prototype.removeAndDestroyAllChildComponents = function () {\n var idsOfAllChildren = Object.keys(this.headerComps);\n this.removeAndDestroyChildComponents(idsOfAllChildren);\n };\n HeaderRowComp.prototype.onDisplayedColumnsChanged = function () {\n this.onVirtualColumnsChanged();\n this.setWidth();\n };\n HeaderRowComp.prototype.getItemsAtDept = function () {\n var _this = this;\n var printLayout = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n if (printLayout) {\n // for print layout, we add all columns into the center\n var centerContainer = utils_1._.missing(this.pinned);\n if (centerContainer) {\n var result_1 = [];\n [column_1.Column.PINNED_LEFT, null, column_1.Column.PINNED_RIGHT].forEach(function (pinned) {\n var items = _this.columnController.getVirtualHeaderGroupRow(pinned, _this.type == HeaderRowType.FLOATING_FILTER ?\n _this.dept - 1 :\n _this.dept);\n result_1 = result_1.concat(items);\n });\n return result_1;\n }\n else {\n return [];\n }\n }\n else {\n // when in normal layout, we add the columns for that container only\n return this.columnController.getVirtualHeaderGroupRow(this.pinned, this.type == HeaderRowType.FLOATING_FILTER ?\n this.dept - 1 :\n this.dept);\n }\n };\n HeaderRowComp.prototype.onVirtualColumnsChanged = function () {\n var _this = this;\n var currentChildIds = Object.keys(this.headerComps);\n var itemsAtDepth = this.getItemsAtDept();\n var ensureDomOrder = this.gridOptionsWrapper.isEnsureDomOrder();\n var eBefore;\n itemsAtDepth.forEach(function (child) {\n // skip groups that have no displayed children. this can happen when the group is broken,\n // and this section happens to have nothing to display for the open / closed state.\n // (a broken group is one that is split, ie columns in the group have a non-group column\n // in between them)\n if (child.isEmptyGroup()) {\n return;\n }\n var idOfChild = child.getUniqueId();\n var eParentContainer = _this.getGui();\n // if we already have this cell rendered, do nothing\n var colAlreadyInDom = currentChildIds.indexOf(idOfChild) >= 0;\n var headerComp;\n var eHeaderCompGui;\n if (colAlreadyInDom) {\n utils_1._.removeFromArray(currentChildIds, idOfChild);\n headerComp = _this.headerComps[idOfChild];\n eHeaderCompGui = headerComp.getGui();\n if (ensureDomOrder) {\n utils_1._.ensureDomOrder(eParentContainer, eHeaderCompGui, eBefore);\n }\n eBefore = eHeaderCompGui;\n }\n else {\n headerComp = _this.createHeaderComp(child);\n _this.headerComps[idOfChild] = headerComp;\n eHeaderCompGui = headerComp.getGui();\n if (ensureDomOrder) {\n utils_1._.insertWithDomOrder(eParentContainer, eHeaderCompGui, eBefore);\n }\n else {\n eParentContainer.appendChild(eHeaderCompGui);\n }\n eBefore = eHeaderCompGui;\n }\n });\n // at this point, anything left in currentChildIds is an element that is no longer in the viewport\n this.removeAndDestroyChildComponents(currentChildIds);\n };\n HeaderRowComp.prototype.createHeaderComp = function (columnGroupChild) {\n var result;\n switch (this.type) {\n case HeaderRowType.COLUMN:\n result = new headerWrapperComp_1.HeaderWrapperComp(columnGroupChild, this.dropTarget, this.pinned);\n break;\n case HeaderRowType.COLUMN_GROUP:\n result = new headerGroupWrapperComp_1.HeaderGroupWrapperComp(columnGroupChild, this.dropTarget, this.pinned);\n break;\n case HeaderRowType.FLOATING_FILTER:\n result = new floatingFilterWrapper_1.FloatingFilterWrapper(columnGroupChild);\n break;\n }\n this.getContext().wireBean(result);\n return result;\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], HeaderRowComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], HeaderRowComp.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], HeaderRowComp.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], HeaderRowComp.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('filterManager'),\n __metadata(\"design:type\", filterManager_1.FilterManager)\n ], HeaderRowComp.prototype, \"filterManager\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], HeaderRowComp.prototype, \"init\", null);\n return HeaderRowComp;\n}(component_1.Component));\nexports.HeaderRowComp = HeaderRowComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar context_1 = require(\"../context/context\");\nvar moveColumnController_1 = require(\"./moveColumnController\");\nvar column_1 = require(\"../entities/column\");\nvar bodyDropPivotTarget_1 = require(\"./bodyDropPivotTarget\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar DropType;\n(function (DropType) {\n DropType[DropType[\"ColumnMove\"] = 0] = \"ColumnMove\";\n DropType[DropType[\"Pivot\"] = 1] = \"Pivot\";\n})(DropType || (DropType = {}));\nvar BodyDropTarget = /** @class */ (function () {\n function BodyDropTarget(pinned, eContainer) {\n this.dropListeners = {};\n this.pinned = pinned;\n this.eContainer = eContainer;\n }\n BodyDropTarget.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.moveColumnController.registerGridComp(gridPanel);\n switch (this.pinned) {\n case column_1.Column.PINNED_LEFT:\n this.eSecondaryContainers = this.gridPanel.getDropTargetLeftContainers();\n break;\n case column_1.Column.PINNED_RIGHT:\n this.eSecondaryContainers = this.gridPanel.getDropTargetRightContainers();\n break;\n default:\n this.eSecondaryContainers = this.gridPanel.getDropTargetBodyContainers();\n break;\n }\n };\n BodyDropTarget.prototype.isInterestedIn = function (type) {\n // not interested in row drags\n return type === dragAndDropService_1.DragSourceType.HeaderCell || type === dragAndDropService_1.DragSourceType.ToolPanel;\n };\n BodyDropTarget.prototype.getSecondaryContainers = function () {\n return this.eSecondaryContainers;\n };\n BodyDropTarget.prototype.getContainer = function () {\n return this.eContainer;\n };\n BodyDropTarget.prototype.init = function () {\n this.moveColumnController = new moveColumnController_1.MoveColumnController(this.pinned, this.eContainer);\n this.context.wireBean(this.moveColumnController);\n var bodyDropPivotTarget = new bodyDropPivotTarget_1.BodyDropPivotTarget(this.pinned);\n this.context.wireBean(bodyDropPivotTarget);\n this.dropListeners[DropType.ColumnMove] = this.moveColumnController;\n this.dropListeners[DropType.Pivot] = bodyDropPivotTarget;\n this.dragAndDropService.addDropTarget(this);\n };\n BodyDropTarget.prototype.getIconName = function () {\n return this.currentDropListener.getIconName();\n };\n // we want to use the bodyPivotTarget if the user is dragging columns in from the toolPanel\n // and we are in pivot mode, as it has to logic to set pivot/value/group on the columns when\n // dropped into the grid's body.\n BodyDropTarget.prototype.getDropType = function (draggingEvent) {\n if (this.columnController.isPivotMode()) {\n // in pivot mode, then if moving a column (ie didn't come from toolpanel) then it's\n // a standard column move, however if it came from teh toolpanel, then we are introducing\n // dimensions or values to the grid\n if (draggingEvent.dragSource.type === dragAndDropService_1.DragSourceType.ToolPanel) {\n return DropType.Pivot;\n }\n else {\n return DropType.ColumnMove;\n }\n }\n else {\n // it's a column, and not pivot mode, so always moving\n return DropType.ColumnMove;\n }\n };\n BodyDropTarget.prototype.onDragEnter = function (draggingEvent) {\n // we pick the drop listener depending on whether we are in pivot mode are not. if we are\n // in pivot mode, then dropping cols changes the row group, pivot, value stats. otherwise\n // we change visibility state and position.\n // if (this.columnController.isPivotMode()) {\n var dropType = this.getDropType(draggingEvent);\n this.currentDropListener = this.dropListeners[dropType];\n this.currentDropListener.onDragEnter(draggingEvent);\n };\n BodyDropTarget.prototype.onDragLeave = function (params) {\n this.currentDropListener.onDragLeave(params);\n };\n BodyDropTarget.prototype.onDragging = function (params) {\n this.currentDropListener.onDragging(params);\n };\n BodyDropTarget.prototype.onDragStop = function (params) {\n this.currentDropListener.onDragStop(params);\n };\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], BodyDropTarget.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired('dragAndDropService'),\n __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n ], BodyDropTarget.prototype, \"dragAndDropService\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], BodyDropTarget.prototype, \"columnController\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], BodyDropTarget.prototype, \"init\", null);\n return BodyDropTarget;\n}());\nexports.BodyDropTarget = BodyDropTarget;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar column_1 = require(\"../../entities/column\");\nvar columnGroup_1 = require(\"../../entities/columnGroup\");\nvar columnApi_1 = require(\"../../columnController/columnApi\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar horizontalResizeService_1 = require(\"../horizontalResizeService\");\nvar context_1 = require(\"../../context/context\");\nvar cssClassApplier_1 = require(\"../cssClassApplier\");\nvar dragAndDropService_1 = require(\"../../dragAndDrop/dragAndDropService\");\nvar setLeftFeature_1 = require(\"../../rendering/features/setLeftFeature\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar userComponentFactory_1 = require(\"../../components/framework/userComponentFactory\");\nvar beans_1 = require(\"../../rendering/beans\");\nvar hoverFeature_1 = require(\"../hoverFeature\");\nvar utils_1 = require(\"../../utils\");\nvar HeaderGroupWrapperComp = /** @class */ (function (_super) {\n __extends(HeaderGroupWrapperComp, _super);\n function HeaderGroupWrapperComp(columnGroup, dragSourceDropTarget, pinned) {\n var _this = _super.call(this, HeaderGroupWrapperComp.TEMPLATE) || this;\n // the children can change, we keep destroy functions related to listening to the children here\n _this.childColumnsDestroyFuncs = [];\n _this.columnGroup = columnGroup;\n _this.dragSourceDropTarget = dragSourceDropTarget;\n _this.pinned = pinned;\n return _this;\n }\n HeaderGroupWrapperComp.prototype.postConstruct = function () {\n cssClassApplier_1.CssClassApplier.addHeaderClassesFromColDef(this.getComponentHolder(), this.getGui(), this.gridOptionsWrapper, null, this.columnGroup);\n var displayName = this.columnController.getDisplayNameForColumnGroup(this.columnGroup, 'header');\n this.appendHeaderGroupComp(displayName);\n this.setupResize();\n this.addClasses();\n this.setupWidth();\n this.addAttributes();\n this.setupMovingCss();\n this.setupTooltip();\n this.addFeature(this.getContext(), new hoverFeature_1.HoverFeature(this.columnGroup.getOriginalColumnGroup().getLeafColumns(), this.getGui()));\n var setLeftFeature = new setLeftFeature_1.SetLeftFeature(this.columnGroup, this.getGui(), this.beans);\n setLeftFeature.init();\n this.addDestroyFunc(setLeftFeature.destroy.bind(setLeftFeature));\n };\n HeaderGroupWrapperComp.prototype.setupMovingCss = function () {\n var _this = this;\n var originalColumnGroup = this.columnGroup.getOriginalColumnGroup();\n var leafColumns = originalColumnGroup.getLeafColumns();\n leafColumns.forEach(function (col) {\n _this.addDestroyableEventListener(col, column_1.Column.EVENT_MOVING_CHANGED, _this.onColumnMovingChanged.bind(_this));\n });\n this.onColumnMovingChanged();\n };\n HeaderGroupWrapperComp.prototype.getColumn = function () {\n return this.columnGroup;\n };\n HeaderGroupWrapperComp.prototype.getComponentHolder = function () {\n return this.columnGroup.getColGroupDef();\n };\n HeaderGroupWrapperComp.prototype.getTooltipText = function () {\n var colGroupDef = this.getComponentHolder();\n return colGroupDef && colGroupDef.headerTooltip;\n };\n HeaderGroupWrapperComp.prototype.setupTooltip = function () {\n var tooltipText = this.getTooltipText();\n if (tooltipText == null) {\n return;\n }\n if (this.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.getGui().setAttribute('title', tooltipText);\n }\n else {\n this.beans.tooltipManager.registerTooltip(this);\n }\n };\n HeaderGroupWrapperComp.prototype.onColumnMovingChanged = function () {\n // this function adds or removes the moving css, based on if the col is moving.\n // this is what makes the header go dark when it is been moved (gives impression to\n // user that the column was picked up).\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-moving', this.columnGroup.isMoving());\n };\n HeaderGroupWrapperComp.prototype.addAttributes = function () {\n this.getGui().setAttribute(\"col-id\", this.columnGroup.getUniqueId());\n };\n HeaderGroupWrapperComp.prototype.appendHeaderGroupComp = function (displayName) {\n var _this = this;\n var params = {\n displayName: displayName,\n columnGroup: this.columnGroup,\n setExpanded: function (expanded) {\n _this.columnController.setColumnGroupOpened(_this.columnGroup.getOriginalColumnGroup(), expanded, \"gridInitializing\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext()\n };\n if (!displayName) {\n var columnGroup = this.columnGroup;\n var leafCols = columnGroup.getLeafColumns();\n // find the top most column group that represents the same columns. so if we are dragging a group, we also\n // want to visually show the parent groups dragging for the same column set. for example imaging 5 levels\n // of grouping, with each group only containing the next group, and the last group containing three columns,\n // then when you move any group (even the lowest level group) you are in-fact moving all the groups, as all\n // the groups represent the same column set.\n while (columnGroup.getParent() && columnGroup.getParent().getLeafColumns().length === leafCols.length) {\n columnGroup = columnGroup.getParent();\n }\n var colGroupDef = columnGroup.getColGroupDef();\n if (colGroupDef) {\n displayName = colGroupDef.headerName;\n }\n if (!displayName) {\n displayName = leafCols ? this.columnController.getDisplayNameForColumn(leafCols[0], 'header', true) : '';\n }\n }\n var callback = this.afterHeaderCompCreated.bind(this, displayName);\n this.userComponentFactory.newHeaderGroupComponent(params).then(callback);\n };\n HeaderGroupWrapperComp.prototype.afterHeaderCompCreated = function (displayName, headerGroupComp) {\n this.appendChild(headerGroupComp);\n this.setupMove(headerGroupComp.getGui(), displayName);\n };\n HeaderGroupWrapperComp.prototype.addClasses = function () {\n // having different classes below allows the style to not have a bottom border\n // on the group header, if no group is specified\n // columnGroup.getColGroupDef\n if (this.columnGroup.isPadding()) {\n this.addCssClass('ag-header-group-cell-no-group');\n }\n else {\n this.addCssClass('ag-header-group-cell-with-group');\n }\n };\n HeaderGroupWrapperComp.prototype.setupMove = function (eHeaderGroup, displayName) {\n var _this = this;\n if (!eHeaderGroup) {\n return;\n }\n if (this.isSuppressMoving()) {\n return;\n }\n var allLeafColumns = this.columnGroup.getOriginalColumnGroup().getLeafColumns();\n if (eHeaderGroup) {\n var dragSource_1 = {\n type: dragAndDropService_1.DragSourceType.HeaderCell,\n eElement: eHeaderGroup,\n dragItemName: displayName,\n // we add in the original group leaf columns, so we move both visible and non-visible items\n dragItemCallback: this.getDragItemForGroup.bind(this),\n dragSourceDropTarget: this.dragSourceDropTarget,\n dragStarted: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(true, \"uiColumnDragged\"); }); },\n dragStopped: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(false, \"uiColumnDragged\"); }); }\n };\n this.dragAndDropService.addDragSource(dragSource_1, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource_1); });\n }\n };\n // when moving the columns, we want to move all the columns (contained within the DragItem) in this group in one go,\n // and in the order they are currently in the screen.\n HeaderGroupWrapperComp.prototype.getDragItemForGroup = function () {\n var allColumnsOriginalOrder = this.columnGroup.getOriginalColumnGroup().getLeafColumns();\n // capture visible state, used when re-entering grid to dictate which columns should be visible\n var visibleState = {};\n allColumnsOriginalOrder.forEach(function (column) { return visibleState[column.getId()] = column.isVisible(); });\n var allColumnsCurrentOrder = [];\n this.columnController.getAllDisplayedColumns().forEach(function (column) {\n if (allColumnsOriginalOrder.indexOf(column) >= 0) {\n allColumnsCurrentOrder.push(column);\n utils_1._.removeFromArray(allColumnsOriginalOrder, column);\n }\n });\n // we are left with non-visible columns, stick these in at the end\n allColumnsOriginalOrder.forEach(function (column) { return allColumnsCurrentOrder.push(column); });\n // create and return dragItem\n return {\n columns: allColumnsCurrentOrder,\n visibleState: visibleState\n };\n };\n HeaderGroupWrapperComp.prototype.isSuppressMoving = function () {\n // if any child is fixed, then don't allow moving\n var childSuppressesMoving = false;\n this.columnGroup.getLeafColumns().forEach(function (column) {\n if (column.getColDef().suppressMovable || column.getColDef().lockPosition) {\n childSuppressesMoving = true;\n }\n });\n var result = childSuppressesMoving || this.gridOptionsWrapper.isSuppressMovableColumns();\n return result;\n };\n HeaderGroupWrapperComp.prototype.setupWidth = function () {\n // we need to listen to changes in child columns, as they impact our width\n this.addListenersToChildrenColumns();\n // the children belonging to this group can change, so we need to add and remove listeners as they change\n this.addDestroyableEventListener(this.columnGroup, columnGroup_1.ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED, this.onDisplayedChildrenChanged.bind(this));\n this.onWidthChanged();\n // the child listeners are not tied to this components life-cycle, as children can get added and removed\n // to the group - hence they are on a different life-cycle. so we must make sure the existing children\n // listeners are removed when we finally get destroyed\n this.addDestroyFunc(this.destroyListenersOnChildrenColumns.bind(this));\n };\n HeaderGroupWrapperComp.prototype.onDisplayedChildrenChanged = function () {\n this.addListenersToChildrenColumns();\n this.onWidthChanged();\n };\n HeaderGroupWrapperComp.prototype.addListenersToChildrenColumns = function () {\n var _this = this;\n // first destroy any old listeners\n this.destroyListenersOnChildrenColumns();\n // now add new listeners to the new set of children\n var widthChangedListener = this.onWidthChanged.bind(this);\n this.columnGroup.getLeafColumns().forEach(function (column) {\n column.addEventListener(column_1.Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n column.addEventListener(column_1.Column.EVENT_VISIBLE_CHANGED, widthChangedListener);\n _this.childColumnsDestroyFuncs.push(function () {\n column.removeEventListener(column_1.Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n column.removeEventListener(column_1.Column.EVENT_VISIBLE_CHANGED, widthChangedListener);\n });\n });\n };\n HeaderGroupWrapperComp.prototype.destroyListenersOnChildrenColumns = function () {\n this.childColumnsDestroyFuncs.forEach(function (func) { return func(); });\n this.childColumnsDestroyFuncs = [];\n };\n HeaderGroupWrapperComp.prototype.onWidthChanged = function () {\n this.getGui().style.width = this.columnGroup.getActualWidth() + 'px';\n };\n HeaderGroupWrapperComp.prototype.setupResize = function () {\n var _this = this;\n this.eHeaderCellResize = this.getRefElement('agResize');\n if (!this.columnGroup.isResizable()) {\n utils_1._.removeFromParent(this.eHeaderCellResize);\n return;\n }\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.eHeaderCellResize,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this, false),\n onResizeEnd: this.onResizing.bind(this, true)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n if (!this.gridOptionsWrapper.isSuppressAutoSize()) {\n this.eHeaderCellResize.addEventListener('dblclick', function (event) {\n // get list of all the column keys we are responsible for\n var keys = [];\n _this.columnGroup.getDisplayedLeafColumns().forEach(function (column) {\n // not all cols in the group may be participating with auto-resize\n if (!column.getColDef().suppressAutoSize) {\n keys.push(column.getColId());\n }\n });\n if (keys.length > 0) {\n _this.columnController.autoSizeColumns(keys, \"uiColumnResized\");\n }\n });\n }\n };\n HeaderGroupWrapperComp.prototype.onResizeStart = function (shiftKey) {\n var _this = this;\n var leafCols = this.columnGroup.getDisplayedLeafColumns();\n this.resizeCols = utils_1._.filter(leafCols, function (col) { return col.isResizable(); });\n this.resizeStartWidth = 0;\n this.resizeCols.forEach(function (col) { return _this.resizeStartWidth += col.getActualWidth(); });\n this.resizeRatios = [];\n this.resizeCols.forEach(function (col) { return _this.resizeRatios.push(col.getActualWidth() / _this.resizeStartWidth); });\n var takeFromGroup = null;\n if (shiftKey) {\n takeFromGroup = this.columnController.getDisplayedGroupAfter(this.columnGroup);\n }\n if (takeFromGroup) {\n var takeFromLeafCols = takeFromGroup.getDisplayedLeafColumns();\n this.resizeTakeFromCols = utils_1._.filter(takeFromLeafCols, function (col) { return col.isResizable(); });\n this.resizeTakeFromStartWidth = 0;\n this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromStartWidth += col.getActualWidth(); });\n this.resizeTakeFromRatios = [];\n this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromRatios.push(col.getActualWidth() / _this.resizeTakeFromStartWidth); });\n }\n else {\n this.resizeTakeFromCols = null;\n this.resizeTakeFromStartWidth = null;\n this.resizeTakeFromRatios = null;\n }\n utils_1._.addCssClass(this.getGui(), 'ag-column-resizing');\n };\n HeaderGroupWrapperComp.prototype.onResizing = function (finished, resizeAmount) {\n var resizeSets = [];\n var resizeAmountNormalised = this.normaliseDragChange(resizeAmount);\n resizeSets.push({\n columns: this.resizeCols,\n ratios: this.resizeRatios,\n width: this.resizeStartWidth + resizeAmountNormalised\n });\n if (this.resizeTakeFromCols) {\n resizeSets.push({\n columns: this.resizeTakeFromCols,\n ratios: this.resizeTakeFromRatios,\n width: this.resizeTakeFromStartWidth - resizeAmountNormalised\n });\n }\n this.columnController.resizeColumnSets(resizeSets, finished, 'uiColumnDragged');\n if (finished) {\n utils_1._.removeCssClass(this.getGui(), 'ag-column-resizing');\n }\n };\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderCell - should refactor out?\n HeaderGroupWrapperComp.prototype.normaliseDragChange = function (dragChange) {\n var result = dragChange;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (this.pinned !== column_1.Column.PINNED_LEFT) {\n result *= -1;\n }\n }\n else {\n // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n if (this.pinned === column_1.Column.PINNED_RIGHT) {\n result *= -1;\n }\n }\n return result;\n };\n HeaderGroupWrapperComp.TEMPLATE = '
' +\n '
' +\n '
';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], HeaderGroupWrapperComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], HeaderGroupWrapperComp.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('horizontalResizeService'),\n __metadata(\"design:type\", horizontalResizeService_1.HorizontalResizeService)\n ], HeaderGroupWrapperComp.prototype, \"horizontalResizeService\", void 0);\n __decorate([\n context_1.Autowired('dragAndDropService'),\n __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n ], HeaderGroupWrapperComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n context_1.Autowired('userComponentFactory'),\n __metadata(\"design:type\", userComponentFactory_1.UserComponentFactory)\n ], HeaderGroupWrapperComp.prototype, \"userComponentFactory\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], HeaderGroupWrapperComp.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], HeaderGroupWrapperComp.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('beans'),\n __metadata(\"design:type\", beans_1.Beans)\n ], HeaderGroupWrapperComp.prototype, \"beans\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], HeaderGroupWrapperComp.prototype, \"postConstruct\", null);\n return HeaderGroupWrapperComp;\n}(component_1.Component));\nexports.HeaderGroupWrapperComp = HeaderGroupWrapperComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar filterManager_1 = require(\"../filter/filterManager\");\nvar popupService_1 = require(\"../widgets/popupService\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar eventService_1 = require(\"../eventService\");\nvar utils_1 = require(\"../utils\");\nvar StandardMenuFactory = /** @class */ (function () {\n function StandardMenuFactory() {\n }\n StandardMenuFactory.prototype.hideActiveMenu = function () {\n if (this.hidePopup) {\n this.hidePopup();\n }\n };\n StandardMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent) {\n var _this = this;\n this.showPopup(column, function (eMenu) {\n _this.popupService.positionPopupUnderMouseEvent({\n column: column,\n type: 'columnMenu',\n mouseEvent: mouseEvent,\n ePopup: eMenu\n });\n });\n };\n StandardMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource) {\n var _this = this;\n this.showPopup(column, function (eMenu) {\n _this.popupService.positionPopupUnderComponent({\n type: 'columnMenu', eventSource: eventSource,\n ePopup: eMenu, keepWithinBounds: true, column: column\n });\n });\n };\n StandardMenuFactory.prototype.showPopup = function (column, positionCallback) {\n var _this = this;\n var filterWrapper = this.filterManager.getOrCreateFilterWrapper(column, 'COLUMN_MENU');\n var eMenu = document.createElement('div');\n utils_1._.addCssClass(eMenu, 'ag-menu');\n filterWrapper.guiPromise.promise.then(function (gui) {\n eMenu.appendChild(gui);\n });\n var hidePopup;\n var bodyScrollListener = function (event) {\n // if h scroll, popup is no longer over the column\n if (event.direction === 'horizontal') {\n hidePopup();\n }\n };\n this.eventService.addEventListener('bodyScroll', bodyScrollListener);\n var closedCallback = function () {\n _this.eventService.removeEventListener('bodyScroll', bodyScrollListener);\n column.setMenuVisible(false, \"contextMenu\");\n };\n // need to show filter before positioning, as only after filter\n // is visible can we find out what the width of it is\n hidePopup = this.popupService.addAsModalPopup(eMenu, true, closedCallback);\n positionCallback(eMenu);\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.afterGuiAttached) {\n var params = {\n hidePopup: hidePopup\n };\n filter.afterGuiAttached(params);\n }\n });\n this.hidePopup = hidePopup;\n column.setMenuVisible(true, \"contextMenu\");\n };\n StandardMenuFactory.prototype.isMenuEnabled = function (column) {\n // for standard, we show menu if filter is enabled, and he menu is not suppressed\n return column.isFilterAllowed();\n };\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], StandardMenuFactory.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('filterManager'),\n __metadata(\"design:type\", filterManager_1.FilterManager)\n ], StandardMenuFactory.prototype, \"filterManager\", void 0);\n __decorate([\n context_1.Autowired('popupService'),\n __metadata(\"design:type\", popupService_1.PopupService)\n ], StandardMenuFactory.prototype, \"popupService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], StandardMenuFactory.prototype, \"gridOptionsWrapper\", void 0);\n StandardMenuFactory = __decorate([\n context_1.Bean('menuFactory')\n ], StandardMenuFactory);\n return StandardMenuFactory;\n}());\nexports.StandardMenuFactory = StandardMenuFactory;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar context_1 = require(\"../../context/context\");\nvar column_1 = require(\"../../entities/column\");\nvar dragAndDropService_1 = require(\"../../dragAndDrop/dragAndDropService\");\nvar columnApi_1 = require(\"../../columnController/columnApi\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar horizontalResizeService_1 = require(\"../horizontalResizeService\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar cssClassApplier_1 = require(\"../cssClassApplier\");\nvar setLeftFeature_1 = require(\"../../rendering/features/setLeftFeature\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar sortController_1 = require(\"../../sortController\");\nvar eventService_1 = require(\"../../eventService\");\nvar userComponentFactory_1 = require(\"../../components/framework/userComponentFactory\");\nvar agCheckbox_1 = require(\"../../widgets/agCheckbox\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar selectAllFeature_1 = require(\"./selectAllFeature\");\nvar events_1 = require(\"../../events\");\nvar columnHoverService_1 = require(\"../../rendering/columnHoverService\");\nvar beans_1 = require(\"../../rendering/beans\");\nvar hoverFeature_1 = require(\"../hoverFeature\");\nvar touchListener_1 = require(\"../../widgets/touchListener\");\nvar utils_1 = require(\"../../utils\");\nvar HeaderWrapperComp = /** @class */ (function (_super) {\n __extends(HeaderWrapperComp, _super);\n function HeaderWrapperComp(column, dragSourceDropTarget, pinned) {\n var _this = _super.call(this, HeaderWrapperComp.TEMPLATE) || this;\n _this.column = column;\n _this.dragSourceDropTarget = dragSourceDropTarget;\n _this.pinned = pinned;\n return _this;\n }\n HeaderWrapperComp.prototype.getColumn = function () {\n return this.column;\n };\n HeaderWrapperComp.prototype.getComponentHolder = function () {\n return this.column.getColDef();\n };\n HeaderWrapperComp.prototype.init = function () {\n var colDef = this.getComponentHolder();\n var displayName = this.columnController.getDisplayNameForColumn(this.column, 'header', true);\n var enableSorting = colDef.sortable;\n var enableMenu = this.menuFactory.isMenuEnabled(this.column) && !colDef.suppressMenu;\n this.appendHeaderComp(displayName, enableSorting, enableMenu);\n this.setupWidth();\n this.setupMovingCss();\n this.setupTooltip();\n this.setupResize();\n this.setupMenuClass();\n this.setupSortableClass(enableSorting);\n this.addColumnHoverListener();\n this.addFeature(this.getContext(), new hoverFeature_1.HoverFeature([this.column], this.getGui()));\n this.addDestroyableEventListener(this.column, column_1.Column.EVENT_FILTER_ACTIVE_CHANGED, this.onFilterChanged.bind(this));\n this.onFilterChanged();\n this.addFeature(this.getContext(), new selectAllFeature_1.SelectAllFeature(this.cbSelectAll, this.column));\n var setLeftFeature = new setLeftFeature_1.SetLeftFeature(this.column, this.getGui(), this.beans);\n setLeftFeature.init();\n this.addDestroyFunc(setLeftFeature.destroy.bind(setLeftFeature));\n this.addAttributes();\n cssClassApplier_1.CssClassApplier.addHeaderClassesFromColDef(colDef, this.getGui(), this.gridOptionsWrapper, this.column, null);\n };\n HeaderWrapperComp.prototype.addColumnHoverListener = function () {\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_COLUMN_HOVER_CHANGED, this.onColumnHover.bind(this));\n this.onColumnHover();\n };\n HeaderWrapperComp.prototype.onColumnHover = function () {\n var isHovered = this.columnHoverService.isHovered(this.column);\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-column-hover', isHovered);\n };\n HeaderWrapperComp.prototype.setupSortableClass = function (enableSorting) {\n if (enableSorting) {\n var element = this.getGui();\n utils_1._.addCssClass(element, 'ag-header-cell-sortable');\n }\n };\n HeaderWrapperComp.prototype.onFilterChanged = function () {\n var filterPresent = this.column.isFilterActive();\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-filtered', filterPresent);\n };\n HeaderWrapperComp.prototype.appendHeaderComp = function (displayName, enableSorting, enableMenu) {\n var _this = this;\n var params = {\n column: this.column,\n displayName: displayName,\n enableSorting: enableSorting,\n enableMenu: enableMenu,\n showColumnMenu: function (source) {\n _this.gridApi.showColumnMenuAfterButtonClick(_this.column, source);\n },\n progressSort: function (multiSort) {\n _this.sortController.progressSort(_this.column, !!multiSort, \"uiColumnSorted\");\n },\n setSort: function (sort, multiSort) {\n _this.sortController.setSortForColumn(_this.column, sort, !!multiSort, \"uiColumnSorted\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext()\n };\n var callback = this.afterHeaderCompCreated.bind(this, displayName);\n this.userComponentFactory.newHeaderComponent(params).then(callback);\n };\n HeaderWrapperComp.prototype.afterHeaderCompCreated = function (displayName, headerComp) {\n this.appendChild(headerComp);\n this.setupMove(headerComp.getGui(), displayName);\n };\n HeaderWrapperComp.prototype.onColumnMovingChanged = function () {\n // this function adds or removes the moving css, based on if the col is moving.\n // this is what makes the header go dark when it is been moved (gives impression to\n // user that the column was picked up).\n if (this.column.isMoving()) {\n utils_1._.addCssClass(this.getGui(), 'ag-header-cell-moving');\n }\n else {\n utils_1._.removeCssClass(this.getGui(), 'ag-header-cell-moving');\n }\n };\n HeaderWrapperComp.prototype.setupMove = function (eHeaderCellLabel, displayName) {\n var _this = this;\n var suppressMove = this.gridOptionsWrapper.isSuppressMovableColumns()\n || this.getComponentHolder().suppressMovable\n || this.column.getColDef().lockPosition;\n if (suppressMove) {\n return;\n }\n if (eHeaderCellLabel) {\n var dragSource_1 = {\n type: dragAndDropService_1.DragSourceType.HeaderCell,\n eElement: eHeaderCellLabel,\n dragItemCallback: function () { return _this.createDragItem(); },\n dragItemName: displayName,\n dragSourceDropTarget: this.dragSourceDropTarget,\n dragStarted: function () { return _this.column.setMoving(true, \"uiColumnMoved\"); },\n dragStopped: function () { return _this.column.setMoving(false, \"uiColumnMoved\"); }\n };\n this.dragAndDropService.addDragSource(dragSource_1, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource_1); });\n }\n };\n HeaderWrapperComp.prototype.createDragItem = function () {\n var visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n };\n HeaderWrapperComp.prototype.setupResize = function () {\n var _this = this;\n var colDef = this.getComponentHolder();\n // if no eResize in template, do nothing\n if (!this.eResize) {\n return;\n }\n if (!this.column.isResizable()) {\n utils_1._.removeFromParent(this.eResize);\n return;\n }\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.eResize,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this, false),\n onResizeEnd: this.onResizing.bind(this, true)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n var weWantAutoSize = !this.gridOptionsWrapper.isSuppressAutoSize() && !colDef.suppressAutoSize;\n if (weWantAutoSize) {\n this.addDestroyableEventListener(this.eResize, 'dblclick', function () {\n _this.columnController.autoSizeColumn(_this.column, \"uiColumnResized\");\n });\n var touchListener = new touchListener_1.TouchListener(this.eResize);\n this.addDestroyableEventListener(touchListener, touchListener_1.TouchListener.EVENT_DOUBLE_TAP, function () {\n _this.columnController.autoSizeColumn(_this.column, \"uiColumnResized\");\n });\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n }\n };\n HeaderWrapperComp.prototype.onResizing = function (finished, resizeAmount) {\n var resizeAmountNormalised = this.normaliseResizeAmount(resizeAmount);\n var newWidth = this.resizeStartWidth + resizeAmountNormalised;\n this.columnController.setColumnWidth(this.column, newWidth, this.resizeWithShiftKey, finished, \"uiColumnDragged\");\n if (finished) {\n utils_1._.removeCssClass(this.getGui(), 'ag-column-resizing');\n }\n };\n HeaderWrapperComp.prototype.onResizeStart = function (shiftKey) {\n this.resizeStartWidth = this.column.getActualWidth();\n this.resizeWithShiftKey = shiftKey;\n utils_1._.addCssClass(this.getGui(), 'ag-column-resizing');\n };\n HeaderWrapperComp.prototype.getTooltipText = function () {\n var colDef = this.getComponentHolder();\n return colDef.headerTooltip;\n };\n HeaderWrapperComp.prototype.setupTooltip = function () {\n var tooltipText = this.getTooltipText();\n // add tooltip if exists\n if (tooltipText == null) {\n return;\n }\n if (this.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.getGui().setAttribute('title', tooltipText);\n }\n else {\n this.beans.tooltipManager.registerTooltip(this);\n }\n };\n HeaderWrapperComp.prototype.setupMovingCss = function () {\n this.addDestroyableEventListener(this.column, column_1.Column.EVENT_MOVING_CHANGED, this.onColumnMovingChanged.bind(this));\n this.onColumnMovingChanged();\n };\n HeaderWrapperComp.prototype.addAttributes = function () {\n this.getGui().setAttribute(\"col-id\", this.column.getColId());\n };\n HeaderWrapperComp.prototype.setupWidth = function () {\n this.addDestroyableEventListener(this.column, column_1.Column.EVENT_WIDTH_CHANGED, this.onColumnWidthChanged.bind(this));\n this.onColumnWidthChanged();\n };\n HeaderWrapperComp.prototype.setupMenuClass = function () {\n this.addDestroyableEventListener(this.column, column_1.Column.EVENT_MENU_VISIBLE_CHANGED, this.onMenuVisible.bind(this));\n this.onColumnWidthChanged();\n };\n HeaderWrapperComp.prototype.onMenuVisible = function () {\n this.addOrRemoveCssClass('ag-column-menu-visible', this.column.isMenuVisible());\n };\n HeaderWrapperComp.prototype.onColumnWidthChanged = function () {\n this.getGui().style.width = this.column.getActualWidth() + 'px';\n };\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderGroupCell - should refactor out?\n HeaderWrapperComp.prototype.normaliseResizeAmount = function (dragChange) {\n var result = dragChange;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (this.pinned !== column_1.Column.PINNED_LEFT) {\n result *= -1;\n }\n }\n else {\n // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n if (this.pinned === column_1.Column.PINNED_RIGHT) {\n result *= -1;\n }\n }\n return result;\n };\n HeaderWrapperComp.TEMPLATE = '
' +\n '
' +\n '' +\n // \n '
';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], HeaderWrapperComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('dragAndDropService'),\n __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n ], HeaderWrapperComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], HeaderWrapperComp.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('horizontalResizeService'),\n __metadata(\"design:type\", horizontalResizeService_1.HorizontalResizeService)\n ], HeaderWrapperComp.prototype, \"horizontalResizeService\", void 0);\n __decorate([\n context_1.Autowired('menuFactory'),\n __metadata(\"design:type\", Object)\n ], HeaderWrapperComp.prototype, \"menuFactory\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], HeaderWrapperComp.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], HeaderWrapperComp.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('sortController'),\n __metadata(\"design:type\", sortController_1.SortController)\n ], HeaderWrapperComp.prototype, \"sortController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], HeaderWrapperComp.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('userComponentFactory'),\n __metadata(\"design:type\", userComponentFactory_1.UserComponentFactory)\n ], HeaderWrapperComp.prototype, \"userComponentFactory\", void 0);\n __decorate([\n context_1.Autowired('columnHoverService'),\n __metadata(\"design:type\", columnHoverService_1.ColumnHoverService)\n ], HeaderWrapperComp.prototype, \"columnHoverService\", void 0);\n __decorate([\n context_1.Autowired('beans'),\n __metadata(\"design:type\", beans_1.Beans)\n ], HeaderWrapperComp.prototype, \"beans\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eResize'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderWrapperComp.prototype, \"eResize\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('cbSelectAll'),\n __metadata(\"design:type\", agCheckbox_1.AgCheckbox)\n ], HeaderWrapperComp.prototype, \"cbSelectAll\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], HeaderWrapperComp.prototype, \"init\", null);\n return HeaderWrapperComp;\n}(component_1.Component));\nexports.HeaderWrapperComp = HeaderWrapperComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CellRangeType;\n(function (CellRangeType) {\n CellRangeType[CellRangeType[\"VALUE\"] = 0] = \"VALUE\";\n CellRangeType[CellRangeType[\"DIMENSION\"] = 1] = \"DIMENSION\";\n})(CellRangeType = exports.CellRangeType || (exports.CellRangeType = {}));\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar VerticalStack = /** @class */ (function () {\n function VerticalStack() {\n this.isLayoutPanel = true;\n this.childPanels = [];\n this.eGui = document.createElement('div');\n this.eGui.style.height = '100%';\n }\n VerticalStack.prototype.addPanel = function (panel, height) {\n var component;\n if (panel.isLayoutPanel) {\n this.childPanels.push(panel);\n component = panel.getGui();\n }\n else {\n component = panel;\n }\n if (height) {\n component.style.height = height;\n }\n this.eGui.appendChild(component);\n };\n VerticalStack.prototype.getGui = function () {\n return this.eGui;\n };\n VerticalStack.prototype.doLayout = function () {\n for (var i = 0; i < this.childPanels.length; i++) {\n this.childPanels[i].doLayout();\n }\n };\n return VerticalStack;\n}());\nexports.VerticalStack = VerticalStack;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar logger_1 = require(\"../logger\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar column_1 = require(\"../entities/column\");\nvar utils_1 = require(\"../utils\");\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar MoveColumnController = /** @class */ (function () {\n function MoveColumnController(pinned, eContainer) {\n this.needToMoveLeft = false;\n this.needToMoveRight = false;\n this.pinned = pinned;\n this.eContainer = eContainer;\n this.centerContainer = !utils_1._.exists(pinned);\n }\n MoveColumnController.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n MoveColumnController.prototype.init = function () {\n this.logger = this.loggerFactory.create('MoveColumnController');\n };\n MoveColumnController.prototype.getIconName = function () {\n return this.pinned ? dragAndDropService_1.DragAndDropService.ICON_PINNED : dragAndDropService_1.DragAndDropService.ICON_MOVE;\n };\n MoveColumnController.prototype.onDragEnter = function (draggingEvent) {\n // we do dummy drag, so make sure column appears in the right location when first placed\n var columns = draggingEvent.dragItem.columns;\n var dragCameFromToolPanel = draggingEvent.dragSource.type === dragAndDropService_1.DragSourceType.ToolPanel;\n if (dragCameFromToolPanel) {\n // the if statement doesn't work if drag leaves grid, then enters again\n this.setColumnsVisible(columns, true, \"uiColumnDragged\");\n }\n else {\n // restore previous state of visible columns upon re-entering. this means if the user drags\n // a group out, and then drags the group back in, only columns that were originally visible\n // will be visible again. otherwise a group with three columns (but only two visible) could\n // be dragged out, then when it's dragged in again, all three are visible. this stops that.\n var visibleState_1 = draggingEvent.dragItem.visibleState;\n var visibleColumns = columns.filter(function (column) { return visibleState_1[column.getId()]; });\n this.setColumnsVisible(visibleColumns, true, \"uiColumnDragged\");\n }\n this.setColumnsPinned(columns, this.pinned, \"uiColumnDragged\");\n this.onDragging(draggingEvent, true);\n };\n MoveColumnController.prototype.onDragLeave = function (draggingEvent) {\n var hideColumnOnExit = !this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns() && !draggingEvent.fromNudge;\n if (hideColumnOnExit) {\n var dragItem = draggingEvent.dragSource.dragItemCallback();\n var columns = dragItem.columns;\n this.setColumnsVisible(columns, false, \"uiColumnDragged\");\n }\n this.ensureIntervalCleared();\n };\n MoveColumnController.prototype.setColumnsVisible = function (columns, visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.getColDef().lockVisible; });\n this.columnController.setColumnsVisible(allowedCols, visible, source);\n }\n };\n MoveColumnController.prototype.setColumnsPinned = function (columns, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.getColDef().lockPinned; });\n this.columnController.setColumnsPinned(allowedCols, pinned, source);\n }\n };\n MoveColumnController.prototype.onDragStop = function () {\n this.ensureIntervalCleared();\n };\n MoveColumnController.prototype.normaliseX = function (x) {\n // flip the coordinate if doing RTL\n var flipHorizontallyForRtl = this.gridOptionsWrapper.isEnableRtl();\n if (flipHorizontallyForRtl) {\n var clientWidth = this.eContainer.clientWidth;\n x = clientWidth - x;\n }\n // adjust for scroll only if centre container (the pinned containers dont scroll)\n var adjustForScroll = this.centerContainer;\n if (adjustForScroll) {\n x += this.gridPanel.getCenterViewportScrollLeft();\n }\n return x;\n };\n MoveColumnController.prototype.checkCenterForScrolling = function (xAdjustedForScroll) {\n if (this.centerContainer) {\n // scroll if the mouse has gone outside the grid (or just outside the scrollable part if pinning)\n // putting in 50 buffer, so even if user gets to edge of grid, a scroll will happen\n var firstVisiblePixel = this.gridPanel.getCenterViewportScrollLeft();\n var lastVisiblePixel = firstVisiblePixel + this.gridPanel.getCenterWidth();\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.needToMoveRight = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveLeft = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n else {\n this.needToMoveLeft = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveRight = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n if (this.needToMoveLeft || this.needToMoveRight) {\n this.ensureIntervalStarted();\n }\n else {\n this.ensureIntervalCleared();\n }\n }\n };\n MoveColumnController.prototype.onDragging = function (draggingEvent, fromEnter) {\n var _this = this;\n if (fromEnter === void 0) { fromEnter = false; }\n this.lastDraggingEvent = draggingEvent;\n // if moving up or down (ie not left or right) then do nothing\n if (utils_1._.missing(draggingEvent.hDirection)) {\n return;\n }\n var mouseXNormalised = this.normaliseX(draggingEvent.x);\n // if the user is dragging into the panel, ie coming from the side panel into the main grid,\n // we don't want to scroll the grid this time, it would appear like the table is jumping\n // each time a column is dragged in.\n if (!fromEnter) {\n this.checkCenterForScrolling(mouseXNormalised);\n }\n var hDirectionNormalised = this.normaliseDirection(draggingEvent.hDirection);\n var dragSourceType = draggingEvent.dragSource.type;\n var columnsToMove = draggingEvent.dragSource.dragItemCallback().columns;\n columnsToMove = columnsToMove.filter(function (col) {\n if (col.getColDef().lockPinned) {\n // if locked return true only if both col and container are same pin type.\n // double equals (==) here on purpose so that null==undefined is true (for not pinned options)\n return col.getPinned() == _this.pinned;\n }\n else {\n // if not pin locked, then always allowed to be in this container\n return true;\n }\n });\n this.attemptMoveColumns(dragSourceType, columnsToMove, hDirectionNormalised, mouseXNormalised, fromEnter);\n };\n MoveColumnController.prototype.normaliseDirection = function (hDirection) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n switch (hDirection) {\n case dragAndDropService_1.HDirection.Left: return dragAndDropService_1.HDirection.Right;\n case dragAndDropService_1.HDirection.Right: return dragAndDropService_1.HDirection.Left;\n default: console.error(\"ag-Grid: Unknown direction \" + hDirection);\n }\n }\n else {\n return hDirection;\n }\n };\n // returns the index of the first column in the list ONLY if the cols are all beside\n // each other. if the cols are not beside each other, then returns null\n MoveColumnController.prototype.calculateOldIndex = function (movingCols) {\n var gridCols = this.columnController.getAllGridColumns();\n var indexes = [];\n movingCols.forEach(function (col) { return indexes.push(gridCols.indexOf(col)); });\n utils_1._.sortNumberArray(indexes);\n var firstIndex = indexes[0];\n var lastIndex = utils_1._.last(indexes);\n var spread = lastIndex - firstIndex;\n var gapsExist = spread !== indexes.length - 1;\n return gapsExist ? null : firstIndex;\n };\n MoveColumnController.prototype.attemptMoveColumns = function (dragSourceType, allMovingColumns, hDirection, mouseX, fromEnter) {\n var draggingLeft = hDirection === dragAndDropService_1.HDirection.Left;\n var draggingRight = hDirection === dragAndDropService_1.HDirection.Right;\n var validMoves = this.calculateValidMoves(allMovingColumns, draggingRight, mouseX);\n // if cols are not adjacent, then this returns null. when moving, we constrain the direction of the move\n // (ie left or right) to the mouse direction. however\n var oldIndex = this.calculateOldIndex(allMovingColumns);\n if (validMoves.length === 0) {\n return;\n }\n var firstValidMove = validMoves[0];\n // the two check below stop an error when the user grabs a group my a middle column, then\n // it is possible the mouse pointer is to the right of a column while been dragged left.\n // so we need to make sure that the mouse pointer is actually left of the left most column\n // if moving left, and right of the right most column if moving right\n // we check 'fromEnter' below so we move the column to the new spot if the mouse is coming from\n // outside the grid, eg if the column is moving from side panel, mouse is moving left, then we should\n // place the column to the RHS even if the mouse is moving left and the column is already on\n // the LHS. otherwise we stick to the rule described above.\n var constrainDirection = oldIndex !== null && !fromEnter;\n // don't consider 'fromEnter' when dragging header cells, otherwise group can jump to opposite direction of drag\n if (dragSourceType == dragAndDropService_1.DragSourceType.HeaderCell) {\n constrainDirection = oldIndex !== null;\n }\n if (constrainDirection) {\n // only allow left drag if this column is moving left\n if (draggingLeft && firstValidMove >= oldIndex) {\n return;\n }\n // only allow right drag if this column is moving right\n if (draggingRight && firstValidMove <= oldIndex) {\n return;\n }\n }\n for (var i = 0; i < validMoves.length; i++) {\n var move = validMoves[i];\n if (!this.columnController.doesMovePassRules(allMovingColumns, move)) {\n continue;\n }\n this.columnController.moveColumns(allMovingColumns, move, \"uiColumnDragged\");\n // important to return here, so once we do the first valid move, we don't try do any more\n return;\n }\n };\n MoveColumnController.prototype.calculateValidMoves = function (movingCols, draggingRight, mouseX) {\n // this is the list of cols on the screen, so it's these we use when comparing the x mouse position\n var allDisplayedCols = this.columnController.getDisplayedColumns(this.pinned);\n // but this list is the list of all cols, when we move a col it's the index within this list that gets used,\n // so the result we return has to be and index location for this list\n var allGridCols = this.columnController.getAllGridColumns();\n var colIsMovingFunc = function (col) { return movingCols.indexOf(col) >= 0; };\n var colIsNotMovingFunc = function (col) { return movingCols.indexOf(col) < 0; };\n var movingDisplayedCols = allDisplayedCols.filter(colIsMovingFunc);\n var otherDisplayedCols = allDisplayedCols.filter(colIsNotMovingFunc);\n var otherGridCols = allGridCols.filter(colIsNotMovingFunc);\n // work out how many DISPLAYED columns fit before the 'x' position. this gives us the displayIndex.\n // for example, if cols are a,b,c,d and we find a,b fit before 'x', then we want to place the moving\n // col between b and c (so that it is under the mouse position).\n var displayIndex = 0;\n var availableWidth = mouseX;\n // if we are dragging right, then the columns will be to the left of the mouse, so we also want to\n // include the width of the moving columns\n if (draggingRight) {\n var widthOfMovingDisplayedCols_1 = 0;\n movingDisplayedCols.forEach(function (col) { return widthOfMovingDisplayedCols_1 += col.getActualWidth(); });\n availableWidth -= widthOfMovingDisplayedCols_1;\n }\n if (availableWidth > 0) {\n // now count how many of the displayed columns will fit to the left\n for (var i = 0; i < otherDisplayedCols.length; i++) {\n var col = otherDisplayedCols[i];\n availableWidth -= col.getActualWidth();\n if (availableWidth < 0) {\n break;\n }\n displayIndex++;\n }\n // trial and error, if going right, we adjust by one, i didn't manage to quantify why, but it works\n if (draggingRight) {\n displayIndex++;\n }\n }\n // the display index is with respect to all the showing columns, however when we move, it's with\n // respect to all grid columns, so we need to translate from display index to grid index\n var firstValidMove;\n if (displayIndex > 0) {\n var leftColumn = otherDisplayedCols[displayIndex - 1];\n firstValidMove = otherGridCols.indexOf(leftColumn) + 1;\n }\n else {\n firstValidMove = 0;\n }\n var validMoves = [firstValidMove];\n // add in other valid moves due to hidden columns and married children. for example, a particular\n // move might break a group that has married children (so move isn't valid), however there could\n // be hidden columns (not displayed) that we could jump over to make the move valid. because\n // they are hidden, user doesn't see any different, however it allows moves that would otherwise\n // not work. for example imagine a group with 9 columns and all columns are hidden except the\n // middle one (so 4 hidden to left, 4 hidden to right), then when moving 'firstValidMove' will\n // be relative to the not-shown column, however we need to consider the move jumping over all the\n // hidden children. if we didn't do this, then if the group just described was at the end (RHS) of the\n // grid, there would be no way to put a column after it (as the grid would only consider beside the\n // visible column, which would fail valid move rules).\n if (draggingRight) {\n // if dragging right, then we add all the additional moves to the right. so in other words\n // if the next move is not valid, find the next move to the right that is valid.\n var pointer = firstValidMove + 1;\n var lastIndex = allGridCols.length - 1;\n while (pointer <= lastIndex) {\n validMoves.push(pointer);\n pointer++;\n }\n }\n else {\n // if dragging left we do the reverse of dragging right, we add in all the valid moves to the\n // left. however we also have to consider moves to the right for all hidden columns first.\n // (this logic is hard to reason with, it was worked out with trial and error,\n // move observation rather than science).\n // add moves to the right\n var pointer = firstValidMove;\n var lastIndex = allGridCols.length - 1;\n var displacedCol = allGridCols[pointer];\n while (pointer <= lastIndex && this.isColumnHidden(allDisplayedCols, displacedCol)) {\n pointer++;\n validMoves.push(pointer);\n displacedCol = allGridCols[pointer];\n }\n // add moves to the left\n pointer = firstValidMove - 1;\n var firstDisplayIndex = 0;\n while (pointer >= firstDisplayIndex) {\n validMoves.push(pointer);\n pointer--;\n }\n }\n return validMoves;\n };\n // isHidden takes into account visible=false and group=closed, ie it is not displayed\n MoveColumnController.prototype.isColumnHidden = function (displayedColumns, col) {\n return displayedColumns.indexOf(col) < 0;\n };\n MoveColumnController.prototype.ensureIntervalStarted = function () {\n if (!this.movingIntervalId) {\n this.intervalCount = 0;\n this.failedMoveAttempts = 0;\n this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);\n if (this.needToMoveLeft) {\n this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_LEFT, true);\n }\n else {\n this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_RIGHT, true);\n }\n }\n };\n MoveColumnController.prototype.ensureIntervalCleared = function () {\n if (this.moveInterval) {\n window.clearInterval(this.movingIntervalId);\n this.movingIntervalId = null;\n this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_MOVE);\n }\n };\n MoveColumnController.prototype.moveInterval = function () {\n // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow\n // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.\n var pixelsToMove;\n this.intervalCount++;\n pixelsToMove = 10 + (this.intervalCount * 5);\n if (pixelsToMove > 100) {\n pixelsToMove = 100;\n }\n var pixelsMoved;\n if (this.needToMoveLeft) {\n pixelsMoved = this.gridPanel.scrollHorizontally(-pixelsToMove);\n }\n else if (this.needToMoveRight) {\n pixelsMoved = this.gridPanel.scrollHorizontally(pixelsToMove);\n }\n if (pixelsMoved !== 0) {\n this.onDragging(this.lastDraggingEvent);\n this.failedMoveAttempts = 0;\n }\n else {\n // we count the failed move attempts. if we fail to move 7 times, then we pin the column.\n // this is how we achieve pining by dragging the column to the edge of the grid.\n this.failedMoveAttempts++;\n var columns = this.lastDraggingEvent.dragItem.columns;\n var columnsThatCanPin = columns.filter(function (c) { return !c.getColDef().lockPinned; });\n if (columnsThatCanPin.length > 0) {\n this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_PINNED);\n if (this.failedMoveAttempts > 7) {\n var pinType = this.needToMoveLeft ? column_1.Column.PINNED_LEFT : column_1.Column.PINNED_RIGHT;\n this.setColumnsPinned(columnsThatCanPin, pinType, \"uiColumnDragged\");\n this.dragAndDropService.nudge();\n }\n }\n }\n };\n __decorate([\n context_1.Autowired('loggerFactory'),\n __metadata(\"design:type\", logger_1.LoggerFactory)\n ], MoveColumnController.prototype, \"loggerFactory\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], MoveColumnController.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('dragAndDropService'),\n __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n ], MoveColumnController.prototype, \"dragAndDropService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], MoveColumnController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], MoveColumnController.prototype, \"init\", null);\n return MoveColumnController;\n}());\nexports.MoveColumnController = MoveColumnController;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar BodyDropPivotTarget = /** @class */ (function () {\n function BodyDropPivotTarget(pinned) {\n this.columnsToAggregate = [];\n this.columnsToGroup = [];\n this.columnsToPivot = [];\n this.pinned = pinned;\n }\n /** Callback for when drag enters */\n BodyDropPivotTarget.prototype.onDragEnter = function (draggingEvent) {\n var _this = this;\n this.clearColumnsList();\n // in pivot mode, we don't accept any drops if functions are read only\n if (this.gridOptionsWrapper.isFunctionsReadOnly()) {\n return;\n }\n var dragColumns = draggingEvent.dragItem.columns;\n dragColumns.forEach(function (column) {\n // we don't allow adding secondary columns\n if (!column.isPrimary()) {\n return;\n }\n if (column.isAnyFunctionActive()) {\n return;\n }\n if (column.isAllowValue()) {\n _this.columnsToAggregate.push(column);\n }\n else if (column.isAllowRowGroup()) {\n _this.columnsToGroup.push(column);\n }\n else if (column.isAllowRowGroup()) {\n _this.columnsToPivot.push(column);\n }\n });\n };\n BodyDropPivotTarget.prototype.getIconName = function () {\n var totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;\n if (totalColumns > 0) {\n return this.pinned ? dragAndDropService_1.DragAndDropService.ICON_PINNED : dragAndDropService_1.DragAndDropService.ICON_MOVE;\n }\n else {\n return null;\n }\n };\n /** Callback for when drag leaves */\n BodyDropPivotTarget.prototype.onDragLeave = function (draggingEvent) {\n // if we are taking columns out of the center, then we remove them from the report\n this.clearColumnsList();\n };\n BodyDropPivotTarget.prototype.clearColumnsList = function () {\n this.columnsToAggregate.length = 0;\n this.columnsToGroup.length = 0;\n this.columnsToPivot.length = 0;\n };\n /** Callback for when dragging */\n BodyDropPivotTarget.prototype.onDragging = function (draggingEvent) {\n };\n /** Callback for when drag stops */\n BodyDropPivotTarget.prototype.onDragStop = function (draggingEvent) {\n if (this.columnsToAggregate.length > 0) {\n this.columnController.addValueColumns(this.columnsToAggregate, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToGroup.length > 0) {\n this.columnController.addRowGroupColumns(this.columnsToGroup, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToPivot.length > 0) {\n this.columnController.addPivotColumns(this.columnsToPivot, \"toolPanelDragAndDrop\");\n }\n };\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], BodyDropPivotTarget.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], BodyDropPivotTarget.prototype, \"gridOptionsWrapper\", void 0);\n return BodyDropPivotTarget;\n}());\nexports.BodyDropPivotTarget = BodyDropPivotTarget;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar TabbedLayout = /** @class */ (function () {\n function TabbedLayout(params) {\n var _this = this;\n this.items = [];\n this.params = params;\n this.eGui = document.createElement('div');\n this.eGui.innerHTML = TabbedLayout.TEMPLATE;\n this.eHeader = this.eGui.querySelector('[ref=\"tabHeader\"]');\n this.eBody = this.eGui.querySelector('[ref=\"tabBody\"]');\n utils_1._.addCssClass(this.eGui, params.cssClass);\n if (params.items) {\n params.items.forEach(function (item) { return _this.addItem(item); });\n }\n }\n TabbedLayout.prototype.setAfterAttachedParams = function (params) {\n this.afterAttachedParams = params;\n };\n TabbedLayout.prototype.getMinDimensions = function () {\n var eDummyContainer = this.eGui.cloneNode(true);\n var eDummyBody = eDummyContainer.querySelector('[ref=\"tabBody\"]');\n // position fixed, so it isn't restricted to the boundaries of the parent\n eDummyContainer.style.position = 'fixed';\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n this.eGui.appendChild(eDummyContainer);\n var minWidth = 0;\n var minHeight = 0;\n this.items.forEach(function (itemWrapper) {\n utils_1._.clearElement(eDummyBody);\n var eClone = itemWrapper.tabbedItem.bodyPromise.resolveNow(null, function (body) { return body.cloneNode(true); });\n if (eClone == null) {\n return;\n }\n eDummyBody.appendChild(eClone);\n if (minWidth < eDummyContainer.offsetWidth) {\n minWidth = eDummyContainer.offsetWidth;\n }\n if (minHeight < eDummyContainer.offsetHeight) {\n minHeight = eDummyContainer.offsetHeight;\n }\n });\n // finally check the parent tabs are no wider, as if they\n // are, then these are the min width and not the child tabs\n // if (minWidth 0) {\n this.showItemWrapper(this.items[0]);\n }\n };\n TabbedLayout.prototype.addItem = function (item) {\n var eHeaderButton = document.createElement('span');\n eHeaderButton.appendChild(item.title);\n utils_1._.addCssClass(eHeaderButton, 'ag-tab');\n this.eHeader.appendChild(eHeaderButton);\n var wrapper = {\n tabbedItem: item,\n eHeaderButton: eHeaderButton\n };\n this.items.push(wrapper);\n eHeaderButton.addEventListener('click', this.showItemWrapper.bind(this, wrapper));\n };\n TabbedLayout.prototype.showItem = function (tabbedItem) {\n var itemWrapper = utils_1._.find(this.items, function (wrapper) {\n return wrapper.tabbedItem === tabbedItem;\n });\n if (itemWrapper) {\n this.showItemWrapper(itemWrapper);\n }\n };\n TabbedLayout.prototype.showItemWrapper = function (wrapper) {\n var _this = this;\n if (this.params.onItemClicked) {\n this.params.onItemClicked({ item: wrapper.tabbedItem });\n }\n if (this.activeItem === wrapper) {\n utils_1._.callIfPresent(this.params.onActiveItemClicked);\n return;\n }\n utils_1._.clearElement(this.eBody);\n wrapper.tabbedItem.bodyPromise.then(function (body) {\n _this.eBody.appendChild(body);\n });\n if (this.activeItem) {\n utils_1._.removeCssClass(this.activeItem.eHeaderButton, 'ag-tab-selected');\n }\n utils_1._.addCssClass(wrapper.eHeaderButton, 'ag-tab-selected');\n this.activeItem = wrapper;\n if (wrapper.tabbedItem.afterAttachedCallback) {\n wrapper.tabbedItem.afterAttachedCallback(this.afterAttachedParams);\n }\n };\n TabbedLayout.prototype.getGui = function () {\n return this.eGui;\n };\n TabbedLayout.TEMPLATE = '
' +\n '
' +\n '
' +\n '
';\n return TabbedLayout;\n}());\nexports.TabbedLayout = TabbedLayout;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar column_1 = require(\"../../entities/column\");\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar sortController_1 = require(\"../../sortController\");\nvar touchListener_1 = require(\"../../widgets/touchListener\");\nvar eventService_1 = require(\"../../eventService\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar events_1 = require(\"../../events\");\nvar utils_1 = require(\"../../utils\");\nvar HeaderComp = /** @class */ (function (_super) {\n __extends(HeaderComp, _super);\n function HeaderComp() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastMovingChanged = 0;\n return _this;\n }\n HeaderComp.prototype.init = function (params) {\n var template = utils_1._.firstExistingValue(params.template, HeaderComp.TEMPLATE);\n // take account of any newlines & whitespace before/after the actual template\n template = template && template.trim ? template.trim() : template;\n this.setTemplate(template);\n this.params = params;\n this.setupTap();\n this.setupIcons(params.column);\n this.setupMenu();\n this.setupSort();\n this.setupFilterIcon();\n this.setupText(params.displayName);\n };\n HeaderComp.prototype.setupText = function (displayName) {\n var displayNameSanitised = utils_1._.escape(displayName);\n if (this.eText) {\n this.eText.innerHTML = displayNameSanitised;\n }\n };\n HeaderComp.prototype.setupIcons = function (column) {\n this.addInIcon('sortAscending', this.eSortAsc, column);\n this.addInIcon('sortDescending', this.eSortDesc, column);\n this.addInIcon('sortUnSort', this.eSortNone, column);\n this.addInIcon('menu', this.eMenu, column);\n this.addInIcon('filter', this.eFilter, column);\n };\n HeaderComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = utils_1._.createIconNoSpan(iconName, this.gridOptionsWrapper, column);\n eParent.appendChild(eIcon);\n };\n HeaderComp.prototype.setupTap = function () {\n var _this = this;\n var options = this.gridOptionsWrapper;\n if (options.isSuppressTouch()) {\n return;\n }\n var touchListener = new touchListener_1.TouchListener(this.getGui(), true);\n var suppressMenuHide = options.isSuppressMenuHide();\n var tapMenuButton = suppressMenuHide && utils_1._.exists(this.eMenu);\n var menuTouchListener = tapMenuButton ? new touchListener_1.TouchListener(this.eMenu, true) : touchListener;\n if (this.params.enableMenu) {\n var eventType = tapMenuButton ? 'EVENT_TAP' : 'EVENT_LONG_TAP';\n var showMenuFn = function (event) {\n options.getApi().showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);\n };\n this.addDestroyableEventListener(menuTouchListener, touchListener_1.TouchListener[eventType], showMenuFn);\n }\n if (this.params.enableSorting) {\n var tapListener = function (event) {\n var target = event.touchStart.target;\n // When suppressMenuHide is true, a tap on the menu icon will bubble up\n // to the header container, in that case we should not sort\n if (suppressMenuHide && _this.eMenu.contains(target)) {\n return;\n }\n _this.sortController.progressSort(_this.params.column, false, \"uiColumnSorted\");\n };\n this.addDestroyableEventListener(touchListener, touchListener_1.TouchListener.EVENT_TAP, tapListener);\n }\n // if tapMenuButton is true `touchListener` and `menuTouchListener` are different\n // so we need to make sure to destroy both listeners here\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n if (tapMenuButton) {\n this.addDestroyFunc(function () { return menuTouchListener.destroy(); });\n }\n };\n HeaderComp.prototype.setupMenu = function () {\n var _this = this;\n // if no menu provided in template, do nothing\n if (!this.eMenu) {\n return;\n }\n // we don't show the menu if on an iPad/iPhone, as the user cannot have a pointer device\n // Note: If suppressMenuHide is set to true the menu will be displayed, and if suppressMenuHide\n // is false (default) user will need to use longpress to display the menu.\n var suppressMenuHide = this.gridOptionsWrapper.isSuppressMenuHide();\n var hideShowMenu = !this.params.enableMenu || (utils_1._.isUserAgentIPad() && !suppressMenuHide);\n if (hideShowMenu) {\n utils_1._.removeFromParent(this.eMenu);\n return;\n }\n this.addDestroyableEventListener(this.eMenu, 'click', function () { return _this.showMenu(_this.eMenu); });\n if (!suppressMenuHide) {\n this.eMenu.style.opacity = '0';\n this.addGuiEventListener('mouseover', function () {\n _this.eMenu.style.opacity = '1';\n });\n this.addGuiEventListener('mouseout', function () {\n _this.eMenu.style.opacity = '0';\n });\n }\n var style = this.eMenu.style;\n style.transition = 'opacity 0.2s, border 0.2s';\n style['-webkit-transition'] = 'opacity 0.2s, border 0.2s';\n };\n HeaderComp.prototype.showMenu = function (eventSource) {\n this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource);\n };\n HeaderComp.prototype.removeSortIcons = function () {\n utils_1._.removeFromParent(this.eSortAsc);\n utils_1._.removeFromParent(this.eSortDesc);\n utils_1._.removeFromParent(this.eSortNone);\n utils_1._.removeFromParent(this.eSortOrder);\n };\n HeaderComp.prototype.setupSort = function () {\n var _this = this;\n var enableSorting = this.params.enableSorting;\n if (!enableSorting) {\n this.removeSortIcons();\n return;\n }\n var sortUsingCtrl = this.gridOptionsWrapper.isMultiSortKeyCtrl();\n // keep track of last time the moving changed flag was set\n this.addDestroyableEventListener(this.params.column, column_1.Column.EVENT_MOVING_CHANGED, function () {\n _this.lastMovingChanged = new Date().getTime();\n });\n // add the event on the header, so when clicked, we do sorting\n if (this.eLabel) {\n this.addDestroyableEventListener(this.eLabel, 'click', function (event) {\n // sometimes when moving a column via dragging, this was also firing a clicked event.\n // here is issue raised by user: https://ag-grid.zendesk.com/agent/tickets/1076\n // this check stops sort if a) column is moving or b) column moved less than 200ms ago (so caters for race condition)\n var moving = _this.params.column.isMoving();\n var nowTime = new Date().getTime();\n // typically there is <2ms if moving flag was set recently, as it would be done in same VM turn\n var movedRecently = (nowTime - _this.lastMovingChanged) < 50;\n var columnMoving = moving || movedRecently;\n if (!columnMoving) {\n var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;\n _this.params.progressSort(multiSort);\n }\n });\n }\n this.addDestroyableEventListener(this.params.column, column_1.Column.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.onSortChanged();\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_SORT_CHANGED, this.setMultiSortOrder.bind(this));\n this.setMultiSortOrder();\n };\n HeaderComp.prototype.onSortChanged = function () {\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-asc', this.params.column.isSortAscending());\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-desc', this.params.column.isSortDescending());\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-none', this.params.column.isSortNone());\n if (this.eSortAsc) {\n utils_1._.addOrRemoveCssClass(this.eSortAsc, 'ag-hidden', !this.params.column.isSortAscending());\n }\n if (this.eSortDesc) {\n utils_1._.addOrRemoveCssClass(this.eSortDesc, 'ag-hidden', !this.params.column.isSortDescending());\n }\n if (this.eSortNone) {\n var alwaysHideNoSort = !this.params.column.getColDef().unSortIcon && !this.gridOptionsWrapper.isUnSortIcon();\n utils_1._.addOrRemoveCssClass(this.eSortNone, 'ag-hidden', alwaysHideNoSort || !this.params.column.isSortNone());\n }\n };\n // we listen here for global sort events, NOT column sort events, as we want to do this\n // when sorting has been set on all column (if we listened just for our col (where we\n // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.\n HeaderComp.prototype.setMultiSortOrder = function () {\n if (!this.eSortOrder) {\n return;\n }\n var col = this.params.column;\n var allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();\n var indexThisCol = allColumnsWithSorting.indexOf(col);\n var moreThanOneColSorting = allColumnsWithSorting.length > 1;\n var showIndex = col.isSorting() && moreThanOneColSorting;\n utils_1._.setDisplayed(this.eSortOrder, showIndex);\n if (indexThisCol >= 0) {\n this.eSortOrder.innerHTML = (indexThisCol + 1).toString();\n }\n else {\n utils_1._.clearElement(this.eSortOrder);\n }\n };\n HeaderComp.prototype.setupFilterIcon = function () {\n if (!this.eFilter) {\n return;\n }\n this.addDestroyableEventListener(this.params.column, column_1.Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.onFilterChanged();\n };\n HeaderComp.prototype.onFilterChanged = function () {\n var filterPresent = this.params.column.isFilterActive();\n utils_1._.addOrRemoveCssClass(this.eFilter, 'ag-hidden', !filterPresent);\n };\n HeaderComp.TEMPLATE = '
' +\n ' ' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], HeaderComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('sortController'),\n __metadata(\"design:type\", sortController_1.SortController)\n ], HeaderComp.prototype, \"sortController\", void 0);\n __decorate([\n context_1.Autowired('menuFactory'),\n __metadata(\"design:type\", Object)\n ], HeaderComp.prototype, \"menuFactory\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], HeaderComp.prototype, \"eventService\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eFilter'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eFilter\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eSortAsc'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eSortAsc\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eSortDesc'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eSortDesc\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eSortNone'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eSortNone\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eSortOrder'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eSortOrder\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eMenu'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eMenu\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eLabel'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eLabel\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eText'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderComp.prototype, \"eText\", void 0);\n return HeaderComp;\n}(component_1.Component));\nexports.HeaderComp = HeaderComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar agCheckbox_1 = require(\"../../widgets/agCheckbox\");\nvar beanStub_1 = require(\"../../context/beanStub\");\nvar context_1 = require(\"../../context/context\");\nvar columnApi_1 = require(\"../../columnController/columnApi\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar events_1 = require(\"../../events\");\nvar eventService_1 = require(\"../../eventService\");\nvar constants_1 = require(\"../../constants\");\nvar selectionController_1 = require(\"../../selectionController\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar SelectAllFeature = /** @class */ (function (_super) {\n __extends(SelectAllFeature, _super);\n function SelectAllFeature(cbSelectAll, column) {\n var _this = _super.call(this) || this;\n _this.cbSelectAllVisible = false;\n _this.processingEventFromCheckbox = false;\n _this.cbSelectAll = cbSelectAll;\n _this.column = column;\n var colDef = column.getColDef();\n _this.filteredOnly = colDef ? !!colDef.headerCheckboxSelectionFilteredOnly : false;\n return _this;\n }\n SelectAllFeature.prototype.postConstruct = function () {\n this.showOrHideSelectAll();\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelectAll.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_SELECTION_CHANGED, this.onSelectionChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_MODEL_UPDATED, this.onModelChanged.bind(this));\n this.addDestroyableEventListener(this.cbSelectAll, agCheckbox_1.AgCheckbox.EVENT_CHANGED, this.onCbSelectAll.bind(this));\n };\n SelectAllFeature.prototype.showOrHideSelectAll = function () {\n this.cbSelectAllVisible = this.isCheckboxSelection();\n this.cbSelectAll.setDisplayed(this.cbSelectAllVisible);\n if (this.cbSelectAllVisible) {\n // in case user is trying this feature with the wrong model type\n this.checkRightRowModelType();\n // make sure checkbox is showing the right state\n this.updateStateOfCheckbox();\n }\n };\n SelectAllFeature.prototype.onModelChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.onSelectionChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.getNextCheckboxState = function (selectionCount) {\n if (selectionCount.selected === 0 && selectionCount.notSelected === 0) {\n // if no rows, always have it unselected\n return false;\n }\n else if (selectionCount.selected > 0 && selectionCount.notSelected > 0) {\n // if mix of selected and unselected, this is the tri-state\n return null;\n }\n else if (selectionCount.selected > 0) {\n // only selected\n return true;\n }\n else {\n // nothing selected\n return false;\n }\n };\n SelectAllFeature.prototype.updateStateOfCheckbox = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n this.processingEventFromCheckbox = true;\n var selectionCount = this.getSelectionCount();\n var allSelected = this.getNextCheckboxState(selectionCount);\n this.cbSelectAll.setValue(allSelected);\n this.processingEventFromCheckbox = false;\n };\n SelectAllFeature.prototype.getSelectionCount = function () {\n var _this = this;\n var selectedCount = 0;\n var notSelectedCount = 0;\n var callback = function (node) {\n if (_this.gridOptionsWrapper.isGroupSelectsChildren() && node.group) {\n return;\n }\n if (node.isSelected()) {\n selectedCount++;\n }\n else if (!node.selectable) {\n // don't count non-selectable nodes!\n }\n else {\n notSelectedCount++;\n }\n };\n if (this.filteredOnly) {\n this.gridApi.forEachNodeAfterFilter(callback);\n }\n else {\n this.gridApi.forEachNode(callback);\n }\n return {\n notSelected: notSelectedCount,\n selected: selectedCount\n };\n };\n SelectAllFeature.prototype.checkRightRowModelType = function () {\n var rowModelType = this.rowModel.getType();\n var rowModelMatches = rowModelType === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n if (!rowModelMatches) {\n console.warn(\"ag-Grid: selectAllCheckbox is only available if using normal row model, you are using \" + rowModelType);\n }\n };\n SelectAllFeature.prototype.onCbSelectAll = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n if (!this.cbSelectAllVisible) {\n return;\n }\n var value = this.cbSelectAll.getValue();\n if (value) {\n this.selectionController.selectAllRowNodes(this.filteredOnly);\n }\n else {\n this.selectionController.deselectAllRowNodes(this.filteredOnly);\n }\n };\n SelectAllFeature.prototype.isCheckboxSelection = function () {\n var result = this.column.getColDef().headerCheckboxSelection;\n if (typeof result === 'function') {\n var func = result;\n result = func({\n column: this.column,\n colDef: this.column.getColDef(),\n columnApi: this.columnApi,\n api: this.gridApi\n });\n }\n if (result) {\n if (this.gridOptionsWrapper.isRowModelServerSide()) {\n console.warn('headerCheckboxSelection is not supported for Server Side Row Model');\n return false;\n }\n if (this.gridOptionsWrapper.isRowModelInfinite()) {\n console.warn('headerCheckboxSelection is not supported for Infinite Row Model');\n return false;\n }\n if (this.gridOptionsWrapper.isRowModelViewport()) {\n console.warn('headerCheckboxSelection is not supported for Viewport Row Model');\n return false;\n }\n // otherwise the row model is compatible, so return true\n return true;\n }\n else {\n return false;\n }\n };\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], SelectAllFeature.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], SelectAllFeature.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], SelectAllFeature.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], SelectAllFeature.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('selectionController'),\n __metadata(\"design:type\", selectionController_1.SelectionController)\n ], SelectAllFeature.prototype, \"selectionController\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], SelectAllFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], SelectAllFeature.prototype, \"postConstruct\", null);\n return SelectAllFeature;\n}(beanStub_1.BeanStub));\nexports.SelectAllFeature = SelectAllFeature;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar column_1 = require(\"../entities/column\");\nvar context_1 = require(\"../context/context\");\nvar headerContainer_1 = require(\"./headerContainer\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar component_1 = require(\"../widgets/component\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar gridApi_1 = require(\"../gridApi\");\nvar autoWidthCalculator_1 = require(\"../rendering/autoWidthCalculator\");\nvar constants_1 = require(\"../constants\");\nvar utils_1 = require(\"../utils\");\nvar HeaderRootComp = /** @class */ (function (_super) {\n __extends(HeaderRootComp, _super);\n function HeaderRootComp() {\n return _super.call(this, HeaderRootComp.TEMPLATE) || this;\n }\n HeaderRootComp.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.childContainers.forEach(function (c) { return c.registerGridComp(gridPanel); });\n };\n HeaderRootComp.prototype.postConstruct = function () {\n var _this = this;\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n this.gridApi.registerHeaderRootComp(this);\n this.autoWidthCalculator.registerHeaderRootComp(this);\n var centerContainer = new headerContainer_1.HeaderContainer(this.eHeaderContainer, this.eHeaderViewport, null);\n var pinnedLeftContainer = new headerContainer_1.HeaderContainer(this.ePinnedLeftHeader, null, column_1.Column.PINNED_LEFT);\n var pinnedRightContainer = new headerContainer_1.HeaderContainer(this.ePinnedRightHeader, null, column_1.Column.PINNED_RIGHT);\n this.childContainers = [centerContainer, pinnedLeftContainer, pinnedRightContainer];\n this.childContainers.forEach(function (container) { return _this.getContext().wireBean(container); });\n // shotgun way to get labels to change, eg from sum(amount) to avg(amount)\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshHeader.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n // for setting ag-pivot-on / ag-pivot-off CSS classes\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n this.onPivotModeChanged();\n this.addPreventHeaderScroll();\n if (this.columnController.isReady()) {\n this.refreshHeader();\n }\n };\n HeaderRootComp.prototype.onDomLayoutChanged = function () {\n var newValue = this.gridOptionsWrapper.getDomLayout() === constants_1.Constants.DOM_LAYOUT_PRINT;\n if (this.printLayout !== newValue) {\n this.printLayout = newValue;\n this.refreshHeader();\n }\n };\n HeaderRootComp.prototype.setHorizontalScroll = function (offset) {\n this.eHeaderContainer.style.transform = \"translateX(\" + offset + \"px)\";\n };\n HeaderRootComp.prototype.forEachHeaderElement = function (callback) {\n this.childContainers.forEach(function (childContainer) { return childContainer.forEachHeaderElement(callback); });\n };\n HeaderRootComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.childContainers.forEach(function (container) { return container.destroy(); });\n };\n HeaderRootComp.prototype.refreshHeader = function () {\n this.childContainers.forEach(function (container) { return container.refresh(); });\n };\n HeaderRootComp.prototype.onPivotModeChanged = function () {\n var pivotMode = this.columnController.isPivotMode();\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-pivot-on', pivotMode);\n utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-pivot-off', !pivotMode);\n };\n HeaderRootComp.prototype.setHeight = function (height) {\n var px = height + \"px\";\n this.getGui().style.height = px;\n this.getGui().style.minHeight = px;\n };\n // if the user is in floating filter and hits tab a few times, the header can\n // end up scrolling to show items off the screen, leaving the grid and header\n // and the grid columns no longer in sync.\n HeaderRootComp.prototype.addPreventHeaderScroll = function () {\n var _this = this;\n this.addDestroyableEventListener(this.eHeaderViewport, 'scroll', function () {\n // if the header scrolls, the header will be out of sync. so we reset the\n // header scroll, and then scroll the body, which will in turn set the offset\n // on the header, giving the impression that the header scrolled as expected.\n var scrollLeft = _this.eHeaderViewport.scrollLeft;\n if (scrollLeft !== 0) {\n _this.gridPanel.scrollHorizontally(scrollLeft);\n _this.eHeaderViewport.scrollLeft = 0;\n }\n });\n };\n HeaderRootComp.prototype.setHeaderContainerWidth = function (width) {\n this.eHeaderContainer.style.width = width + \"px\";\n };\n HeaderRootComp.prototype.setLeftVisible = function (visible) {\n utils_1._.setDisplayed(this.ePinnedLeftHeader, visible);\n };\n HeaderRootComp.prototype.setRightVisible = function (visible) {\n utils_1._.setDisplayed(this.ePinnedRightHeader, visible);\n };\n HeaderRootComp.prototype.getHeaderRowCount = function () {\n if (this.childContainers.length === 0) {\n return 0;\n }\n return this.childContainers[0].getRowComps().length;\n };\n HeaderRootComp.TEMPLATE = \"
\\n
\\n
\\n
\\n
\\n
\\n
\";\n __decorate([\n componentAnnotations_1.RefSelector('ePinnedLeftHeader'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderRootComp.prototype, \"ePinnedLeftHeader\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('ePinnedRightHeader'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderRootComp.prototype, \"ePinnedRightHeader\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eHeaderContainer'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderRootComp.prototype, \"eHeaderContainer\", void 0);\n __decorate([\n componentAnnotations_1.RefSelector('eHeaderViewport'),\n __metadata(\"design:type\", HTMLElement)\n ], HeaderRootComp.prototype, \"eHeaderViewport\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], HeaderRootComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], HeaderRootComp.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], HeaderRootComp.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], HeaderRootComp.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('autoWidthCalculator'),\n __metadata(\"design:type\", autoWidthCalculator_1.AutoWidthCalculator)\n ], HeaderRootComp.prototype, \"autoWidthCalculator\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], HeaderRootComp.prototype, \"postConstruct\", null);\n return HeaderRootComp;\n}(component_1.Component));\nexports.HeaderRootComp = HeaderRootComp;\n","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v21.2.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar beanStub_1 = require(\"../context/beanStub\");\nvar context_1 = require(\"../context/context\");\nvar columnHoverService_1 = require(\"../rendering/columnHoverService\");\nvar HoverFeature = /** @class */ (function (_super) {\n __extends(HoverFeature, _super);\n function HoverFeature(columns, element) {\n var _this = _super.call(this) || this;\n _this.columns = columns;\n _this.element = element;\n return _this;\n }\n HoverFeature.prototype.postConstruct = function () {\n this.addMouseHoverListeners();\n };\n HoverFeature.prototype.addMouseHoverListeners = function () {\n this.addDestroyableEventListener(this.element, 'mouseout', this.onMouseOut.bind(this));\n this.addDestroyableEventListener(this.element, 'mouseover', this.onMouseOver.bind(this));\n };\n HoverFeature.prototype.onMouseOut = function () {\n this.columnHoverService.clearMouseOver();\n };\n HoverFeature.prototype.onMouseOver = function () {\n this.columnHoverService.setMouseOver(this.columns);\n };\n __decorate([\n context_1.Autowired('columnHoverService'),\n __metadata(\"design:type\", columnHoverService_1.ColumnHoverService)\n ], HoverFeature.prototype, \"columnHoverService\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], HoverFeature.prototype, \"postConstruct\", null);\n return HoverFeature;\n}(beanStub_1.BeanStub));\nexports.HoverFeature = HoverFeature;\n"],"sourceRoot":""}