{"version":3,"file":"7079.js","sources":["webpack://frontend/./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/aggregationStage.js","webpack://frontend/./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/groupStage.js","webpack://frontend/./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/pivotColDefService.js","webpack://frontend/./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/pivotStage.js","webpack://frontend/./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/aggFuncService.js","webpack://frontend/./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/columnDropZones/dropZoneColumnComp.js","webpack://frontend/./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/columnDropZones/baseDropZonePanel.js","webpack://frontend/./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/columnDropZones/rowGroupDropZonePanel.js","webpack://frontend/./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/columnDropZones/pivotDropZonePanel.js","webpack://frontend/./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/columnDropZones/gridHeaderDropZones.js","webpack://frontend/./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/filterAggregatesStage.js","webpack://frontend/./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/columnDropZones/valueDropZonePanel.js","webpack://frontend/./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/batchRemover.js","webpack://frontend/./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGroupingModule.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, BeanStub, Autowired, _ } from \"@ag-grid-community/core\";\nvar AggregationStage = /** @class */ (function (_super) {\n __extends(AggregationStage, _super);\n function AggregationStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // it's possible to recompute the aggregate without doing the other parts\n // + gridApi.recomputeAggregates()\n AggregationStage.prototype.execute = function (params) {\n // if changed path is active, it means we came from a) change detection or b) transaction update.\n // for both of these, if no value columns are present, it means there is nothing to aggregate now\n // and there is no cleanup to be done (as value columns don't change between transactions or change\n // detections). if no value columns and no changed path, means we have to go through all nodes in\n // case we need to clean up agg data from before.\n var noValueColumns = _.missingOrEmpty(this.columnModel.getValueColumns());\n var noUserAgg = !this.gridOptionsWrapper.getGroupRowAggFunc();\n var changedPathActive = params.changedPath && params.changedPath.isActive();\n if (noValueColumns && noUserAgg && changedPathActive) {\n return;\n }\n var aggDetails = this.createAggDetails(params);\n this.recursivelyCreateAggData(aggDetails);\n };\n AggregationStage.prototype.createAggDetails = function (params) {\n var pivotActive = this.columnModel.isPivotActive();\n var measureColumns = this.columnModel.getValueColumns();\n var pivotColumns = pivotActive ? this.columnModel.getPivotColumns() : [];\n var aggDetails = {\n changedPath: params.changedPath,\n valueColumns: measureColumns,\n pivotColumns: pivotColumns\n };\n return aggDetails;\n };\n AggregationStage.prototype.recursivelyCreateAggData = function (aggDetails) {\n var _this = this;\n // update prop, in case changed since last time\n this.filteredOnly = !this.gridOptionsWrapper.isSuppressAggFilteredOnly();\n var callback = function (rowNode) {\n var hasNoChildren = !rowNode.hasChildren();\n if (hasNoChildren) {\n // this check is needed for TreeData, in case the node is no longer a child,\n // but it was a child previously.\n if (rowNode.aggData) {\n rowNode.setAggData(null);\n }\n // never agg data for leaf nodes\n return;\n }\n //Optionally prevent the aggregation at the root Node\n //https://ag-grid.atlassian.net/browse/AG-388\n var isRootNode = rowNode.level === -1;\n if (isRootNode) {\n var notPivoting = !_this.columnModel.isPivotMode();\n var suppressAggAtRootLevel = _this.gridOptionsWrapper.isSuppressAggAtRootLevel();\n if (suppressAggAtRootLevel && notPivoting) {\n return;\n }\n }\n _this.aggregateRowNode(rowNode, aggDetails);\n };\n aggDetails.changedPath.forEachChangedNodeDepthFirst(callback, true);\n };\n AggregationStage.prototype.aggregateRowNode = function (rowNode, aggDetails) {\n var measureColumnsMissing = aggDetails.valueColumns.length === 0;\n var pivotColumnsMissing = aggDetails.pivotColumns.length === 0;\n var userFunc = this.gridOptionsWrapper.getGroupRowAggFunc();\n var aggResult;\n if (userFunc) {\n var params = { nodes: rowNode.childrenAfterFilter };\n aggResult = userFunc(params);\n }\n else if (measureColumnsMissing) {\n aggResult = null;\n }\n else if (pivotColumnsMissing) {\n aggResult = this.aggregateRowNodeUsingValuesOnly(rowNode, aggDetails);\n }\n else {\n aggResult = this.aggregateRowNodeUsingValuesAndPivot(rowNode);\n }\n rowNode.setAggData(aggResult);\n // if we are grouping, then it's possible there is a sibling footer\n // to the group, so update the data here also if there is one\n if (rowNode.sibling) {\n rowNode.sibling.setAggData(aggResult);\n }\n };\n AggregationStage.prototype.aggregateRowNodeUsingValuesAndPivot = function (rowNode) {\n var _this = this;\n var result = {};\n var pivotColumnDefs = this.pivotStage.getPivotColumnDefs();\n // Step 1: process value columns\n pivotColumnDefs\n .filter(function (v) { return !_.exists(v.pivotTotalColumnIds); }) // only process pivot value columns\n .forEach(function (valueColDef) {\n var keys = valueColDef.pivotKeys || [];\n var values;\n var valueColumn = valueColDef.pivotValueColumn;\n var colId = valueColDef.colId;\n if (rowNode.leafGroup) {\n // lowest level group, get the values from the mapped set\n values = _this.getValuesFromMappedSet(rowNode.childrenMapped, keys, valueColumn);\n }\n else {\n // value columns and pivot columns, non-leaf group\n values = _this.getValuesPivotNonLeaf(rowNode, colId);\n }\n result[colId] = _this.aggregateValues(values, valueColumn.getAggFunc(), valueColumn, rowNode);\n });\n // Step 2: process total columns\n pivotColumnDefs\n .filter(function (v) { return _.exists(v.pivotTotalColumnIds); }) // only process pivot total columns\n .forEach(function (totalColDef) {\n var aggResults = [];\n var pivotValueColumn = totalColDef.pivotValueColumn, pivotTotalColumnIds = totalColDef.pivotTotalColumnIds, colId = totalColDef.colId;\n //retrieve results for colIds associated with this pivot total column\n if (!pivotTotalColumnIds || !pivotTotalColumnIds.length) {\n return;\n }\n pivotTotalColumnIds.forEach(function (currentColId) {\n aggResults.push(result[currentColId]);\n });\n result[colId] = _this.aggregateValues(aggResults, pivotValueColumn.getAggFunc(), pivotValueColumn, rowNode);\n });\n return result;\n };\n AggregationStage.prototype.aggregateRowNodeUsingValuesOnly = function (rowNode, aggDetails) {\n var _this = this;\n var result = {};\n var changedValueColumns = aggDetails.changedPath.isActive() ?\n aggDetails.changedPath.getValueColumnsForNode(rowNode, aggDetails.valueColumns)\n : aggDetails.valueColumns;\n var notChangedValueColumns = aggDetails.changedPath.isActive() ?\n aggDetails.changedPath.getNotValueColumnsForNode(rowNode, aggDetails.valueColumns)\n : null;\n var values2d = this.getValuesNormal(rowNode, changedValueColumns);\n var oldValues = rowNode.aggData;\n changedValueColumns.forEach(function (valueColumn, index) {\n result[valueColumn.getId()] = _this.aggregateValues(values2d[index], valueColumn.getAggFunc(), valueColumn, rowNode);\n });\n if (notChangedValueColumns && oldValues) {\n notChangedValueColumns.forEach(function (valueColumn) {\n result[valueColumn.getId()] = oldValues[valueColumn.getId()];\n });\n }\n return result;\n };\n AggregationStage.prototype.getValuesPivotNonLeaf = function (rowNode, colId) {\n var values = [];\n rowNode.childrenAfterFilter.forEach(function (node) {\n var value = node.aggData[colId];\n values.push(value);\n });\n return values;\n };\n AggregationStage.prototype.getValuesFromMappedSet = function (mappedSet, keys, valueColumn) {\n var _this = this;\n var mapPointer = mappedSet;\n keys.forEach(function (key) { return (mapPointer = mapPointer ? mapPointer[key] : null); });\n if (!mapPointer) {\n return [];\n }\n var values = [];\n mapPointer.forEach(function (rowNode) {\n var value = _this.valueService.getValue(valueColumn, rowNode);\n values.push(value);\n });\n return values;\n };\n AggregationStage.prototype.getValuesNormal = function (rowNode, valueColumns) {\n // create 2d array, of all values for all valueColumns\n var values = [];\n valueColumns.forEach(function () { return values.push([]); });\n var valueColumnCount = valueColumns.length;\n var nodeList = this.filteredOnly ? rowNode.childrenAfterFilter : rowNode.childrenAfterGroup;\n var rowCount = nodeList.length;\n for (var i = 0; i < rowCount; i++) {\n var childNode = nodeList[i];\n for (var j = 0; j < valueColumnCount; j++) {\n var valueColumn = valueColumns[j];\n // if the row is a group, then it will only have an agg result value,\n // which means valueGetter is never used.\n var value = this.valueService.getValue(valueColumn, childNode);\n values[j].push(value);\n }\n }\n return values;\n };\n AggregationStage.prototype.aggregateValues = function (values, aggFuncOrString, column, rowNode) {\n var aggFunc = typeof aggFuncOrString === 'string' ?\n this.aggFuncService.getAggFunc(aggFuncOrString) :\n aggFuncOrString;\n if (typeof aggFunc !== 'function') {\n console.error(\"AG Grid: unrecognised aggregation function \" + aggFuncOrString);\n return null;\n }\n var deprecationWarning = function () {\n _.doOnce(function () {\n console.warn('AG Grid: since v24.0, custom aggregation functions take a params object. Please alter your aggregation function to use params.values');\n }, 'aggregationStage.aggregateValues Deprecation');\n };\n var aggFuncAny = aggFunc;\n var params = {\n values: values,\n column: column,\n colDef: column ? column.getColDef() : undefined,\n rowNode: rowNode,\n data: rowNode ? rowNode.data : undefined,\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext(),\n }; // the \"as any\" is needed to allow the deprecation warning messages\n return aggFuncAny(params);\n };\n __decorate([\n Autowired('columnModel')\n ], AggregationStage.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('valueService')\n ], AggregationStage.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('pivotStage')\n ], AggregationStage.prototype, \"pivotStage\", void 0);\n __decorate([\n Autowired('aggFuncService')\n ], AggregationStage.prototype, \"aggFuncService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], AggregationStage.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], AggregationStage.prototype, \"columnApi\", void 0);\n AggregationStage = __decorate([\n Bean('aggregationStage')\n ], AggregationStage);\n return AggregationStage;\n}(BeanStub));\nexport { AggregationStage };\n","var __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 __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { _, Autowired, Bean, BeanStub, NumberSequence, PostConstruct, RowNode } from \"@ag-grid-community/core\";\nimport { BatchRemover } from \"./batchRemover\";\nvar GroupStage = /** @class */ (function (_super) {\n __extends(GroupStage, _super);\n function GroupStage() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // we use a sequence variable so that each time we do a grouping, we don't\n // reuse the ids - otherwise the rowRenderer will confuse rowNodes between redraws\n // when it tries to animate between rows.\n _this.groupIdSequence = new NumberSequence();\n return _this;\n }\n GroupStage.prototype.postConstruct = function () {\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n if (this.usingTreeData) {\n this.getDataPath = this.gridOptionsWrapper.getDataPathFunc();\n }\n };\n GroupStage.prototype.execute = function (params) {\n var details = this.createGroupingDetails(params);\n if (details.transactions) {\n this.handleTransaction(details);\n }\n else {\n var afterColsChanged = params.afterColumnsChanged === true;\n this.shotgunResetEverything(details, afterColsChanged);\n }\n this.positionLeafsAboveGroups(params.changedPath);\n this.orderGroups(details.rootNode);\n this.selectableService.updateSelectableAfterGrouping(details.rootNode);\n };\n GroupStage.prototype.positionLeafsAboveGroups = function (changedPath) {\n // we don't do group sorting for tree data\n if (this.usingTreeData) {\n return;\n }\n changedPath.forEachChangedNodeDepthFirst(function (group) {\n if (group.childrenAfterGroup) {\n var leafNodes_1 = [];\n var groupNodes_1 = [];\n group.childrenAfterGroup.forEach(function (row) {\n var _a;\n if (!((_a = row.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {\n leafNodes_1.push(row);\n }\n else {\n groupNodes_1.push(row);\n }\n });\n group.childrenAfterGroup = __spread(leafNodes_1, groupNodes_1);\n }\n }, false);\n };\n GroupStage.prototype.createGroupingDetails = function (params) {\n var rowNode = params.rowNode, changedPath = params.changedPath, rowNodeTransactions = params.rowNodeTransactions, rowNodeOrder = params.rowNodeOrder;\n var groupedCols = this.usingTreeData ? null : this.columnModel.getRowGroupColumns();\n var details = {\n // someone complained that the parent attribute was causing some change detection\n // to break is some angular add-on - which i never used. taking the parent out breaks\n // a cyclic dependency, hence this flag got introduced.\n includeParents: !this.gridOptionsWrapper.isSuppressParentsInRowNodes(),\n expandByDefault: this.gridOptionsWrapper.getGroupDefaultExpanded(),\n groupedCols: groupedCols,\n rootNode: rowNode,\n pivotMode: this.columnModel.isPivotMode(),\n groupedColCount: this.usingTreeData || !groupedCols ? 0 : groupedCols.length,\n rowNodeOrder: rowNodeOrder,\n transactions: rowNodeTransactions,\n // if no transaction, then it's shotgun, changed path would be 'not active' at this point anyway\n changedPath: changedPath\n };\n return details;\n };\n GroupStage.prototype.handleTransaction = function (details) {\n var _this = this;\n details.transactions.forEach(function (tran) {\n // we don't allow batch remover for tree data as tree data uses Filler Nodes,\n // and creating/deleting filler nodes needs to be done alongside the node deleting\n // and moving. if we want to Batch Remover working with tree data then would need\n // to consider how Filler Nodes would be impacted (it's possible that it can be easily\n // modified to work, however for now I don't have the brain energy to work it all out).\n var batchRemover = !_this.usingTreeData ? new BatchRemover() : undefined;\n // the order here of [add, remove, update] needs to be the same as in ClientSideNodeManager,\n // as the order is important when a record with the same id is added and removed in the same\n // transaction.\n if (_.existsAndNotEmpty(tran.remove)) {\n _this.removeNodes(tran.remove, details, batchRemover);\n }\n if (_.existsAndNotEmpty(tran.update)) {\n _this.moveNodesInWrongPath(tran.update, details, batchRemover);\n }\n if (_.existsAndNotEmpty(tran.add)) {\n _this.insertNodes(tran.add, details, false);\n }\n // must flush here, and not allow another transaction to be applied,\n // as each transaction must finish leaving the data in a consistent state.\n if (batchRemover) {\n var parentsWithChildrenRemoved = batchRemover.getAllParents().slice();\n batchRemover.flush();\n _this.removeEmptyGroups(parentsWithChildrenRemoved, details);\n }\n });\n if (details.rowNodeOrder) {\n this.sortChildren(details);\n }\n };\n // this is used when doing delta updates, eg Redux, keeps nodes in right order\n GroupStage.prototype.sortChildren = function (details) {\n details.changedPath.forEachChangedNodeDepthFirst(function (node) {\n if (!node.childrenAfterGroup) {\n return;\n }\n var didSort = _.sortRowNodesByOrder(node.childrenAfterGroup, details.rowNodeOrder);\n if (didSort) {\n details.changedPath.addParentNode(node);\n }\n }, false, true);\n };\n GroupStage.prototype.orderGroups = function (rootNode) {\n // we don't do group sorting for tree data\n if (this.usingTreeData) {\n return;\n }\n var comparator = this.gridOptionsWrapper.getInitialGroupOrderComparator();\n if (_.exists(comparator)) {\n recursiveSort(rootNode);\n }\n function recursiveSort(rowNode) {\n var doSort = _.exists(rowNode.childrenAfterGroup) &&\n // we only want to sort groups, so we do not sort leafs (a leaf group has leafs as children)\n !rowNode.leafGroup;\n if (doSort) {\n rowNode.childrenAfterGroup.sort(function (nodeA, nodeB) { return comparator({ nodeA: nodeA, nodeB: nodeB }); });\n rowNode.childrenAfterGroup.forEach(function (childNode) { return recursiveSort(childNode); });\n }\n }\n };\n GroupStage.prototype.getExistingPathForNode = function (node, details) {\n var res = [];\n // when doing tree data, the node is part of the path,\n // but when doing grid grouping, the node is not part of the path so we start with the parent.\n var pointer = this.usingTreeData ? node : node.parent;\n while (pointer && pointer !== details.rootNode) {\n res.push({\n key: pointer.key,\n rowGroupColumn: pointer.rowGroupColumn,\n field: pointer.field\n });\n pointer = pointer.parent;\n }\n res.reverse();\n return res;\n };\n GroupStage.prototype.moveNodesInWrongPath = function (childNodes, details, batchRemover) {\n var _this = this;\n childNodes.forEach(function (childNode) {\n // we add node, even if parent has not changed, as the data could have\n // changed, hence aggregations will be wrong\n if (details.changedPath.isActive()) {\n details.changedPath.addParentNode(childNode.parent);\n }\n var infoToKeyMapper = function (item) { return item.key; };\n var oldPath = _this.getExistingPathForNode(childNode, details).map(infoToKeyMapper);\n var newPath = _this.getGroupInfo(childNode, details).map(infoToKeyMapper);\n var nodeInCorrectPath = _.areEqual(oldPath, newPath);\n if (!nodeInCorrectPath) {\n _this.moveNode(childNode, details, batchRemover);\n }\n });\n };\n GroupStage.prototype.moveNode = function (childNode, details, batchRemover) {\n this.removeNodesInStages([childNode], details, batchRemover);\n this.insertOneNode(childNode, details, true);\n // hack - if we didn't do this, then renaming a tree item (ie changing rowNode.key) wouldn't get\n // refreshed into the gui.\n // this is needed to kick off the event that rowComp listens to for refresh. this in turn\n // then will get each cell in the row to refresh - which is what we need as we don't know which\n // columns will be displaying the rowNode.key info.\n childNode.setData(childNode.data);\n // we add both old and new parents to changed path, as both will need to be refreshed.\n // we already added the old parent (in calling method), so just add the new parent here\n if (details.changedPath.isActive()) {\n var newParent = childNode.parent;\n details.changedPath.addParentNode(newParent);\n }\n };\n GroupStage.prototype.removeNodes = function (leafRowNodes, details, batchRemover) {\n this.removeNodesInStages(leafRowNodes, details, batchRemover);\n if (details.changedPath.isActive()) {\n leafRowNodes.forEach(function (rowNode) { return details.changedPath.addParentNode(rowNode.parent); });\n }\n };\n GroupStage.prototype.removeNodesInStages = function (leafRowNodes, details, batchRemover) {\n this.removeNodesFromParents(leafRowNodes, details, batchRemover);\n if (this.usingTreeData) {\n this.postRemoveCreateFillerNodes(leafRowNodes, details);\n // When not TreeData, then removeEmptyGroups is called just before the BatchRemover is flushed.\n // However for TreeData, there is no BatchRemover, so we have to call removeEmptyGroups here.\n var nodeParents = leafRowNodes.map(function (n) { return n.parent; });\n this.removeEmptyGroups(nodeParents, details);\n }\n };\n GroupStage.prototype.forEachParentGroup = function (details, group, callback) {\n var pointer = group;\n while (pointer && pointer !== details.rootNode) {\n callback(pointer);\n pointer = pointer.parent;\n }\n };\n GroupStage.prototype.removeNodesFromParents = function (nodesToRemove, details, provided) {\n var _this = this;\n // this method can be called with BatchRemover as optional. if it is missed, we created a local version\n // and flush it at the end. if one is provided, we add to the provided one and it gets flushed elsewhere.\n var batchRemoverIsLocal = provided == null;\n var batchRemoverToUse = provided ? provided : new BatchRemover();\n nodesToRemove.forEach(function (nodeToRemove) {\n _this.removeFromParent(nodeToRemove, batchRemoverToUse);\n // remove from allLeafChildren. we clear down all parents EXCEPT the Root Node, as\n // the ClientSideNodeManager is responsible for the Root Node.\n _this.forEachParentGroup(details, nodeToRemove.parent, function (parentNode) {\n batchRemoverToUse.removeFromAllLeafChildren(parentNode, nodeToRemove);\n });\n });\n if (batchRemoverIsLocal) {\n batchRemoverToUse.flush();\n }\n };\n GroupStage.prototype.postRemoveCreateFillerNodes = function (nodesToRemove, details) {\n var _this = this;\n nodesToRemove.forEach(function (nodeToRemove) {\n // if not group, and children are present, need to move children to a group.\n // otherwise if no children, we can just remove without replacing.\n var replaceWithGroup = nodeToRemove.hasChildren();\n if (replaceWithGroup) {\n var oldPath = _this.getExistingPathForNode(nodeToRemove, details);\n // because we just removed the userGroup, this will always return new support group\n var newGroupNode_1 = _this.findParentForNode(nodeToRemove, oldPath, details);\n // these properties are the ones that will be incorrect in the newly created group,\n // so copy them from the old childNode\n newGroupNode_1.expanded = nodeToRemove.expanded;\n newGroupNode_1.allLeafChildren = nodeToRemove.allLeafChildren;\n newGroupNode_1.childrenAfterGroup = nodeToRemove.childrenAfterGroup;\n newGroupNode_1.childrenMapped = nodeToRemove.childrenMapped;\n newGroupNode_1.updateHasChildren();\n newGroupNode_1.childrenAfterGroup.forEach(function (rowNode) { return rowNode.parent = newGroupNode_1; });\n }\n });\n };\n GroupStage.prototype.removeEmptyGroups = function (possibleEmptyGroups, details) {\n var _this = this;\n // we do this multiple times, as when we remove groups, that means the parent of just removed\n // group can then be empty. to get around this, if we remove, then we check everything again for\n // newly emptied groups. the max number of times this will execute is the depth of the group tree.\n var checkAgain = true;\n var groupShouldBeRemoved = function (rowNode) {\n // because of the while loop below, it's possible we already moved the node,\n // so double check before trying to remove again.\n var mapKey = _this.getChildrenMappedKey(rowNode.key, rowNode.rowGroupColumn);\n var parentRowNode = rowNode.parent;\n var groupAlreadyRemoved = (parentRowNode && parentRowNode.childrenMapped) ?\n !parentRowNode.childrenMapped[mapKey] : true;\n if (groupAlreadyRemoved) {\n // if not linked, then group was already removed\n return false;\n }\n // if still not removed, then we remove if this group is empty\n return !!rowNode.isEmptyRowGroupNode();\n };\n var _loop_1 = function () {\n checkAgain = false;\n var batchRemover = new BatchRemover();\n possibleEmptyGroups.forEach(function (possibleEmptyGroup) {\n // remove empty groups\n _this.forEachParentGroup(details, possibleEmptyGroup, function (rowNode) {\n if (groupShouldBeRemoved(rowNode)) {\n checkAgain = true;\n _this.removeFromParent(rowNode, batchRemover);\n // we remove selection on filler nodes here, as the selection would not be removed\n // from the RowNodeManager, as filler nodes don't exist on the RowNodeManager\n rowNode.setSelected(false);\n }\n });\n });\n batchRemover.flush();\n };\n while (checkAgain) {\n _loop_1();\n }\n };\n // removes the node from the parent by:\n // a) removing from childrenAfterGroup (using batchRemover if present, otherwise immediately)\n // b) removing from childrenMapped (immediately)\n // c) setRowTop(null) - as the rowRenderer uses this to know the RowNode is no longer needed\n // d) setRowIndex(null) - as the rowNode will no longer be displayed.\n GroupStage.prototype.removeFromParent = function (child, batchRemover) {\n if (child.parent) {\n if (batchRemover) {\n batchRemover.removeFromChildrenAfterGroup(child.parent, child);\n }\n else {\n _.removeFromArray(child.parent.childrenAfterGroup, child);\n child.parent.updateHasChildren();\n }\n }\n var mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);\n if (child.parent && child.parent.childrenMapped) {\n child.parent.childrenMapped[mapKey] = undefined;\n }\n // this is important for transition, see rowComp removeFirstPassFuncs. when doing animation and\n // remove, if rowTop is still present, the rowComp thinks it's just moved position.\n child.setRowTop(null);\n child.setRowIndex(null);\n };\n GroupStage.prototype.addToParent = function (child, parent) {\n var mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);\n if (parent) {\n var children = parent.childrenMapped != null;\n if (children) {\n parent.childrenMapped[mapKey] = child;\n }\n parent.childrenAfterGroup.push(child);\n parent.updateHasChildren();\n }\n };\n GroupStage.prototype.areGroupColsEqual = function (d1, d2) {\n if (d1 == null || d2 == null || d1.pivotMode !== d2.pivotMode) {\n return false;\n }\n return _.areEqual(d1.groupedCols, d2.groupedCols);\n };\n GroupStage.prototype.checkAllGroupDataAfterColsChanged = function (details) {\n var _this = this;\n var recurse = function (rowNodes) {\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var isLeafNode = !_this.usingTreeData && !rowNode.group;\n if (isLeafNode) {\n return;\n }\n var groupInfo = {\n field: rowNode.field,\n key: rowNode.key,\n rowGroupColumn: rowNode.rowGroupColumn\n };\n _this.setGroupData(rowNode, groupInfo);\n recurse(rowNode.childrenAfterGroup);\n });\n };\n recurse(details.rootNode.childrenAfterGroup);\n };\n GroupStage.prototype.shotgunResetEverything = function (details, afterColumnsChanged) {\n if (this.noChangeInGroupingColumns(details, afterColumnsChanged)) {\n return;\n }\n // groups are about to get disposed, so need to deselect any that are selected\n this.selectionService.removeGroupsFromSelection();\n var rootNode = details.rootNode, groupedCols = details.groupedCols;\n // because we are not creating the root node each time, we have the logic\n // here to change leafGroup once.\n // we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting\n // isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.\n rootNode.leafGroup = this.usingTreeData ? false : groupedCols.length === 0;\n // we are doing everything from scratch, so reset childrenAfterGroup and childrenMapped from the rootNode\n rootNode.childrenAfterGroup = [];\n rootNode.childrenMapped = {};\n rootNode.updateHasChildren();\n var sibling = rootNode.sibling;\n if (sibling) {\n sibling.childrenAfterGroup = rootNode.childrenAfterGroup;\n sibling.childrenMapped = rootNode.childrenMapped;\n }\n this.insertNodes(rootNode.allLeafChildren, details, false);\n };\n GroupStage.prototype.noChangeInGroupingColumns = function (details, afterColumnsChanged) {\n var noFurtherProcessingNeeded = false;\n var groupDisplayColumns = this.columnModel.getGroupDisplayColumns();\n var newGroupDisplayColIds = groupDisplayColumns ?\n groupDisplayColumns.map(function (c) { return c.getId(); }).join('-') : '';\n if (afterColumnsChanged) {\n // we only need to redo grouping if doing normal grouping (ie not tree data)\n // and the group cols have changed.\n noFurtherProcessingNeeded = this.usingTreeData || this.areGroupColsEqual(details, this.oldGroupingDetails);\n // if the group display cols have changed, then we need to update rowNode.groupData\n // (regardless of tree data or row grouping)\n if (this.oldGroupDisplayColIds !== newGroupDisplayColIds) {\n this.checkAllGroupDataAfterColsChanged(details);\n }\n }\n this.oldGroupingDetails = details;\n this.oldGroupDisplayColIds = newGroupDisplayColIds;\n return noFurtherProcessingNeeded;\n };\n GroupStage.prototype.insertNodes = function (newRowNodes, details, isMove) {\n var _this = this;\n newRowNodes.forEach(function (rowNode) {\n _this.insertOneNode(rowNode, details, isMove);\n if (details.changedPath.isActive()) {\n details.changedPath.addParentNode(rowNode.parent);\n }\n });\n };\n GroupStage.prototype.insertOneNode = function (childNode, details, isMove) {\n var path = this.getGroupInfo(childNode, details);\n var parentGroup = this.findParentForNode(childNode, path, details);\n if (!parentGroup.group) {\n console.warn(\"AG Grid: duplicate group keys for row data, keys should be unique\", [parentGroup.data, childNode.data]);\n }\n if (this.usingTreeData) {\n this.swapGroupWithUserNode(parentGroup, childNode, isMove);\n }\n else {\n childNode.parent = parentGroup;\n childNode.level = path.length;\n parentGroup.childrenAfterGroup.push(childNode);\n parentGroup.updateHasChildren();\n }\n };\n GroupStage.prototype.findParentForNode = function (childNode, path, details) {\n var _this = this;\n var nextNode = details.rootNode;\n path.forEach(function (groupInfo, level) {\n nextNode = _this.getOrCreateNextNode(nextNode, groupInfo, level, details);\n // node gets added to all group nodes.\n // note: we do not add to rootNode here, as the rootNode is the master list of rowNodes\n nextNode.allLeafChildren.push(childNode);\n });\n return nextNode;\n };\n GroupStage.prototype.swapGroupWithUserNode = function (fillerGroup, userGroup, isMove) {\n userGroup.parent = fillerGroup.parent;\n userGroup.key = fillerGroup.key;\n userGroup.field = fillerGroup.field;\n userGroup.groupData = fillerGroup.groupData;\n userGroup.level = fillerGroup.level;\n // AG-3441 - preserve the existing expanded status of the node if we're moving it, so that\n // you can drag a sub tree from one parent to another without changing its expansion\n if (!isMove) {\n userGroup.expanded = fillerGroup.expanded;\n }\n // we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting\n // isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.\n userGroup.leafGroup = fillerGroup.leafGroup;\n // always null for userGroups, as row grouping is not allowed when doing tree data\n userGroup.rowGroupIndex = fillerGroup.rowGroupIndex;\n userGroup.allLeafChildren = fillerGroup.allLeafChildren;\n userGroup.childrenAfterGroup = fillerGroup.childrenAfterGroup;\n userGroup.childrenMapped = fillerGroup.childrenMapped;\n userGroup.updateHasChildren();\n this.removeFromParent(fillerGroup);\n userGroup.childrenAfterGroup.forEach(function (rowNode) { return rowNode.parent = userGroup; });\n this.addToParent(userGroup, fillerGroup.parent);\n };\n GroupStage.prototype.getOrCreateNextNode = function (parentGroup, groupInfo, level, details) {\n var key = this.getChildrenMappedKey(groupInfo.key, groupInfo.rowGroupColumn);\n var nextNode = parentGroup.childrenMapped ? parentGroup.childrenMapped[key] : undefined;\n if (!nextNode) {\n nextNode = this.createGroup(groupInfo, parentGroup, level, details);\n // attach the new group to the parent\n this.addToParent(nextNode, parentGroup);\n }\n return nextNode;\n };\n GroupStage.prototype.createGroup = function (groupInfo, parent, level, details) {\n var groupNode = new RowNode(this.beans);\n groupNode.group = true;\n groupNode.field = groupInfo.field;\n groupNode.rowGroupColumn = groupInfo.rowGroupColumn;\n this.setGroupData(groupNode, groupInfo);\n // we put 'row-group-' before the group id, so it doesn't clash with standard row id's. we also use 't-' and 'b-'\n // for top pinned and bottom pinned rows.\n groupNode.id = RowNode.ID_PREFIX_ROW_GROUP + this.groupIdSequence.next();\n groupNode.key = groupInfo.key;\n groupNode.level = level;\n groupNode.leafGroup = this.usingTreeData ? false : level === (details.groupedColCount - 1);\n groupNode.allLeafChildren = [];\n // why is this done here? we are not updating the children count as we go,\n // i suspect this is updated in the filter stage\n groupNode.setAllChildrenCount(0);\n groupNode.rowGroupIndex = this.usingTreeData ? null : level;\n groupNode.childrenAfterGroup = [];\n groupNode.childrenMapped = {};\n groupNode.updateHasChildren();\n groupNode.parent = details.includeParents ? parent : null;\n this.setExpandedInitialValue(details, groupNode);\n return groupNode;\n };\n GroupStage.prototype.setGroupData = function (groupNode, groupInfo) {\n var _this = this;\n groupNode.groupData = {};\n var groupDisplayCols = this.columnModel.getGroupDisplayColumns();\n groupDisplayCols.forEach(function (col) {\n // newGroup.rowGroupColumn=null when working off GroupInfo, and we always display the group in the group column\n // if rowGroupColumn is present, then it's grid row grouping and we only include if configuration says so\n var displayGroupForCol = _this.usingTreeData || (groupNode.rowGroupColumn ? col.isRowGroupDisplayed(groupNode.rowGroupColumn.getId()) : false);\n if (displayGroupForCol) {\n groupNode.groupData[col.getColId()] = groupInfo.key;\n }\n });\n };\n GroupStage.prototype.getChildrenMappedKey = function (key, rowGroupColumn) {\n if (rowGroupColumn) {\n // grouping by columns\n return rowGroupColumn.getId() + '-' + key;\n }\n // tree data - we don't have rowGroupColumns\n return key;\n };\n GroupStage.prototype.setExpandedInitialValue = function (details, groupNode) {\n // if pivoting the leaf group is never expanded as we do not show leaf rows\n if (details.pivotMode && groupNode.leafGroup) {\n groupNode.expanded = false;\n return;\n }\n // use callback if exists\n var userCallback = this.gridOptionsWrapper.getIsGroupOpenByDefaultFunc();\n if (userCallback) {\n var params = {\n rowNode: groupNode,\n field: groupNode.field,\n key: groupNode.key,\n level: groupNode.level,\n rowGroupColumn: groupNode.rowGroupColumn\n };\n groupNode.expanded = userCallback(params) == true;\n return;\n }\n // use expandByDefault if exists\n var expandByDefault = details.expandByDefault;\n if (details.expandByDefault === -1) {\n groupNode.expanded = true;\n return;\n }\n // otherwise\n groupNode.expanded = groupNode.level < expandByDefault;\n };\n GroupStage.prototype.getGroupInfo = function (rowNode, details) {\n if (this.usingTreeData) {\n return this.getGroupInfoFromCallback(rowNode);\n }\n return this.getGroupInfoFromGroupColumns(rowNode, details);\n };\n GroupStage.prototype.getGroupInfoFromCallback = function (rowNode) {\n var keys = this.getDataPath ? this.getDataPath(rowNode.data) : null;\n if (keys === null || keys === undefined || keys.length === 0) {\n _.doOnce(function () { return console.warn(\"AG Grid: getDataPath() should not return an empty path for data\", rowNode.data); }, 'groupStage.getGroupInfoFromCallback');\n }\n var groupInfoMapper = function (key) { return ({ key: key, field: null, rowGroupColumn: null }); };\n return keys ? keys.map(groupInfoMapper) : [];\n };\n GroupStage.prototype.getGroupInfoFromGroupColumns = function (rowNode, details) {\n var _this = this;\n var res = [];\n details.groupedCols.forEach(function (groupCol) {\n var key = _this.valueService.getKeyForNode(groupCol, rowNode);\n var keyExists = key !== null && key !== undefined;\n // unbalanced tree and pivot mode don't work together - not because of the grid, it doesn't make\n // mathematical sense as you are building up a cube. so if pivot mode, we put in a blank key where missing.\n // this keeps the tree balanced and hence can be represented as a group.\n if (details.pivotMode && !keyExists) {\n key = ' ';\n keyExists = true;\n }\n if (keyExists) {\n var item = {\n key: key,\n field: groupCol.getColDef().field,\n rowGroupColumn: groupCol\n };\n res.push(item);\n }\n });\n return res;\n };\n __decorate([\n Autowired('columnModel')\n ], GroupStage.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('selectableService')\n ], GroupStage.prototype, \"selectableService\", void 0);\n __decorate([\n Autowired('valueService')\n ], GroupStage.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('beans')\n ], GroupStage.prototype, \"beans\", void 0);\n __decorate([\n Autowired('selectionService')\n ], GroupStage.prototype, \"selectionService\", void 0);\n __decorate([\n PostConstruct\n ], GroupStage.prototype, \"postConstruct\", null);\n GroupStage = __decorate([\n Bean('groupStage')\n ], GroupStage);\n return GroupStage;\n}(BeanStub));\nexport { GroupStage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\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 __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Autowired, Bean, BeanStub, _ } from \"@ag-grid-community/core\";\nvar PivotColDefService = /** @class */ (function (_super) {\n __extends(PivotColDefService, _super);\n function PivotColDefService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PivotColDefService_1 = PivotColDefService;\n PivotColDefService.prototype.createPivotColumnDefs = function (uniqueValues) {\n // this is passed to the columnModel, to configure the columns and groups we show\n var pivotColumns = this.columnModel.getPivotColumns();\n var valueColumns = this.columnModel.getValueColumns();\n var levelsDeep = pivotColumns.length;\n var pivotColumnGroupDefs = this.recursiveBuildGroup(0, uniqueValues, [], levelsDeep, pivotColumns);\n function extractColDefs(input, arr) {\n if (arr === void 0) { arr = []; }\n input.forEach(function (def) {\n if (def.children !== undefined) {\n extractColDefs(def.children, arr);\n }\n else {\n arr.push(def);\n }\n });\n return arr;\n }\n var pivotColumnDefs = extractColDefs(pivotColumnGroupDefs);\n // additional columns that contain the aggregated total for each value column per row\n this.addRowGroupTotals(pivotColumnGroupDefs, pivotColumnDefs, valueColumns);\n // additional group columns that contain child totals for each collapsed child column / group\n this.addExpandablePivotGroups(pivotColumnGroupDefs, pivotColumnDefs);\n // additional group columns that contain an aggregated total across all child columns\n this.addPivotTotalsToGroups(pivotColumnGroupDefs, pivotColumnDefs);\n // we clone, so the colDefs in pivotColumnsGroupDefs and pivotColumnDefs are not shared. this is so that\n // any changes the user makes (via processSecondaryColumnDefinitions) don't impact the internal aggregations,\n // as these use the col defs also\n var pivotColumnDefsClone = pivotColumnDefs.map(function (colDef) { return _.cloneObject(colDef); });\n return {\n pivotColumnGroupDefs: pivotColumnGroupDefs,\n pivotColumnDefs: pivotColumnDefsClone\n };\n };\n PivotColDefService.prototype.recursiveBuildGroup = function (index, uniqueValue, pivotKeys, maxDepth, primaryPivotColumns) {\n var _this = this;\n var measureColumns = this.columnModel.getValueColumns();\n if (index >= maxDepth) { // Base case - build the measure columns\n return this.buildMeasureCols(pivotKeys);\n }\n // sort by either user provided comparator, or our own one\n var primaryPivotColumnDefs = primaryPivotColumns[index].getColDef();\n var comparator = this.headerNameComparator.bind(this, primaryPivotColumnDefs.pivotComparator);\n // Base case for the compact layout, instead of recursing build the last layer of groups as measure columns instead\n if (measureColumns.length === 1 && this.gridOptionsWrapper.isRemovePivotHeaderRowWhenSingleValueColumn() && index === maxDepth - 1) {\n var leafCols_1 = [];\n _.iterateObject(uniqueValue, function (key) {\n var newPivotKeys = __spread(pivotKeys, [key]);\n leafCols_1.push(__assign(__assign({}, _this.createColDef(measureColumns[0], key, newPivotKeys)), { columnGroupShow: 'open' }));\n });\n leafCols_1.sort(comparator);\n return leafCols_1;\n }\n // Recursive case\n var groups = [];\n _.iterateObject(uniqueValue, function (key, value) {\n var newPivotKeys = __spread(pivotKeys, [key]);\n groups.push({\n children: _this.recursiveBuildGroup(index + 1, value, newPivotKeys, maxDepth, primaryPivotColumns),\n headerName: key,\n pivotKeys: newPivotKeys,\n columnGroupShow: 'open',\n groupId: _this.generateColumnGroupId(newPivotKeys),\n });\n });\n groups.sort(comparator);\n return groups;\n };\n PivotColDefService.prototype.buildMeasureCols = function (pivotKeys) {\n var _this = this;\n var measureColumns = this.columnModel.getValueColumns();\n if (measureColumns.length === 0) {\n // if no value columns selected, then we insert one blank column, so the user at least sees columns\n // rendered. otherwise the grid would render with no columns (just empty groups) which would give the\n // impression that the grid is broken\n return [this.createColDef(null, '-', pivotKeys)];\n }\n return measureColumns.map(function (measureCol) {\n var columnName = _this.columnModel.getDisplayNameForColumn(measureCol, 'header');\n return __assign(__assign({}, _this.createColDef(measureCol, columnName, pivotKeys)), { columnGroupShow: 'open' });\n });\n };\n ;\n PivotColDefService.prototype.addExpandablePivotGroups = function (pivotColumnGroupDefs, pivotColumnDefs) {\n var _this = this;\n if (this.gridOptionsWrapper.isSuppressExpandablePivotGroups() ||\n this.gridOptionsWrapper.getPivotColumnGroupTotals()) {\n return;\n }\n var recursivelyAddSubTotals = function (groupDef, currentPivotColumnDefs, acc) {\n var group = groupDef;\n if (group.children) {\n var childAcc_1 = new Map();\n group.children.forEach(function (grp) {\n recursivelyAddSubTotals(grp, currentPivotColumnDefs, childAcc_1);\n });\n var firstGroup_1 = !group.children.some(function (child) { return child.children; });\n _this.columnModel.getValueColumns().forEach(function (valueColumn) {\n var columnName = _this.columnModel.getDisplayNameForColumn(valueColumn, 'header');\n var totalColDef = _this.createColDef(valueColumn, columnName, groupDef.pivotKeys);\n totalColDef.pivotTotalColumnIds = childAcc_1.get(valueColumn.getColId());\n totalColDef.columnGroupShow = 'closed';\n totalColDef.aggFunc = valueColumn.getAggFunc();\n if (!firstGroup_1) {\n // add total colDef to group and pivot colDefs array\n var children = groupDef.children;\n children.push(totalColDef);\n currentPivotColumnDefs.push(totalColDef);\n }\n });\n _this.merge(acc, childAcc_1);\n }\n else {\n var def = groupDef;\n // check that value column exists, i.e. aggFunc is supplied\n if (!def.pivotValueColumn) {\n return;\n }\n var pivotValueColId = def.pivotValueColumn.getColId();\n var arr = acc.has(pivotValueColId) ? acc.get(pivotValueColId) : [];\n arr.push(def.colId);\n acc.set(pivotValueColId, arr);\n }\n };\n pivotColumnGroupDefs.forEach(function (groupDef) {\n recursivelyAddSubTotals(groupDef, pivotColumnDefs, new Map());\n });\n };\n PivotColDefService.prototype.addPivotTotalsToGroups = function (pivotColumnGroupDefs, pivotColumnDefs) {\n var _this = this;\n if (!this.gridOptionsWrapper.getPivotColumnGroupTotals()) {\n return;\n }\n var insertAfter = this.gridOptionsWrapper.getPivotColumnGroupTotals() === 'after';\n var valueCols = this.columnModel.getValueColumns();\n var aggFuncs = valueCols.map(function (valueCol) { return valueCol.getAggFunc(); });\n // don't add pivot totals if there is less than 1 aggFunc or they are not all the same\n if (!aggFuncs || aggFuncs.length < 1 || !this.sameAggFuncs(aggFuncs)) {\n // console.warn('AG Grid: aborting adding pivot total columns - value columns require same aggFunc');\n return;\n }\n // arbitrarily select a value column to use as a template for pivot columns\n var valueColumn = valueCols[0];\n pivotColumnGroupDefs.forEach(function (groupDef) {\n _this.recursivelyAddPivotTotal(groupDef, pivotColumnDefs, valueColumn, insertAfter);\n });\n };\n PivotColDefService.prototype.recursivelyAddPivotTotal = function (groupDef, pivotColumnDefs, valueColumn, insertAfter) {\n var _this = this;\n var group = groupDef;\n if (!group.children) {\n var def = groupDef;\n return def.colId ? [def.colId] : null;\n }\n var colIds = [];\n // need to recurse children first to obtain colIds used in the aggregation stage\n group.children\n .forEach(function (grp) {\n var childColIds = _this.recursivelyAddPivotTotal(grp, pivotColumnDefs, valueColumn, insertAfter);\n if (childColIds) {\n colIds = colIds.concat(childColIds);\n }\n });\n // only add total colDef if there is more than 1 child node\n if (group.children.length > 1) {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var headerName = localeTextFunc('pivotColumnGroupTotals', 'Total');\n //create total colDef using an arbitrary value column as a template\n var totalColDef = this.createColDef(valueColumn, headerName, groupDef.pivotKeys, true);\n totalColDef.pivotTotalColumnIds = colIds;\n totalColDef.aggFunc = valueColumn.getAggFunc();\n // add total colDef to group and pivot colDefs array\n var children = groupDef.children;\n insertAfter ? children.push(totalColDef) : children.unshift(totalColDef);\n pivotColumnDefs.push(totalColDef);\n }\n return colIds;\n };\n PivotColDefService.prototype.addRowGroupTotals = function (pivotColumnGroupDefs, pivotColumnDefs, valueColumns) {\n var _this = this;\n if (!this.gridOptionsWrapper.getPivotRowTotals()) {\n return;\n }\n var insertAfter = this.gridOptionsWrapper.getPivotRowTotals() === 'after';\n // order of row group totals depends on position\n var valueCols = insertAfter ? valueColumns.slice() : valueColumns.slice().reverse();\n var _loop_1 = function (i) {\n var valueCol = valueCols[i];\n var colIds = [];\n pivotColumnGroupDefs.forEach(function (groupDef) {\n colIds = colIds.concat(_this.extractColIdsForValueColumn(groupDef, valueCol));\n });\n var withGroup = valueCols.length > 1 || !this_1.gridOptionsWrapper.isRemovePivotHeaderRowWhenSingleValueColumn();\n this_1.createRowGroupTotal(pivotColumnGroupDefs, pivotColumnDefs, valueCol, colIds, insertAfter, withGroup);\n };\n var this_1 = this;\n for (var i = 0; i < valueCols.length; i++) {\n _loop_1(i);\n }\n };\n PivotColDefService.prototype.extractColIdsForValueColumn = function (groupDef, valueColumn) {\n var _this = this;\n var group = groupDef;\n if (!group.children) {\n var colDef = group;\n return colDef.pivotValueColumn === valueColumn && colDef.colId ? [colDef.colId] : [];\n }\n var colIds = [];\n group.children\n .forEach(function (grp) {\n _this.extractColIdsForValueColumn(grp, valueColumn);\n var childColIds = _this.extractColIdsForValueColumn(grp, valueColumn);\n colIds = colIds.concat(childColIds);\n });\n return colIds;\n };\n PivotColDefService.prototype.createRowGroupTotal = function (parentChildren, pivotColumnDefs, valueColumn, colIds, insertAfter, addGroup) {\n var measureColumns = this.columnModel.getValueColumns();\n var colDef;\n if (measureColumns.length === 0) {\n colDef = this.createColDef(null, '-', []);\n }\n else {\n var columnName = this.columnModel.getDisplayNameForColumn(valueColumn, 'header');\n colDef = this.createColDef(valueColumn, columnName, []);\n colDef.pivotTotalColumnIds = colIds;\n }\n colDef.colId = PivotColDefService_1.PIVOT_ROW_TOTAL_PREFIX + colDef.colId;\n pivotColumnDefs.push(colDef);\n var valueGroup = addGroup ? {\n children: [colDef],\n pivotKeys: [],\n groupId: PivotColDefService_1.PIVOT_ROW_TOTAL_PREFIX + \"_pivotGroup_\" + valueColumn.getColId(),\n } : colDef;\n insertAfter ? parentChildren.push(valueGroup) : parentChildren.unshift(valueGroup);\n };\n PivotColDefService.prototype.createColDef = function (valueColumn, headerName, pivotKeys, totalColumn) {\n if (totalColumn === void 0) { totalColumn = false; }\n var colDef = {};\n // This is null when there are no measure columns and we're creating placeholder columns\n if (valueColumn) {\n var colDefToCopy = valueColumn.getColDef();\n Object.assign(colDef, colDefToCopy);\n // even if original column was hidden, we always show the pivot value column, otherwise it would be\n // very confusing for people thinking the pivot is broken\n colDef.hide = false;\n }\n colDef.headerName = headerName;\n colDef.colId = this.generateColumnId(pivotKeys || [], valueColumn && !totalColumn ? valueColumn.getColId() : '');\n // pivot columns repeat over field, so it makes sense to use the unique id instead. For example if you want to\n // assign values to pinned bottom rows using setPinnedBottomRowData the value service will use this colId.\n colDef.field = colDef.colId;\n // this is to support using pinned rows, normally the data will be extracted from the aggData object using the colId\n // however pinned rows still access the data object by field, this prevents values with dots from being treated as complex objects\n colDef.valueGetter = function (params) { var _a; return (_a = params.data) === null || _a === void 0 ? void 0 : _a[params.colDef.field]; };\n colDef.pivotKeys = pivotKeys;\n colDef.pivotValueColumn = valueColumn;\n if (colDef.filter === true) {\n colDef.filter = 'agNumberColumnFilter';\n }\n return colDef;\n };\n PivotColDefService.prototype.sameAggFuncs = function (aggFuncs) {\n if (aggFuncs.length == 1) {\n return true;\n }\n //check if all aggFunc's match\n for (var i = 1; i < aggFuncs.length; i++) {\n if (aggFuncs[i] !== aggFuncs[0]) {\n return false;\n }\n }\n return true;\n };\n PivotColDefService.prototype.headerNameComparator = function (userComparator, a, b) {\n if (userComparator) {\n return userComparator(a.headerName, b.headerName);\n }\n else {\n if (a.headerName && !b.headerName) {\n return 1;\n }\n else if (!a.headerName && b.headerName) {\n return -1;\n }\n // slightly naff here - just to satify typescript\n // really should be &&, but if so ts complains\n // the above if/else checks would deal with either being falsy, so at this stage if either are falsy, both are\n // ..still naff though\n if (!a.headerName || !b.headerName) {\n return 0;\n }\n if (a.headerName < b.headerName) {\n return -1;\n }\n if (a.headerName > b.headerName) {\n return 1;\n }\n return 0;\n }\n };\n PivotColDefService.prototype.merge = function (m1, m2) {\n m2.forEach(function (value, key, map) {\n var existingList = m1.has(key) ? m1.get(key) : [];\n var updatedList = __spread(existingList, value);\n m1.set(key, updatedList);\n });\n };\n PivotColDefService.prototype.generateColumnGroupId = function (pivotKeys) {\n var pivotCols = this.columnModel.getPivotColumns().map(function (col) { return col.getColId(); });\n return \"pivotGroup_\" + pivotCols.join('-') + \"_\" + pivotKeys.join('-');\n };\n PivotColDefService.prototype.generateColumnId = function (pivotKeys, measureColumnId) {\n var pivotCols = this.columnModel.getPivotColumns().map(function (col) { return col.getColId(); });\n return \"pivot_\" + pivotCols.join('-') + \"_\" + pivotKeys.join('-') + \"_\" + measureColumnId;\n };\n var PivotColDefService_1;\n PivotColDefService.PIVOT_ROW_TOTAL_PREFIX = 'PivotRowTotal_';\n __decorate([\n Autowired('columnModel')\n ], PivotColDefService.prototype, \"columnModel\", void 0);\n PivotColDefService = PivotColDefService_1 = __decorate([\n Bean('pivotColDefService')\n ], PivotColDefService);\n return PivotColDefService;\n}(BeanStub));\nexport { PivotColDefService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, BeanStub, _ } from \"@ag-grid-community/core\";\nvar PivotStage = /** @class */ (function (_super) {\n __extends(PivotStage, _super);\n function PivotStage() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.uniqueValues = {};\n return _this;\n }\n PivotStage.prototype.execute = function (params) {\n var rootNode = params.rowNode;\n var changedPath = params.changedPath;\n if (this.columnModel.isPivotActive()) {\n this.executePivotOn(rootNode, changedPath);\n }\n else {\n this.executePivotOff(changedPath);\n }\n };\n PivotStage.prototype.executePivotOff = function (changedPath) {\n this.aggregationColumnsHashLastTime = null;\n this.uniqueValues = {};\n if (this.columnModel.isSecondaryColumnsPresent()) {\n this.columnModel.setSecondaryColumns(null, \"rowModelUpdated\");\n if (changedPath) {\n changedPath.setInactive();\n }\n }\n };\n PivotStage.prototype.executePivotOn = function (rootNode, changedPath) {\n var uniqueValues = this.bucketUpRowNodes(rootNode);\n var uniqueValuesChanged = this.setUniqueValues(uniqueValues);\n var aggregationColumns = this.columnModel.getValueColumns();\n var aggregationColumnsHash = aggregationColumns.map(function (column) { return column.getId() + \"-\" + column.getColDef().headerName; }).join('#');\n var aggregationFuncsHash = aggregationColumns.map(function (column) { return column.getAggFunc().toString(); }).join('#');\n var aggregationColumnsChanged = this.aggregationColumnsHashLastTime !== aggregationColumnsHash;\n var aggregationFuncsChanged = this.aggregationFuncsHashLastTime !== aggregationFuncsHash;\n this.aggregationColumnsHashLastTime = aggregationColumnsHash;\n this.aggregationFuncsHashLastTime = aggregationFuncsHash;\n var groupColumnsHash = this.columnModel.getRowGroupColumns().map(function (column) { return column.getId(); }).join('#');\n var groupColumnsChanged = groupColumnsHash !== this.groupColumnsHashLastTime;\n this.groupColumnsHashLastTime = groupColumnsHash;\n if (uniqueValuesChanged || aggregationColumnsChanged || groupColumnsChanged || aggregationFuncsChanged) {\n var _a = this.pivotColDefService.createPivotColumnDefs(this.uniqueValues), pivotColumnGroupDefs = _a.pivotColumnGroupDefs, pivotColumnDefs = _a.pivotColumnDefs;\n this.pivotColumnDefs = pivotColumnDefs;\n this.columnModel.setSecondaryColumns(pivotColumnGroupDefs, \"rowModelUpdated\");\n // because the secondary columns have changed, then the aggregation needs to visit the whole\n // tree again, so we make the changedPath not active, to force aggregation to visit all paths.\n if (changedPath) {\n changedPath.setInactive();\n }\n }\n };\n PivotStage.prototype.setUniqueValues = function (newValues) {\n var json1 = JSON.stringify(newValues);\n var json2 = JSON.stringify(this.uniqueValues);\n var uniqueValuesChanged = json1 !== json2;\n // we only continue the below if the unique values are different, as otherwise\n // the result will be the same as the last time we did it\n if (uniqueValuesChanged) {\n this.uniqueValues = newValues;\n return true;\n }\n else {\n return false;\n }\n };\n // returns true if values were different\n PivotStage.prototype.bucketUpRowNodes = function (rootNode) {\n var _this = this;\n // accessed from inside inner function\n var uniqueValues = {};\n // finds all leaf groups and calls mapRowNode with it\n var recursivelySearchForLeafNodes = function (rowNode) {\n if (rowNode.leafGroup) {\n _this.bucketRowNode(rowNode, uniqueValues);\n }\n else {\n rowNode.childrenAfterFilter.forEach(function (child) {\n recursivelySearchForLeafNodes(child);\n });\n }\n };\n recursivelySearchForLeafNodes(rootNode);\n return uniqueValues;\n };\n PivotStage.prototype.bucketRowNode = function (rowNode, uniqueValues) {\n var pivotColumns = this.columnModel.getPivotColumns();\n if (pivotColumns.length === 0) {\n rowNode.childrenMapped = null;\n }\n else {\n rowNode.childrenMapped = this.bucketChildren(rowNode.childrenAfterFilter, pivotColumns, 0, uniqueValues);\n }\n if (rowNode.sibling) {\n rowNode.sibling.childrenMapped = rowNode.childrenMapped;\n }\n };\n PivotStage.prototype.bucketChildren = function (children, pivotColumns, pivotIndex, uniqueValues) {\n var _this = this;\n var mappedChildren = {};\n var pivotColumn = pivotColumns[pivotIndex];\n // map the children out based on the pivot column\n children.forEach(function (child) {\n var key = _this.valueService.getKeyForNode(pivotColumn, child);\n if (_.missing(key)) {\n key = '';\n }\n if (!uniqueValues[key]) {\n uniqueValues[key] = {};\n }\n if (!mappedChildren[key]) {\n mappedChildren[key] = [];\n }\n mappedChildren[key].push(child);\n });\n // if it's the last pivot column, return as is, otherwise go one level further in the map\n if (pivotIndex === pivotColumns.length - 1) {\n return mappedChildren;\n }\n else {\n var result_1 = {};\n _.iterateObject(mappedChildren, function (key, value) {\n result_1[key] = _this.bucketChildren(value, pivotColumns, pivotIndex + 1, uniqueValues[key]);\n });\n return result_1;\n }\n };\n PivotStage.prototype.getPivotColumnDefs = function () {\n return this.pivotColumnDefs;\n };\n __decorate([\n Autowired('valueService')\n ], PivotStage.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], PivotStage.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('pivotColDefService')\n ], PivotStage.prototype, \"pivotColDefService\", void 0);\n PivotStage = __decorate([\n Bean('pivotStage')\n ], PivotStage);\n return PivotStage;\n}(BeanStub));\nexport { PivotStage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, BeanStub, PostConstruct, _ } from '@ag-grid-community/core';\n// @ts-ignore\nvar AGBigInt = typeof BigInt === 'undefined' ? null : BigInt;\nvar AggFuncService = /** @class */ (function (_super) {\n __extends(AggFuncService, _super);\n function AggFuncService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.aggFuncsMap = {};\n _this.initialised = false;\n return _this;\n }\n AggFuncService_1 = AggFuncService;\n AggFuncService.prototype.init = function () {\n if (this.initialised) {\n return;\n }\n this.initialiseWithDefaultAggregations();\n this.addAggFuncs(this.gridOptionsWrapper.getAggFuncs());\n };\n AggFuncService.prototype.initialiseWithDefaultAggregations = function () {\n this.aggFuncsMap[AggFuncService_1.AGG_SUM] = aggSum;\n this.aggFuncsMap[AggFuncService_1.AGG_FIRST] = aggFirst;\n this.aggFuncsMap[AggFuncService_1.AGG_LAST] = aggLast;\n this.aggFuncsMap[AggFuncService_1.AGG_MIN] = aggMin;\n this.aggFuncsMap[AggFuncService_1.AGG_MAX] = aggMax;\n this.aggFuncsMap[AggFuncService_1.AGG_COUNT] = aggCount;\n this.aggFuncsMap[AggFuncService_1.AGG_AVG] = aggAvg;\n this.initialised = true;\n };\n AggFuncService.prototype.isAggFuncPossible = function (column, func) {\n var allKeys = this.getFuncNames(column);\n var allowed = _.includes(allKeys, func);\n var funcExists = _.exists(this.aggFuncsMap[func]);\n return allowed && funcExists;\n };\n AggFuncService.prototype.getDefaultAggFunc = function (column) {\n var defaultAgg = column.getColDef().defaultAggFunc;\n if (_.exists(defaultAgg) && this.isAggFuncPossible(column, defaultAgg)) {\n return defaultAgg;\n }\n if (this.isAggFuncPossible(column, AggFuncService_1.AGG_SUM)) {\n return AggFuncService_1.AGG_SUM;\n }\n var allKeys = this.getFuncNames(column);\n return _.existsAndNotEmpty(allKeys) ? allKeys[0] : null;\n };\n AggFuncService.prototype.addAggFuncs = function (aggFuncs) {\n _.iterateObject(aggFuncs, this.addAggFunc.bind(this));\n };\n AggFuncService.prototype.addAggFunc = function (key, aggFunc) {\n this.init();\n this.aggFuncsMap[key] = aggFunc;\n };\n AggFuncService.prototype.getAggFunc = function (name) {\n this.init();\n return this.aggFuncsMap[name];\n };\n AggFuncService.prototype.getFuncNames = function (column) {\n var userAllowedFuncs = column.getColDef().allowedAggFuncs;\n return userAllowedFuncs == null ? Object.keys(this.aggFuncsMap).sort() : userAllowedFuncs;\n };\n AggFuncService.prototype.clear = function () {\n this.aggFuncsMap = {};\n };\n var AggFuncService_1;\n AggFuncService.AGG_SUM = 'sum';\n AggFuncService.AGG_FIRST = 'first';\n AggFuncService.AGG_LAST = 'last';\n AggFuncService.AGG_MIN = 'min';\n AggFuncService.AGG_MAX = 'max';\n AggFuncService.AGG_COUNT = 'count';\n AggFuncService.AGG_AVG = 'avg';\n __decorate([\n PostConstruct\n ], AggFuncService.prototype, \"init\", null);\n AggFuncService = AggFuncService_1 = __decorate([\n Bean('aggFuncService')\n ], AggFuncService);\n return AggFuncService;\n}(BeanStub));\nexport { AggFuncService };\nfunction aggSum(params) {\n var values = params.values;\n var result = null; // the logic ensures that we never combine bigint arithmetic with numbers, but TS is hard to please\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if (typeof value === 'number') {\n if (result === null) {\n result = value;\n }\n else {\n if (AGBigInt) {\n result += typeof result === 'number' ? value : AGBigInt(value);\n }\n else {\n result += value;\n }\n }\n }\n else if (typeof value === 'bigint') {\n if (result === null) {\n result = value;\n }\n else {\n result = (typeof result === 'bigint' ? result : AGBigInt(result)) + value;\n }\n }\n }\n return result;\n}\nfunction aggFirst(params) {\n return params.values.length > 0 ? params.values[0] : null;\n}\nfunction aggLast(params) {\n return params.values.length > 0 ? _.last(params.values) : null;\n}\nfunction aggMin(params) {\n var values = params.values;\n var result = null;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if ((typeof value === 'number' || typeof value === 'bigint') && (result === null || result > value)) {\n result = value;\n }\n }\n return result;\n}\nfunction aggMax(params) {\n var values = params.values;\n var result = null;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if ((typeof value === 'number' || typeof value === 'bigint') && (result === null || result < value)) {\n result = value;\n }\n }\n return result;\n}\nfunction aggCount(params) {\n var values = params.values;\n var result = 0;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n // check if the value is from a group, in which case use the group's count\n result += value != null && typeof value.value === 'number' ? value.value : 1;\n }\n return result;\n}\n// the average function is tricky as the multiple levels require weighted averages\n// for the non-leaf node aggregations.\nfunction aggAvg(params) {\n var _a, _b, _c;\n var values = params.values;\n var sum = 0; // the logic ensures that we never combine bigint arithmetic with numbers, but TS is hard to please\n var count = 0;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var currentValue = values[i];\n var valueToAdd = null;\n if (typeof currentValue === 'number' || typeof currentValue === 'bigint') {\n valueToAdd = currentValue;\n count++;\n }\n else if (currentValue != null && (typeof currentValue.value === 'number' || typeof currentValue.value === 'bigint') && typeof currentValue.count === 'number') {\n // we are aggregating groups, so we take the aggregated values to calculated a weighted average\n if (AGBigInt) {\n valueToAdd = currentValue.value * (typeof currentValue.value === 'number' ? currentValue.count : AGBigInt(currentValue.count));\n }\n else {\n valueToAdd = currentValue.value * currentValue.count;\n }\n count += currentValue.count;\n }\n if (typeof valueToAdd === 'number') {\n if (AGBigInt) {\n sum += typeof sum === 'number' ? valueToAdd : AGBigInt(valueToAdd);\n }\n else {\n sum += valueToAdd;\n }\n }\n else if (typeof valueToAdd === 'bigint') {\n sum = (typeof sum === 'bigint' ? sum : AGBigInt(sum)) + valueToAdd;\n }\n }\n var value = null;\n // avoid divide by zero error\n if (count > 0) {\n if (AGBigInt) {\n value = sum / (typeof sum === 'number' ? count : AGBigInt(count));\n }\n else {\n value = sum / count;\n }\n }\n // the previous aggregation data\n var existingAggData = (_b = (_a = params.rowNode) === null || _a === void 0 ? void 0 : _a.aggData) === null || _b === void 0 ? void 0 : _b[(_c = params.column) === null || _c === void 0 ? void 0 : _c.getColId()];\n if (existingAggData && existingAggData.count === count && existingAggData.value === value) {\n // the underlying values haven't changed, return the old object to avoid triggering change detection\n return existingAggData;\n }\n // the result will be an object. when this cell is rendered, only the avg is shown.\n // however when this cell is part of another aggregation, the count is also needed\n // to create a weighted average for the next level.\n return {\n count: count,\n value: value,\n // the grid by default uses toString to render values for an object, so this\n // is a trick to get the default cellRenderer to display the avg value\n toString: function () {\n return typeof this.value === 'number' || typeof this.value === 'bigint' ? this.value.toString() : '';\n },\n // used for sorting\n toNumber: function () {\n return this.value;\n }\n };\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { DragSourceType, Component, Autowired, Events, TouchListener, DragAndDropService, PostConstruct, Column, RefSelector, Optional, VirtualList, KeyCode, _, } from \"@ag-grid-community/core\";\nvar DropZoneColumnComp = /** @class */ (function (_super) {\n __extends(DropZoneColumnComp, _super);\n function DropZoneColumnComp(column, dragSourceDropTarget, ghost, dropZonePurpose, horizontal) {\n var _this = _super.call(this) || this;\n _this.column = column;\n _this.dragSourceDropTarget = dragSourceDropTarget;\n _this.ghost = ghost;\n _this.dropZonePurpose = dropZonePurpose;\n _this.horizontal = horizontal;\n _this.popupShowing = false;\n return _this;\n }\n DropZoneColumnComp.prototype.init = function () {\n var _this = this;\n this.setTemplate(DropZoneColumnComp.TEMPLATE);\n var eGui = this.getGui();\n var isFunctionsReadOnly = this.gridOptionsWrapper.isFunctionsReadOnly();\n this.addElementClasses(eGui);\n this.addElementClasses(this.eDragHandle, 'drag-handle');\n this.addElementClasses(this.eText, 'text');\n this.addElementClasses(this.eButton, 'button');\n this.eDragHandle.appendChild(_.createIconNoSpan('columnDrag', this.gridOptionsWrapper));\n this.eButton.appendChild(_.createIconNoSpan('cancel', this.gridOptionsWrapper));\n this.setupSort();\n this.displayName = this.columnModel.getDisplayNameForColumn(this.column, 'columnDrop');\n this.setupComponents();\n if (!this.ghost && !isFunctionsReadOnly) {\n this.addDragSource();\n }\n this.setupAria();\n this.addManagedListener(this.column, Column.EVENT_SORT_CHANGED, function () {\n _this.setupAria();\n });\n this.setupTooltip();\n };\n DropZoneColumnComp.prototype.setupAria = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var _a = this.getColumnAndAggFuncName(), name = _a.name, aggFuncName = _a.aggFuncName;\n var aggSeparator = translate('ariaDropZoneColumnComponentAggFuncSeperator', ' of ');\n var sortDirection = {\n asc: translate('ariaDropZoneColumnComponentSortAscending', 'ascending'),\n desc: translate('ariaDropZoneColumnComponentSortDescending', 'descending'),\n };\n var columnSort = this.column.getSort();\n var isSortSuppressed = this.gridOptionsWrapper.isRowGroupPanelSuppressSort();\n var ariaInstructions = [\n [\n aggFuncName && \"\" + aggFuncName + aggSeparator,\n name,\n this.isGroupingZone() && !isSortSuppressed && columnSort && \", \" + sortDirection[columnSort]\n ].filter(function (part) { return !!part; }).join(''),\n ];\n var isFunctionsReadOnly = this.gridOptionsWrapper.isFunctionsReadOnly();\n if (this.isAggregationZone() && !isFunctionsReadOnly) {\n var aggregationMenuAria = translate('ariaDropZoneColumnValueItemDescription', 'Press ENTER to change the aggregation type');\n ariaInstructions.push(aggregationMenuAria);\n }\n if (this.isGroupingZone() && this.column.getColDef().sortable && !isSortSuppressed) {\n var sortProgressAria = translate('ariaDropZoneColumnGroupItemDescription', 'Press ENTER to sort');\n ariaInstructions.push(sortProgressAria);\n }\n var deleteAria = translate('ariaDropZoneColumnComponentDescription', 'Press DELETE to remove');\n ariaInstructions.push(deleteAria);\n _.setAriaLabel(this.getGui(), ariaInstructions.join('. '));\n };\n DropZoneColumnComp.prototype.setupTooltip = function () {\n var _this = this;\n var refresh = function () {\n var newTooltipText = _this.column.getColDef().headerTooltip;\n _this.setTooltip(newTooltipText);\n };\n refresh();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n };\n DropZoneColumnComp.prototype.setupSort = function () {\n var _this = this;\n var canSort = this.column.getColDef().sortable;\n var isGroupingZone = this.isGroupingZone();\n if (!canSort || !isGroupingZone) {\n return;\n }\n if (!this.gridOptionsWrapper.isRowGroupPanelSuppressSort()) {\n this.eSortIndicator.setupSort(this.column, true);\n var performSort_1 = function (event) {\n event.preventDefault();\n var sortUsingCtrl = _this.gridOptionsWrapper.isMultiSortKeyCtrl();\n var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;\n _this.sortController.progressSort(_this.column, multiSort, 'uiColumnSorted');\n };\n this.addGuiEventListener('click', performSort_1);\n this.addGuiEventListener('keydown', function (e) {\n var isEnter = e.key === KeyCode.ENTER;\n if (isEnter && _this.isGroupingZone()) {\n performSort_1(e);\n }\n });\n }\n };\n DropZoneColumnComp.prototype.addDragSource = function () {\n var _this = this;\n var dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n defaultIconName: DragAndDropService.ICON_HIDE,\n getDragItem: function () { return _this.createDragItem(); },\n dragItemName: this.displayName,\n dragSourceDropTarget: this.dragSourceDropTarget\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n DropZoneColumnComp.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 DropZoneColumnComp.prototype.setupComponents = function () {\n this.setTextValue();\n this.setupRemove();\n if (this.ghost) {\n this.addCssClass('ag-column-drop-cell-ghost');\n }\n if (this.isAggregationZone() && !this.gridOptionsWrapper.isFunctionsReadOnly()) {\n this.addGuiEventListener('click', this.onShowAggFuncSelection.bind(this));\n }\n };\n DropZoneColumnComp.prototype.setupRemove = function () {\n var _this = this;\n _.setDisplayed(this.eButton, !this.gridOptionsWrapper.isFunctionsReadOnly());\n var agEvent = { type: DropZoneColumnComp.EVENT_COLUMN_REMOVE };\n this.addGuiEventListener('keydown', function (e) {\n var isEnter = e.key === KeyCode.ENTER;\n var isDelete = e.key === KeyCode.DELETE;\n if (isDelete) {\n e.preventDefault();\n _this.dispatchEvent(agEvent);\n }\n if (isEnter && _this.isAggregationZone() && !_this.gridOptionsWrapper.isFunctionsReadOnly()) {\n e.preventDefault();\n _this.onShowAggFuncSelection();\n }\n });\n this.addManagedListener(this.eButton, 'click', function (mouseEvent) {\n _this.dispatchEvent(agEvent);\n mouseEvent.stopPropagation();\n });\n var touchListener = new TouchListener(this.eButton);\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, function () {\n _this.dispatchEvent(agEvent);\n });\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n };\n DropZoneColumnComp.prototype.getColumnAndAggFuncName = function () {\n var name = this.displayName;\n var aggFuncName = '';\n if (this.isAggregationZone()) {\n var aggFunc = this.column.getAggFunc();\n // if aggFunc is a string, we can use it, but if it's a function, then we swap with 'func'\n var aggFuncString = typeof aggFunc === 'string' ? aggFunc : 'agg';\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n aggFuncName = localeTextFunc(aggFuncString, aggFuncString);\n }\n return { name: name, aggFuncName: aggFuncName };\n };\n DropZoneColumnComp.prototype.setTextValue = function () {\n var _a = this.getColumnAndAggFuncName(), name = _a.name, aggFuncName = _a.aggFuncName;\n var displayValue = this.isAggregationZone() ? aggFuncName + \"(\" + name + \")\" : name;\n var displayValueSanitised = _.escapeString(displayValue);\n this.eText.innerHTML = displayValueSanitised;\n };\n DropZoneColumnComp.prototype.onShowAggFuncSelection = function () {\n var _this = this;\n if (this.popupShowing) {\n return;\n }\n this.popupShowing = true;\n var virtualList = new VirtualList('select-agg-func');\n var rows = this.aggFuncService.getFuncNames(this.column);\n var eGui = this.getGui();\n var virtualListGui = virtualList.getGui();\n virtualList.setModel({\n getRow: function (index) { return rows[index]; },\n getRowCount: function () { return rows.length; }\n });\n this.getContext().createBean(virtualList);\n var ePopup = _.loadTemplate(/* html*/ \"
\");\n ePopup.style.top = '0px';\n ePopup.style.left = '0px';\n ePopup.appendChild(virtualListGui);\n // ePopup.style.height = this.gridOptionsWrapper.getAggFuncPopupHeight() + 'px';\n ePopup.style.width = eGui.clientWidth + \"px\";\n var popupHiddenFunc = function () {\n _this.destroyBean(virtualList);\n _this.popupShowing = false;\n eGui.focus();\n };\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: ePopup,\n closeOnEsc: true,\n closedCallback: popupHiddenFunc,\n ariaLabel: translate('ariaLabelAggregationFunction', 'Aggregation Function')\n });\n if (addPopupRes) {\n virtualList.setComponentCreator(this.createAggSelect.bind(this, addPopupRes.hideFunc));\n }\n virtualList.addGuiEventListener('keydown', function (e) {\n if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n var row = virtualList.getLastFocusedRow();\n if (row == null) {\n return;\n }\n var comp = virtualList.getComponentAt(row);\n if (comp) {\n comp.selectItem();\n }\n }\n });\n this.popupService.positionPopupUnderComponent({\n type: 'aggFuncSelect',\n eventSource: eGui,\n ePopup: ePopup,\n keepWithinBounds: true,\n column: this.column\n });\n virtualList.refresh();\n var rowToFocus = rows.findIndex(function (r) { return r === _this.column.getAggFunc(); });\n if (rowToFocus === -1) {\n rowToFocus = 0;\n }\n virtualList.focusRow(rowToFocus);\n };\n DropZoneColumnComp.prototype.createAggSelect = function (hidePopup, value) {\n var _this = this;\n var itemSelected = function () {\n hidePopup();\n if (_this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST,\n columns: [_this.column],\n aggFunc: value\n };\n _this.eventService.dispatchEvent(event_1);\n }\n else {\n _this.columnModel.setColumnAggFunc(_this.column, value, \"toolPanelDragAndDrop\");\n }\n };\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var aggFuncString = value.toString();\n var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n var comp = new AggItemComp(itemSelected, aggFuncStringTranslated);\n return comp;\n };\n DropZoneColumnComp.prototype.addElementClasses = function (el, suffix) {\n suffix = suffix ? \"-\" + suffix : '';\n var direction = this.horizontal ? 'horizontal' : 'vertical';\n el.classList.add(\"ag-column-drop-cell\" + suffix, \"ag-column-drop-\" + direction + \"-cell\" + suffix);\n };\n DropZoneColumnComp.prototype.isAggregationZone = function () {\n return this.dropZonePurpose === 'aggregation';\n };\n DropZoneColumnComp.prototype.isGroupingZone = function () {\n return this.dropZonePurpose === 'rowGroup';\n };\n DropZoneColumnComp.EVENT_COLUMN_REMOVE = 'columnRemove';\n DropZoneColumnComp.TEMPLATE = \"\\n \\n \\n \\n \\n \";\n __decorate([\n Autowired('dragAndDropService')\n ], DropZoneColumnComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], DropZoneColumnComp.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('popupService')\n ], DropZoneColumnComp.prototype, \"popupService\", void 0);\n __decorate([\n Optional('aggFuncService')\n ], DropZoneColumnComp.prototype, \"aggFuncService\", void 0);\n __decorate([\n Autowired('sortController')\n ], DropZoneColumnComp.prototype, \"sortController\", void 0);\n __decorate([\n RefSelector('eText')\n ], DropZoneColumnComp.prototype, \"eText\", void 0);\n __decorate([\n RefSelector('eDragHandle')\n ], DropZoneColumnComp.prototype, \"eDragHandle\", void 0);\n __decorate([\n RefSelector('eButton')\n ], DropZoneColumnComp.prototype, \"eButton\", void 0);\n __decorate([\n RefSelector('eSortIndicator')\n ], DropZoneColumnComp.prototype, \"eSortIndicator\", void 0);\n __decorate([\n PostConstruct\n ], DropZoneColumnComp.prototype, \"init\", null);\n return DropZoneColumnComp;\n}(Component));\nexport { DropZoneColumnComp };\nvar AggItemComp = /** @class */ (function (_super) {\n __extends(AggItemComp, _super);\n function AggItemComp(itemSelected, value) {\n var _this = _super.call(this, /* html */ \"
\") || this;\n _this.selectItem = itemSelected;\n _this.getGui().innerText = value;\n _this.addGuiEventListener('click', _this.selectItem);\n return _this;\n }\n return AggItemComp;\n}(Component));\n","var __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 __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Autowired, Component, DragSourceType, Events, KeyCode, ManagedFocusFeature, PositionableFeature, _ } from \"@ag-grid-community/core\";\nimport { DropZoneColumnComp } from \"./dropZoneColumnComp\";\nvar BaseDropZonePanel = /** @class */ (function (_super) {\n __extends(BaseDropZonePanel, _super);\n function BaseDropZonePanel(horizontal, dropZonePurpose) {\n var _this = _super.call(this, /* html */ \"
\") || this;\n _this.horizontal = horizontal;\n _this.dropZonePurpose = dropZonePurpose;\n _this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n _this.guiDestroyFunctions = [];\n _this.childColumnComponents = [];\n _this.resizeEnabled = false;\n _this.addElementClasses(_this.getGui());\n _this.eColumnDropList = document.createElement('div');\n _this.addElementClasses(_this.eColumnDropList, 'list');\n _.setAriaRole(_this.eColumnDropList, 'listbox');\n return _this;\n }\n BaseDropZonePanel.prototype.isHorizontal = function () {\n return this.horizontal;\n };\n BaseDropZonePanel.prototype.toggleResizable = function (resizable) {\n this.positionableFeature.setResizable(resizable ? { bottom: true } : false);\n this.resizeEnabled = resizable;\n };\n BaseDropZonePanel.prototype.setBeans = function (beans) {\n this.beans = beans;\n };\n BaseDropZonePanel.prototype.destroy = function () {\n this.destroyGui();\n _super.prototype.destroy.call(this);\n };\n BaseDropZonePanel.prototype.destroyGui = function () {\n this.guiDestroyFunctions.forEach(function (func) { return func(); });\n this.guiDestroyFunctions.length = 0;\n this.childColumnComponents.length = 0;\n _.clearElement(this.getGui());\n _.clearElement(this.eColumnDropList);\n };\n BaseDropZonePanel.prototype.init = function (params) {\n this.params = params;\n this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n handleKeyDown: this.handleKeyDown.bind(this)\n }));\n this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.refreshGui.bind(this));\n this.addManagedListener(this.beans.gridOptionsWrapper, 'functionsReadOnly', this.refreshGui.bind(this));\n this.setupDropTarget();\n this.positionableFeature = new PositionableFeature(this.getGui(), { minHeight: 100 });\n this.createManagedBean(this.positionableFeature);\n // we don't know if this bean will be initialised before columnModel.\n // if columnModel first, then below will work\n // if columnModel second, then below will put blank in, and then above event gets first when columnModel is set up\n this.refreshGui();\n _.setAriaLabel(this.eColumnDropList, this.getAriaLabel());\n };\n BaseDropZonePanel.prototype.handleKeyDown = function (e) {\n var isVertical = !this.horizontal;\n var isNext = e.key === KeyCode.DOWN;\n var isPrevious = e.key === KeyCode.UP;\n if (!isVertical) {\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n isNext = (!isRtl && e.key === KeyCode.RIGHT) || (isRtl && e.key === KeyCode.LEFT);\n isPrevious = (!isRtl && e.key === KeyCode.LEFT) || (isRtl && e.key === KeyCode.RIGHT);\n }\n if (!isNext && !isPrevious) {\n return;\n }\n var el = this.focusService.findNextFocusableElement(this.getFocusableElement(), false, isPrevious);\n if (el) {\n e.preventDefault();\n el.focus();\n }\n };\n BaseDropZonePanel.prototype.addElementClasses = function (el, suffix) {\n suffix = suffix ? \"-\" + suffix : '';\n var direction = this.horizontal ? 'horizontal' : 'vertical';\n el.classList.add(\"ag-column-drop\" + suffix, \"ag-column-drop-\" + direction + suffix);\n };\n BaseDropZonePanel.prototype.setupDropTarget = function () {\n this.dropTarget = {\n getContainer: this.getGui.bind(this),\n getIconName: this.getIconName.bind(this),\n onDragging: this.onDragging.bind(this),\n onDragEnter: this.onDragEnter.bind(this),\n onDragLeave: this.onDragLeave.bind(this),\n onDragStop: this.onDragStop.bind(this),\n isInterestedIn: this.isInterestedIn.bind(this)\n };\n this.beans.dragAndDropService.addDropTarget(this.dropTarget);\n };\n BaseDropZonePanel.prototype.isInterestedIn = function (type) {\n // not interested in row drags\n return type === DragSourceType.HeaderCell || type === DragSourceType.ToolPanel;\n };\n BaseDropZonePanel.prototype.checkInsertIndex = function (draggingEvent) {\n var newIndex = this.getNewInsertIndex(draggingEvent);\n // <0 happens when drag is no a direction we are interested in, eg drag is up/down but in horizontal panel\n if (newIndex < 0) {\n return false;\n }\n var changed = newIndex !== this.insertIndex;\n if (changed) {\n this.insertIndex = newIndex;\n }\n return changed;\n };\n BaseDropZonePanel.prototype.getNewInsertIndex = function (draggingEvent) {\n var _this = this;\n var mouseEvent = draggingEvent.event;\n var mouseLocation = this.horizontal ? mouseEvent.clientX : mouseEvent.clientY;\n var boundsList = this.childColumnComponents.map(function (col) { return (col.getGui().getBoundingClientRect()); });\n // find the non-ghost component we're hovering\n var hoveredIndex = boundsList.findIndex(function (rect) { return (_this.horizontal ? (rect.right > mouseLocation && rect.left < mouseLocation) : (rect.top < mouseLocation && rect.bottom > mouseLocation)); });\n // not hovering a non-ghost component\n if (hoveredIndex === -1) {\n var enableRtl = this.beans.gridOptionsWrapper.isEnableRtl();\n // if mouse is below or right of all components then new index should be placed last\n var isLast = boundsList.every(function (rect) { return (mouseLocation > (_this.horizontal ? rect.right : rect.bottom)); });\n if (isLast) {\n return enableRtl && this.horizontal ? 0 : this.childColumnComponents.length;\n }\n // if mouse is above or left of all components, new index is first\n var isFirst = boundsList.every(function (rect) { return (mouseLocation < (_this.horizontal ? rect.left : rect.top)); });\n if (isFirst) {\n return enableRtl && this.horizontal ? this.childColumnComponents.length : 0;\n }\n // must be hovering a ghost, don't change the index\n return this.insertIndex;\n }\n // if the old index is equal to or less than the index of our new target\n // we need to shift right, to insert after rather than before\n if (this.insertIndex <= hoveredIndex) {\n return hoveredIndex + 1;\n }\n return hoveredIndex;\n };\n BaseDropZonePanel.prototype.checkDragStartedBySelf = function (draggingEvent) {\n if (this.state !== BaseDropZonePanel.STATE_NOT_DRAGGING) {\n return;\n }\n this.state = BaseDropZonePanel.STATE_REARRANGE_COLUMNS;\n this.potentialDndColumns = draggingEvent.dragSource.getDragItem().columns || [];\n this.refreshGui();\n this.checkInsertIndex(draggingEvent);\n this.refreshGui();\n };\n BaseDropZonePanel.prototype.onDragging = function (draggingEvent) {\n this.checkDragStartedBySelf(draggingEvent);\n if (this.checkInsertIndex(draggingEvent)) {\n this.refreshGui();\n }\n };\n BaseDropZonePanel.prototype.onDragEnter = function (draggingEvent) {\n // this will contain all columns that are potential drops\n var dragColumns = draggingEvent.dragSource.getDragItem().columns || [];\n this.state = BaseDropZonePanel.STATE_NEW_COLUMNS_IN;\n // take out columns that are not droppable\n var goodDragColumns = dragColumns.filter(this.isColumnDroppable.bind(this));\n if (goodDragColumns.length > 0) {\n var hideColumnOnExit = this.isRowGroupPanel() && !this.gridOptionsWrapper.isSuppressRowGroupHidesColumns() && !draggingEvent.fromNudge;\n if (hideColumnOnExit) {\n var dragItem = draggingEvent.dragSource.getDragItem();\n var columns = dragItem.columns;\n this.setColumnsVisible(columns, false, \"uiColumnDragged\");\n }\n this.potentialDndColumns = goodDragColumns;\n this.checkInsertIndex(draggingEvent);\n this.refreshGui();\n }\n };\n BaseDropZonePanel.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.colModel.setColumnsVisible(allowedCols, visible, source);\n }\n };\n BaseDropZonePanel.prototype.isPotentialDndColumns = function () {\n return _.existsAndNotEmpty(this.potentialDndColumns);\n };\n BaseDropZonePanel.prototype.isRowGroupPanel = function () {\n return this.dropZonePurpose === 'rowGroup';\n };\n BaseDropZonePanel.prototype.onDragLeave = function (draggingEvent) {\n // if the dragging started from us, we remove the group, however if it started\n // some place else, then we don't, as it was only 'asking'\n if (this.state === BaseDropZonePanel.STATE_REARRANGE_COLUMNS) {\n var columns = draggingEvent.dragSource.getDragItem().columns || [];\n this.removeColumns(columns);\n }\n if (this.isPotentialDndColumns()) {\n var showColumnOnExit = this.isRowGroupPanel() && !this.gridOptionsWrapper.isSuppressMakeColumnVisibleAfterUnGroup() && !draggingEvent.fromNudge;\n if (showColumnOnExit) {\n var dragItem = draggingEvent.dragSource.getDragItem();\n this.setColumnsVisible(dragItem.columns, true, \"uiColumnDragged\");\n }\n this.potentialDndColumns = [];\n this.refreshGui();\n }\n this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n };\n BaseDropZonePanel.prototype.onDragStop = function () {\n if (this.isPotentialDndColumns()) {\n var success = false;\n if (this.state === BaseDropZonePanel.STATE_NEW_COLUMNS_IN) {\n this.addColumns(this.potentialDndColumns);\n success = true;\n }\n else {\n success = this.rearrangeColumns(this.potentialDndColumns);\n }\n this.potentialDndColumns = [];\n // If the function is passive, then we don't refresh, as we assume the client application\n // is going to call setRowGroups / setPivots / setValues at a later point which will then\n // cause a refresh. This gives a nice GUI where the ghost stays until the app has caught\n // up with the changes. However, if there was no change in the order, then we do need to\n // refresh to reset the columns\n if (!this.beans.gridOptionsWrapper.isFunctionsPassive() || !success) {\n this.refreshGui();\n }\n }\n this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n };\n BaseDropZonePanel.prototype.removeColumns = function (columnsToRemove) {\n var newColumnList = this.getExistingColumns().filter(function (col) { return !_.includes(columnsToRemove, col); });\n this.updateColumns(newColumnList);\n };\n BaseDropZonePanel.prototype.addColumns = function (columnsToAdd) {\n if (!columnsToAdd) {\n return;\n }\n var newColumnList = this.getExistingColumns().slice();\n var colsToAddNoDuplicates = columnsToAdd.filter(function (col) { return newColumnList.indexOf(col) < 0; });\n _.insertArrayIntoArray(newColumnList, colsToAddNoDuplicates, this.insertIndex);\n this.updateColumns(newColumnList);\n };\n BaseDropZonePanel.prototype.rearrangeColumns = function (columnsToAdd) {\n var newColumnList = this.getNonGhostColumns().slice();\n _.insertArrayIntoArray(newColumnList, columnsToAdd, this.insertIndex);\n if (_.areEqual(newColumnList, this.getExistingColumns())) {\n return false;\n }\n this.updateColumns(newColumnList);\n return true;\n };\n BaseDropZonePanel.prototype.refreshGui = function () {\n // we reset the scroll position after the refresh.\n // if we don't do this, then the list will always scroll to the top\n // each time we refresh it. this is because part of the refresh empties\n // out the list which sets scroll to zero. so the user could be just\n // reordering the list - we want to prevent the resetting of the scroll.\n // this is relevant for vertical display only (as horizontal has no scroll)\n var scrollTop = this.eColumnDropList.scrollTop;\n var resizeEnabled = this.resizeEnabled;\n var focusedIndex = this.getFocusedItem();\n var alternateElement = this.focusService.findNextFocusableElement();\n if (!alternateElement) {\n alternateElement = this.focusService.findNextFocusableElement(undefined, false, true);\n }\n this.toggleResizable(false);\n this.destroyGui();\n this.addIconAndTitleToGui();\n this.addEmptyMessageToGui();\n this.addColumnsToGui();\n if (!this.isHorizontal()) {\n this.eColumnDropList.scrollTop = scrollTop;\n }\n if (resizeEnabled) {\n this.toggleResizable(resizeEnabled);\n }\n this.restoreFocus(focusedIndex, alternateElement);\n };\n BaseDropZonePanel.prototype.getFocusedItem = function () {\n var eGui = this.getGui();\n var activeElement = this.gridOptionsWrapper.getDocument().activeElement;\n if (!eGui.contains(activeElement)) {\n return -1;\n }\n var items = Array.from(eGui.querySelectorAll('.ag-column-drop-cell'));\n return items.indexOf(activeElement);\n };\n BaseDropZonePanel.prototype.restoreFocus = function (index, alternateElement) {\n var eGui = this.getGui();\n var items = Array.from(eGui.querySelectorAll('.ag-column-drop-cell'));\n if (index === -1) {\n return;\n }\n if (items.length === 0) {\n alternateElement.focus();\n }\n var indexToFocus = Math.min(items.length - 1, index);\n var el = items[indexToFocus];\n if (el) {\n el.focus();\n }\n };\n BaseDropZonePanel.prototype.getNonGhostColumns = function () {\n var _this = this;\n var existingColumns = this.getExistingColumns();\n if (this.isPotentialDndColumns()) {\n return existingColumns.filter(function (column) { return !_.includes(_this.potentialDndColumns, column); });\n }\n return existingColumns;\n };\n BaseDropZonePanel.prototype.addColumnsToGui = function () {\n var _this = this;\n var nonGhostColumns = this.getNonGhostColumns();\n var itemsToAddToGui = nonGhostColumns.map(function (column) { return (_this.createColumnComponent(column, false)); });\n if (this.isPotentialDndColumns()) {\n var dndColumns = this.potentialDndColumns.map(function (column) { return (_this.createColumnComponent(column, true)); });\n if (this.insertIndex >= itemsToAddToGui.length) {\n itemsToAddToGui.push.apply(itemsToAddToGui, __spread(dndColumns));\n }\n else {\n itemsToAddToGui.splice.apply(itemsToAddToGui, __spread([this.insertIndex, 0], dndColumns));\n }\n }\n this.appendChild(this.eColumnDropList);\n itemsToAddToGui.forEach(function (columnComponent, index) {\n if (index > 0) {\n _this.addArrow(_this.eColumnDropList);\n }\n _this.eColumnDropList.appendChild(columnComponent.getGui());\n });\n this.addAriaLabelsToComponents();\n };\n BaseDropZonePanel.prototype.addAriaLabelsToComponents = function () {\n var _this = this;\n this.childColumnComponents.forEach(function (comp, idx) {\n var eGui = comp.getGui();\n _.setAriaPosInSet(eGui, idx + 1);\n _.setAriaSetSize(eGui, _this.childColumnComponents.length);\n });\n };\n BaseDropZonePanel.prototype.createColumnComponent = function (column, ghost) {\n var _this = this;\n var columnComponent = new DropZoneColumnComp(column, this.dropTarget, ghost, this.dropZonePurpose, this.horizontal);\n columnComponent.addEventListener(DropZoneColumnComp.EVENT_COLUMN_REMOVE, this.removeColumns.bind(this, [column]));\n this.beans.context.createBean(columnComponent);\n this.guiDestroyFunctions.push(function () { return _this.destroyBean(columnComponent); });\n if (!ghost) {\n this.childColumnComponents.push(columnComponent);\n }\n return columnComponent;\n };\n BaseDropZonePanel.prototype.addIconAndTitleToGui = function () {\n var eGroupIcon = this.params.icon;\n var eTitleBar = document.createElement('div');\n eTitleBar.setAttribute('aria-hidden', 'true');\n this.addElementClasses(eTitleBar, 'title-bar');\n this.addElementClasses(eGroupIcon, 'icon');\n this.addOrRemoveCssClass('ag-column-drop-empty', this.isExistingColumnsEmpty());\n eTitleBar.appendChild(eGroupIcon);\n if (!this.horizontal) {\n var eTitle = document.createElement('span');\n this.addElementClasses(eTitle, 'title');\n eTitle.innerHTML = this.params.title;\n eTitleBar.appendChild(eTitle);\n }\n this.appendChild(eTitleBar);\n };\n BaseDropZonePanel.prototype.isExistingColumnsEmpty = function () {\n return this.getExistingColumns().length === 0;\n };\n BaseDropZonePanel.prototype.addEmptyMessageToGui = function () {\n if (!this.isExistingColumnsEmpty() || this.isPotentialDndColumns()) {\n return;\n }\n var eMessage = document.createElement('span');\n eMessage.innerHTML = this.params.emptyMessage;\n this.addElementClasses(eMessage, 'empty-message');\n this.eColumnDropList.appendChild(eMessage);\n };\n BaseDropZonePanel.prototype.addArrow = function (eParent) {\n // only add the arrows if the layout is horizontal\n if (this.horizontal) {\n // for RTL it's a left arrow, otherwise it's a right arrow\n var enableRtl = this.beans.gridOptionsWrapper.isEnableRtl();\n var icon = _.createIconNoSpan(enableRtl ? 'smallLeft' : 'smallRight', this.beans.gridOptionsWrapper);\n this.addElementClasses(icon, 'cell-separator');\n eParent.appendChild(icon);\n }\n };\n BaseDropZonePanel.STATE_NOT_DRAGGING = 'notDragging';\n BaseDropZonePanel.STATE_NEW_COLUMNS_IN = 'newColumnsIn';\n BaseDropZonePanel.STATE_REARRANGE_COLUMNS = 'rearrangeColumns';\n __decorate([\n Autowired('columnModel')\n ], BaseDropZonePanel.prototype, \"colModel\", void 0);\n __decorate([\n Autowired('focusService')\n ], BaseDropZonePanel.prototype, \"focusService\", void 0);\n return BaseDropZonePanel;\n}(Component));\nexport { BaseDropZonePanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, DragAndDropService, Events, PostConstruct } from \"@ag-grid-community/core\";\nimport { BaseDropZonePanel } from \"./baseDropZonePanel\";\nvar RowGroupDropZonePanel = /** @class */ (function (_super) {\n __extends(RowGroupDropZonePanel, _super);\n function RowGroupDropZonePanel(horizontal) {\n return _super.call(this, horizontal, 'rowGroup') || this;\n }\n RowGroupDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsWrapper: this.gridOptionsWrapper,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('rowGroupColumnsEmptyMessage', 'Drag here to set row groups');\n var title = localeTextFunc('groups', 'Row Groups');\n _super.prototype.init.call(this, {\n dragAndDropIcon: DragAndDropService.ICON_GROUP,\n icon: _.createIconNoSpan('rowGroupPanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.refreshGui.bind(this));\n };\n RowGroupDropZonePanel.prototype.getAriaLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var label = translate('ariaRowGroupDropZonePanelLabel', 'Row Groups');\n return label;\n };\n RowGroupDropZonePanel.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'rowGroupColumnsList';\n return res;\n };\n RowGroupDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsWrapper.isFunctionsReadOnly() || !column.isPrimary()) {\n return false;\n }\n return column.isAllowRowGroup() && !column.isRowGroupActive();\n };\n RowGroupDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST,\n columns: columns\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnModel.setRowGroupColumns(columns, \"toolPanelUi\");\n }\n };\n RowGroupDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_GROUP : DragAndDropService.ICON_NOT_ALLOWED;\n };\n RowGroupDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnModel.getRowGroupColumns();\n };\n __decorate([\n Autowired('columnModel')\n ], RowGroupDropZonePanel.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('loggerFactory')\n ], RowGroupDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], RowGroupDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n PostConstruct\n ], RowGroupDropZonePanel.prototype, \"passBeansUp\", null);\n return RowGroupDropZonePanel;\n}(BaseDropZonePanel));\nexport { RowGroupDropZonePanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, DragAndDropService, Events, PostConstruct } from \"@ag-grid-community/core\";\nimport { BaseDropZonePanel } from \"./baseDropZonePanel\";\nvar PivotDropZonePanel = /** @class */ (function (_super) {\n __extends(PivotDropZonePanel, _super);\n function PivotDropZonePanel(horizontal) {\n return _super.call(this, horizontal, 'pivot') || this;\n }\n PivotDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsWrapper: this.gridOptionsWrapper,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('pivotColumnsEmptyMessage', 'Drag here to set column labels');\n var title = localeTextFunc('pivots', 'Column Labels');\n _super.prototype.init.call(this, {\n dragAndDropIcon: DragAndDropService.ICON_GROUP,\n icon: _.createIconNoSpan('pivotPanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.refresh.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.refresh.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.checkVisibility.bind(this));\n this.refresh();\n };\n PivotDropZonePanel.prototype.getAriaLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var label = translate('ariaPivotDropZonePanelLabel', 'Column Labels');\n return label;\n };\n PivotDropZonePanel.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'pivotColumnsList';\n return res;\n };\n PivotDropZonePanel.prototype.refresh = function () {\n this.checkVisibility();\n this.refreshGui();\n };\n PivotDropZonePanel.prototype.checkVisibility = function () {\n var pivotMode = this.columnModel.isPivotMode();\n if (this.isHorizontal()) {\n // what we do for horizontal (ie the pivot panel at the top) depends\n // on the user property as well as pivotMode.\n switch (this.gridOptionsWrapper.getPivotPanelShow()) {\n case 'always':\n this.setDisplayed(pivotMode);\n break;\n case 'onlyWhenPivoting':\n var pivotActive = this.columnModel.isPivotActive();\n this.setDisplayed(pivotMode && pivotActive);\n break;\n default:\n // never show it\n this.setDisplayed(false);\n break;\n }\n }\n else {\n // in toolPanel, the pivot panel is always shown when pivot mode is on\n this.setDisplayed(pivotMode);\n }\n };\n PivotDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsWrapper.isFunctionsReadOnly() || !column.isPrimary()) {\n return false;\n }\n return column.isAllowPivot() && !column.isPivotActive();\n };\n PivotDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST,\n columns: columns\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnModel.setPivotColumns(columns, \"toolPanelUi\");\n }\n };\n PivotDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_PIVOT : DragAndDropService.ICON_NOT_ALLOWED;\n };\n PivotDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnModel.getPivotColumns();\n };\n __decorate([\n Autowired('columnModel')\n ], PivotDropZonePanel.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('loggerFactory')\n ], PivotDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], PivotDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n PostConstruct\n ], PivotDropZonePanel.prototype, \"passBeansUp\", null);\n return PivotDropZonePanel;\n}(BaseDropZonePanel));\nexport { PivotDropZonePanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, Constants, Events, PostConstruct, _ } from \"@ag-grid-community/core\";\nimport { RowGroupDropZonePanel } from \"./rowGroupDropZonePanel\";\nimport { PivotDropZonePanel } from \"./pivotDropZonePanel\";\nvar GridHeaderDropZones = /** @class */ (function (_super) {\n __extends(GridHeaderDropZones, _super);\n function GridHeaderDropZones() {\n return _super.call(this) || this;\n }\n GridHeaderDropZones.prototype.postConstruct = function () {\n this.setGui(this.createNorthPanel());\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onRowGroupChanged.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, 'rowGroupPanelShow', this.onRowGroupChanged.bind(this));\n this.onRowGroupChanged();\n };\n GridHeaderDropZones.prototype.createNorthPanel = function () {\n var topPanelGui = document.createElement('div');\n var dropPanelVisibleListener = this.onDropPanelVisible.bind(this);\n topPanelGui.classList.add('ag-column-drop-wrapper');\n _.setAriaRole(topPanelGui, 'presentation');\n this.rowGroupComp = new RowGroupDropZonePanel(true);\n this.createManagedBean(this.rowGroupComp);\n this.pivotComp = new PivotDropZonePanel(true);\n this.createManagedBean(this.pivotComp);\n topPanelGui.appendChild(this.rowGroupComp.getGui());\n topPanelGui.appendChild(this.pivotComp.getGui());\n this.addManagedListener(this.rowGroupComp, Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n this.addManagedListener(this.pivotComp, Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n this.onDropPanelVisible();\n return topPanelGui;\n };\n GridHeaderDropZones.prototype.onDropPanelVisible = function () {\n var bothDisplayed = this.rowGroupComp.isDisplayed() && this.pivotComp.isDisplayed();\n this.rowGroupComp.addOrRemoveCssClass('ag-column-drop-horizontal-half-width', bothDisplayed);\n this.pivotComp.addOrRemoveCssClass('ag-column-drop-horizontal-half-width', bothDisplayed);\n };\n GridHeaderDropZones.prototype.onRowGroupChanged = function () {\n if (!this.rowGroupComp) {\n return;\n }\n var rowGroupPanelShow = this.gridOptionsWrapper.getRowGroupPanelShow();\n if (rowGroupPanelShow === Constants.ALWAYS) {\n this.rowGroupComp.setDisplayed(true);\n }\n else if (rowGroupPanelShow === Constants.ONLY_WHEN_GROUPING) {\n var grouping = !this.columnModel.isRowGroupEmpty();\n this.rowGroupComp.setDisplayed(grouping);\n }\n else {\n this.rowGroupComp.setDisplayed(false);\n }\n };\n __decorate([\n Autowired('columnModel')\n ], GridHeaderDropZones.prototype, \"columnModel\", void 0);\n __decorate([\n PostConstruct\n ], GridHeaderDropZones.prototype, \"postConstruct\", null);\n return GridHeaderDropZones;\n}(Component));\nexport { GridHeaderDropZones };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, BeanStub, } from \"@ag-grid-community/core\";\nvar FilterAggregatesStage = /** @class */ (function (_super) {\n __extends(FilterAggregatesStage, _super);\n function FilterAggregatesStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterAggregatesStage.prototype.execute = function (params) {\n var _this = this;\n var isPivotMode = this.columnModel.isPivotMode();\n var isAggFilterActive = this.filterManager.isAggregateFilterPresent();\n // This is the default filter for applying only to leaf nodes, realistically this should not apply as primary agg columns,\n // should not be applied by the filterManager if getGroupAggFiltering is missing. Predicate will apply filters to leaf level.\n var defaultPrimaryColumnPredicate = function (params) { return !params.node.group; };\n // Default secondary column predicate, selecting only leaf level groups.\n var defaultSecondaryColumnPredicate = (function (params) { return params.node.leafGroup; });\n // The predicate to determine whether filters should apply to this row. Either defined by the user in groupAggFiltering or a default depending\n // on current pivot mode status.\n var applyFilterToNode = this.gridOptionsWrapper.getGroupAggFiltering()\n || (isPivotMode ? defaultSecondaryColumnPredicate : defaultPrimaryColumnPredicate);\n var changedPath = params.changedPath;\n var preserveChildren = function (node, recursive) {\n if (recursive === void 0) { recursive = false; }\n if (node.childrenAfterFilter) {\n node.childrenAfterAggFilter = node.childrenAfterFilter;\n if (recursive) {\n node.childrenAfterAggFilter.forEach(function (child) { return preserveChildren(child, recursive); });\n }\n _this.setAllChildrenCount(node);\n }\n if (node.sibling) {\n node.sibling.childrenAfterAggFilter = node.childrenAfterAggFilter;\n }\n };\n var filterChildren = function (node) {\n var _a;\n node.childrenAfterAggFilter = ((_a = node.childrenAfterFilter) === null || _a === void 0 ? void 0 : _a.filter(function (child) {\n var _a;\n var shouldFilterRow = applyFilterToNode({ node: child });\n if (shouldFilterRow) {\n var doesNodePassFilter = _this.filterManager.doesRowPassAggregateFilters({ rowNode: child });\n if (doesNodePassFilter) {\n // Node has passed, so preserve children\n preserveChildren(child, true);\n return true;\n }\n }\n var hasChildPassed = (_a = child.childrenAfterAggFilter) === null || _a === void 0 ? void 0 : _a.length;\n return hasChildPassed;\n })) || null;\n _this.setAllChildrenCount(node);\n if (node.sibling) {\n node.sibling.childrenAfterAggFilter = node.childrenAfterAggFilter;\n }\n };\n changedPath.forEachChangedNodeDepthFirst(isAggFilterActive ? filterChildren : preserveChildren, true);\n };\n FilterAggregatesStage.prototype.setAllChildrenCountTreeData = function (rowNode) {\n // for tree data, we include all children, groups and leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterAggFilter.forEach(function (child) {\n // include child itself\n allChildrenCount++;\n // include children of children\n allChildrenCount += child.allChildrenCount;\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterAggregatesStage.prototype.setAllChildrenCountGridGrouping = function (rowNode) {\n // for grid data, we only count the leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterAggFilter.forEach(function (child) {\n if (child.group) {\n allChildrenCount += child.allChildrenCount;\n }\n else {\n allChildrenCount++;\n }\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterAggregatesStage.prototype.setAllChildrenCount = function (rowNode) {\n if (!rowNode.hasChildren()) {\n rowNode.setAllChildrenCount(null);\n return;\n }\n if (this.gridOptionsWrapper.isTreeData()) {\n this.setAllChildrenCountTreeData(rowNode);\n }\n else {\n this.setAllChildrenCountGridGrouping(rowNode);\n }\n };\n __decorate([\n Autowired('filterManager')\n ], FilterAggregatesStage.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('columnModel')\n ], FilterAggregatesStage.prototype, \"columnModel\", void 0);\n FilterAggregatesStage = __decorate([\n Bean('filterAggregatesStage')\n ], FilterAggregatesStage);\n return FilterAggregatesStage;\n}(BeanStub));\nexport { FilterAggregatesStage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, DragAndDropService, Events, PostConstruct } from \"@ag-grid-community/core\";\nimport { BaseDropZonePanel } from \"./baseDropZonePanel\";\nvar ValuesDropZonePanel = /** @class */ (function (_super) {\n __extends(ValuesDropZonePanel, _super);\n function ValuesDropZonePanel(horizontal) {\n return _super.call(this, horizontal, 'aggregation') || this;\n }\n ValuesDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsWrapper: this.gridOptionsWrapper,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('valueColumnsEmptyMessage', 'Drag here to aggregate');\n var title = localeTextFunc('values', 'Values');\n _super.prototype.init.call(this, {\n dragAndDropIcon: DragAndDropService.ICON_AGGREGATE,\n icon: _.createIconNoSpan('valuePanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshGui.bind(this));\n };\n ValuesDropZonePanel.prototype.getAriaLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var label = translate('ariaValuesDropZonePanelLabel', 'Values');\n return label;\n };\n ValuesDropZonePanel.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'valueColumnsList';\n return res;\n };\n ValuesDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_AGGREGATE : DragAndDropService.ICON_NOT_ALLOWED;\n };\n ValuesDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsWrapper.isFunctionsReadOnly() || !column.isPrimary()) {\n return false;\n }\n return column.isAllowValue() && !column.isValueActive();\n };\n ValuesDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,\n columns: columns\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnModel.setValueColumns(columns, \"toolPanelUi\");\n }\n };\n ValuesDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnModel.getValueColumns();\n };\n __decorate([\n Autowired('columnModel')\n ], ValuesDropZonePanel.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('loggerFactory')\n ], ValuesDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], ValuesDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n PostConstruct\n ], ValuesDropZonePanel.prototype, \"passBeansUp\", null);\n return ValuesDropZonePanel;\n}(BaseDropZonePanel));\nexport { ValuesDropZonePanel };\n","var BatchRemover = /** @class */ (function () {\n function BatchRemover() {\n this.allSets = {};\n this.allParents = [];\n }\n BatchRemover.prototype.removeFromChildrenAfterGroup = function (parent, child) {\n var set = this.getSet(parent);\n set.removeFromChildrenAfterGroup[child.id] = true;\n };\n BatchRemover.prototype.removeFromAllLeafChildren = function (parent, child) {\n var set = this.getSet(parent);\n set.removeFromAllLeafChildren[child.id] = true;\n };\n BatchRemover.prototype.getSet = function (parent) {\n if (!this.allSets[parent.id]) {\n this.allSets[parent.id] = {\n removeFromAllLeafChildren: {},\n removeFromChildrenAfterGroup: {}\n };\n this.allParents.push(parent);\n }\n return this.allSets[parent.id];\n };\n BatchRemover.prototype.getAllParents = function () {\n return this.allParents;\n };\n BatchRemover.prototype.flush = function () {\n var _this = this;\n this.allParents.forEach(function (parent) {\n var nodeDetails = _this.allSets[parent.id];\n parent.childrenAfterGroup = parent.childrenAfterGroup.filter(function (child) { return !nodeDetails.removeFromChildrenAfterGroup[child.id]; });\n parent.allLeafChildren = parent.allLeafChildren.filter(function (child) { return !nodeDetails.removeFromAllLeafChildren[child.id]; });\n parent.updateHasChildren();\n if (parent.sibling) {\n parent.sibling.childrenAfterGroup = parent.childrenAfterGroup;\n parent.sibling.allLeafChildren = parent.allLeafChildren;\n }\n });\n this.allSets = {};\n this.allParents.length = 0;\n };\n return BatchRemover;\n}());\nexport { BatchRemover };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { AggregationStage } from \"./rowGrouping/aggregationStage\";\nimport { GroupStage } from \"./rowGrouping/groupStage\";\nimport { PivotColDefService } from \"./rowGrouping/pivotColDefService\";\nimport { PivotStage } from \"./rowGrouping/pivotStage\";\nimport { AggFuncService } from \"./rowGrouping/aggFuncService\";\nimport { GridHeaderDropZones } from \"./rowGrouping/columnDropZones/gridHeaderDropZones\";\nimport { FilterAggregatesStage } from \"./rowGrouping/filterAggregatesStage\";\nexport var RowGroupingModule = {\n moduleName: ModuleNames.RowGroupingModule,\n beans: [AggregationStage, FilterAggregatesStage, GroupStage, PivotColDefService, PivotStage, AggFuncService],\n agStackComponents: [\n { componentName: 'AgGridHeaderDropZones', componentClass: GridHeaderDropZones }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n"],"names":["extendStatics","__extends","d","b","Object","Array","p","__","__decorate","decorators","target","key","desc","c","arguments","r","Reflect","i","AggregationStage","_super","params","noValueColumns","_","noUserAgg","changedPathActive","aggDetails","pivotActive","measureColumns","pivotColumns","_this","rowNode","notPivoting","suppressAggAtRootLevel","aggResult","measureColumnsMissing","pivotColumnsMissing","userFunc","result","pivotColumnDefs","v","valueColDef","values","keys","valueColumn","colId","totalColDef","aggResults","pivotValueColumn","pivotTotalColumnIds","currentColId","changedValueColumns","notChangedValueColumns","values2d","oldValues","index","node","value","mappedSet","mapPointer","valueColumns","valueColumnCount","nodeList","rowCount","childNode","j","aggFuncOrString","column","aggFunc","aggFuncAny","undefined","Autowired","Bean","BeanStub","BatchRemover","parent","child","set","nodeDetails","__read","o","n","m","Symbol","e","ar","error","__spread","GroupStage","NumberSequence","details","afterColsChanged","changedPath","group","leafNodes_1","groupNodes_1","row","_a","rowNodeTransactions","rowNodeOrder","groupedCols","tran","batchRemover","parentsWithChildrenRemoved","rootNode","comparator","recursiveSort","nodeA","nodeB","res","pointer","childNodes","infoToKeyMapper","item","oldPath","newPath","newParent","leafRowNodes","nodeParents","callback","nodesToRemove","provided","batchRemoverToUse","nodeToRemove","parentNode","newGroupNode_1","possibleEmptyGroups","checkAgain","groupShouldBeRemoved","mapKey","parentRowNode","_loop_1","possibleEmptyGroup","d1","d2","recurse","rowNodes","groupInfo","afterColumnsChanged","sibling","noFurtherProcessingNeeded","groupDisplayColumns","newGroupDisplayColIds","newRowNodes","isMove","path","parentGroup","nextNode","level","fillerGroup","userGroup","groupNode","RowNode","groupDisplayCols","col","rowGroupColumn","userCallback","expandByDefault","groupCol","keyExists","PostConstruct","__assign","t","s","PivotColDefService","PivotColDefService_1","uniqueValues","levelsDeep","pivotColumnGroupDefs","extractColDefs","input","arr","def","colDef","uniqueValue","pivotKeys","maxDepth","primaryPivotColumns","primaryPivotColumnDefs","leafCols_1","newPivotKeys","groups","measureCol","columnName","recursivelyAddSubTotals","groupDef","currentPivotColumnDefs","acc","childAcc_1","Map","grp","firstGroup_1","children","pivotValueColId","insertAfter","valueCols","aggFuncs","valueCol","colIds","childColIds","headerName","localeTextFunc","this_1","withGroup","parentChildren","addGroup","valueGroup","totalColumn","userComparator","a","m1","m2","map","updatedList","pivotCols","measureColumnId","PivotStage","uniqueValuesChanged","aggregationColumns","aggregationColumnsHash","aggregationFuncsHash","aggregationColumnsChanged","aggregationFuncsChanged","groupColumnsHash","groupColumnsChanged","newValues","JSON","recursivelySearchForLeafNodes","pivotIndex","mappedChildren","pivotColumn","result_1","AGBigInt","BigInt","AggFuncService","AggFuncService_1","aggSum","aggFirst","aggLast","aggMin","aggMax","aggCount","aggAvg","func","allKeys","allowed","funcExists","defaultAgg","name","userAllowedFuncs","_b","_c","sum","count","currentValue","valueToAdd","existingAggData","DropZoneColumnComp","dragSourceDropTarget","ghost","dropZonePurpose","horizontal","eGui","isFunctionsReadOnly","Column","translate","aggFuncName","aggSeparator","sortDirection","columnSort","isSortSuppressed","ariaInstructions","part","aggregationMenuAria","sortProgressAria","deleteAria","refresh","newTooltipText","Events","canSort","isGroupingZone","performSort_1","event","multiSort","sortUsingCtrl","KeyCode","dragSource","DragSourceType","DragAndDropService","visibleState","agEvent","isEnter","mouseEvent","touchListener","TouchListener","aggFuncString","displayValue","displayValueSanitised","virtualList","VirtualList","rows","virtualListGui","ePopup","addPopupRes","comp","rowToFocus","hidePopup","AggItemComp","event_1","el","suffix","direction","Optional","RefSelector","Component","itemSelected","BaseDropZonePanel","document","resizable","beans","ManagedFocusFeature","PositionableFeature","isVertical","isNext","isPrevious","isRtl","type","draggingEvent","newIndex","changed","mouseLocation","boundsList","hoveredIndex","rect","enableRtl","dragColumns","goodDragColumns","columns","dragItem","visible","source","allowedCols","success","columnsToRemove","newColumnList","columnsToAdd","colsToAddNoDuplicates","scrollTop","resizeEnabled","focusedIndex","alternateElement","activeElement","items","indexToFocus","Math","existingColumns","itemsToAddToGui","nonGhostColumns","dndColumns","columnComponent","idx","eGroupIcon","eTitleBar","eTitle","eMessage","eParent","icon","RowGroupDropZonePanel","emptyMessage","title","PivotDropZonePanel","pivotMode","GridHeaderDropZones","topPanelGui","dropPanelVisibleListener","bothDisplayed","rowGroupPanelShow","Constants","grouping","FilterAggregatesStage","isPivotMode","isAggFilterActive","applyFilterToNode","preserveChildren","recursive","shouldFilterRow","allChildrenCount","RowGroupingModule","ModuleNames","EnterpriseCoreModule","ValuesDropZonePanel"],"mappings":"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"}