{"version":3,"sources":["../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/aggregationStage.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/groupStage.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/pivotColDefService.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/pivotStage.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/aggFuncService.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/columnDropZones/dropZoneColumnComp.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/columnDropZones/baseDropZonePanel.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/columnDropZones/rowGroupDropZonePanel.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/columnDropZones/pivotDropZonePanel.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/columnDropZones/gridHeaderDropZones.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGroupingModule.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/columnDropZones/valueDropZonePanel.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/main.js","../node_modules/@ag-grid-enterprise/range-selection/dist/es6/rangeSelection/rangeController.js","../node_modules/@ag-grid-enterprise/range-selection/dist/es6/rangeSelection/abstractSelectionHandle.js","../node_modules/@ag-grid-enterprise/range-selection/dist/es6/rangeSelection/fillHandle.js","../node_modules/@ag-grid-enterprise/range-selection/dist/es6/rangeSelection/rangeHandle.js","../node_modules/@ag-grid-enterprise/range-selection/dist/es6/rangeSelectionModule.js","../node_modules/@ag-grid-enterprise/range-selection/dist/es6/main.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/stylesheet.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/core.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/contentType.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/contentTypes.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/themes/office/colorScheme.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/themes/office/fontScheme.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/themes/office/formatScheme.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/themes/office/themeElements.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/themes/office.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/sharedStrings.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/numberFormat.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/numberFormats.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/font.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/fonts.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/fill.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/fills.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/border.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/borders.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/alignment.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/protection.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/xf.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/cellStyleXfs.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/cellXfs.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/cellStyle.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/cellStyles.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/sheet.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/sheets.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/workbook.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/column.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/cell.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/row.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/mergeCell.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/worksheet.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/relationship.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/relationships.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/excelXlsxFactory.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/workbook.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/excelWorkbook.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/column.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/cell.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/row.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/worksheet.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/documentProperties.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/styles/alignment.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/styles/borders.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/styles/font.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/styles/interior.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/styles/protection.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/styles/numberFormat.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/styles/style.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/excelXmlFactory.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/excelXmlSerializingSession.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/excelXlsxSerializingSession.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/excelCreator.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExportModule.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/main.js","../node_modules/@ag-grid-enterprise/filter-tool-panel/dist/es6/filterToolPanel/filtersToolPanelHeaderPanel.js","../node_modules/@ag-grid-enterprise/filter-tool-panel/dist/es6/filterToolPanel/toolPanelFilterComp.js","../node_modules/@ag-grid-enterprise/filter-tool-panel/dist/es6/filterToolPanel/toolPanelFilterGroupComp.js","../node_modules/@ag-grid-enterprise/filter-tool-panel/dist/es6/filterToolPanel/filtersToolPanelListPanel.js","../node_modules/@ag-grid-enterprise/filter-tool-panel/dist/es6/filterToolPanel/filtersToolPanel.js","../node_modules/@ag-grid-enterprise/filter-tool-panel/dist/es6/filtersToolPanelModule.js","../node_modules/@ag-grid-enterprise/filter-tool-panel/dist/es6/main.js","../node_modules/@ag-grid-enterprise/menu/dist/es6/menu/menuItemComponent.js","../node_modules/@ag-grid-enterprise/menu/dist/es6/menu/menuList.js","../node_modules/@ag-grid-enterprise/menu/dist/es6/menu/enterpriseMenu.js","../node_modules/@ag-grid-enterprise/menu/dist/es6/menu/contextMenu.js","../node_modules/@ag-grid-enterprise/menu/dist/es6/menu/menuItemMapper.js","../node_modules/@ag-grid-enterprise/menu/dist/es6/menuModule.js","../node_modules/@ag-grid-enterprise/menu/dist/es6/main.js","../node_modules/@ag-grid-enterprise/set-filter/dist/es6/setFilter/setValueModel.js","../node_modules/@ag-grid-enterprise/set-filter/dist/es6/setFilter/setFilter.js","../node_modules/@ag-grid-enterprise/set-filter/dist/es6/setFilter/setFilterListItem.js","../node_modules/@ag-grid-enterprise/set-filter/dist/es6/setFilter/setFloatingFilter.js","../node_modules/@ag-grid-enterprise/set-filter/dist/es6/setFilterModule.js","../node_modules/@ag-grid-enterprise/set-filter/dist/es6/main.js","../node_modules/@ag-grid-enterprise/server-side-row-model/dist/es6/serverSideRowModel/serverSideBlock.js","../node_modules/@ag-grid-enterprise/server-side-row-model/dist/es6/serverSideRowModel/serverSideCache.js","../node_modules/@ag-grid-enterprise/server-side-row-model/dist/es6/serverSideRowModel/serverSideRowModel.js","../node_modules/@ag-grid-enterprise/server-side-row-model/dist/es6/serverSideRowModelModule.js","../node_modules/@ag-grid-enterprise/server-side-row-model/dist/es6/main.js","../node_modules/@ag-grid-enterprise/rich-select/dist/es6/richSelect/richSelectRow.js","../node_modules/@ag-grid-enterprise/rich-select/dist/es6/richSelect/richSelectCellEditor.js","../node_modules/@ag-grid-enterprise/rich-select/dist/es6/richSelectModule.js","../node_modules/@ag-grid-enterprise/rich-select/dist/es6/main.js","../node_modules/@ag-grid-enterprise/master-detail/dist/es6/masterDetail/detailCellRenderer.js","../node_modules/@ag-grid-enterprise/master-detail/dist/es6/masterDetailModule.js","../node_modules/@ag-grid-enterprise/master-detail/dist/es6/main.js"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","AggregationStage","prototype","execute","params","exists","this","gridOptionsWrapper","getNodeChildDetailsFunc","noValueColumns","missingOrEmpty","columnController","getValueColumns","noUserAgg","getGroupRowAggNodesFunc","changedPathActive","changedPath","isActive","aggDetails","createAggDetails","recursivelyCreateAggData","pivotActive","isPivotActive","measureColumns","pivotColumns","getPivotColumns","valueColumns","_this","forEachChangedNodeDepthFirst","rowNode","hasChildren","aggData","setAggData","level","notPivoting","isPivotMode","isSuppressAggAtRootLevel","aggregateRowNode","aggResult","measureColumnsMissing","pivotColumnsMissing","userFunc","childrenAfterFilter","aggregateRowNodeUsingValuesOnly","aggregateRowNodeUsingValuesAndPivot","sibling","result","pivotColumnDefs","pivotStage","getPivotColumnDefs","filter","v","pivotTotalColumnIds","forEach","valueColDef","values","keys","pivotKeys","valueColumn","pivotValueColumn","colId","leafGroup","getValuesFromMappedSet","childrenMapped","getValuesPivotNonLeaf","aggregateValues","getAggFunc","totalColDef","aggResults","push","changedValueColumns","getValueColumnsForNode","notChangedValueColumns","getNotValueColumnsForNode","values2d","getValuesNormal","oldValues","index","getId","node","value","mappedSet","mapPointer","valueService","getValue","valueColumnCount","rowCount","childNode","j","aggFuncOrString","aggFunction","aggFuncService","console","error","GroupStage","groupIdSequence","postConstruct","usingTreeData","isTreeData","getDataPath","getDataPathFunc","details","createGroupingDetails","transaction","handleTransaction","afterColsChanged","afterColumnsChanged","shotgunResetEverything","sortGroupsWithComparator","rootNode","selectableService","updateSelectableAfterGrouping","rowNodeTransaction","rowNodeOrder","groupedCols","getRowGroupColumns","usingTransaction","includeParents","isSuppressParentsInRowNodes","expandByDefault","isGroupSuppressRow","getGroupDefaultExpanded","pivotMode","groupedColCount","tran","add","insertNodes","update","moveNodesInWrongPath","remove","removeNodes","sortChildren","sortRowNodesByOrder","childrenAfterGroup","comparator","getDefaultGroupSortComparator","recursiveSort","sort","getExistingPathForNode","res","pointer","parent","rowGroupColumn","field","reverse","childNodes","addParentNode","infoToKeyMapper","item","oldPath","map","newPath","getGroupInfo","compareArrays","moveNode","removeNodesInStages","insertOneNode","setData","data","newParent","leafRowNodes","removeNodesFromParents","postRemoveCreateFillerNodes","postRemoveRemoveEmptyGroups","forEachParentGroup","child","callback","nodesToRemove","batchRemover","BatchRemover","nodeToRemove","removeFromParent","parentNode","removeFromAllLeafChildren","flush","newGroupNode_1","findParentForNode","expanded","allLeafChildren","checkAgain","_loop_1","mapKey","getChildrenMappedKey","parentRowNode","isEmptyRowGroupNode","groupShouldBeRemoved","setSelected","removeFromChildrenAfterGroup","removeFromArray","undefined","setRowTop","addToParent","areGroupColsEqual","d1","d2","skipStage","oldGroupingDetails","newRowNodes","isMove","path","parentGroup","group","warn","swapGroupWithUserNode","nextNode","groupInfo","getOrCreateNextNode","fillerGroup","userGroup","groupData","rowGroupIndex","createGroup","groupNode","context","wireBean","getGroupDisplayColumns","col","isRowGroupDisplayed","getColId","id","next","toString","isExpanded","setAllChildrenCount","getGroupInfoFromCallback","getGroupInfoFromGroupColumns","doOnce","groupCol","getKeyForNode","keyExists","getColDef","allSets","allParents","getSet","nodeDetails","PivotColDefService","createPivotColumnDefs","uniqueValues","pivotColumnGroupDefs","levelsDeep","columnIdSequence","recursivelyAddGroup","addRowGroupTotals","addPivotTotalsToGroups","colDef","cloneObject","parentChildren","primaryPivotColumns","iterateObject","newPivotKeys","slice","groupDef","children","headerName","columnGroupShow","groupId","valueGroup_1","colDef_1","createColDef","measureColumn","columnName","getDisplayNameForColumn","userComparator","pivotComparator","headerNameComparator","bind","getPivotColumnGroupTotals","insertAfter","valueCols","aggFuncs","valueCol","sameAggFuncs","recursivelyAddPivotTotal","def","colIds","grp","childColIds","concat","aggFunc","unshift","getPivotRowTotals","extractColIdsForValueColumn","this_1","createRowGroupTotal","valueGroup","colDefToCopy","assign","hide","a","b","PivotStage","executePivotOn","executePivotOff","aggregationColumnsHashLastTime","isSecondaryColumnsPresent","setSecondaryColumns","setInactive","bucketUpRowNodes","uniqueValuesChanged","setUniqueValues","aggregationColumns","aggregationColumnsHash","column","join","aggregationFuncsHash","aggregationColumnsChanged","aggregationFuncsChanged","aggregationFuncsHashLastTime","pivotColDefService","newValues","JSON","stringify","recursivelySearchForLeafNodes","bucketRowNode","bucketChildren","pivotIndex","mappedChildren","pivotColumn","missing","result_1","AggFuncService","aggFuncsMap","initialised","AggFuncService_1","init","initialiseWithDefaultAggregations","addAggFuncs","getAggFuncs","AGG_SUM","aggSum","AGG_FIRST","aggFirst","AGG_LAST","aggLast","AGG_MIN","aggMin","AGG_MAX","aggMax","AGG_COUNT","aggCount","AGG_AVG","aggAvg","getDefaultAggFunc","allKeys","getFuncNames","sumInKeysList","includes","sumInFuncs","existsAndNotEmpty","addAggFunc","name","userAllowedFuncs","allowedAggFuncs","clear","input","reduce","sum","last","min","max","count","toNumber","_a","itemIsGroupResult","__extends","extendStatics","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","create","_super","DropZoneColumnComp","dragSourceDropTarget","ghost","call","popupShowing","setTemplate","TEMPLATE","eDragHandle","appendChild","createIconNoSpan","btRemove","displayName","setupComponents","isFunctionsReadOnly","addDragSource","dragSource","type","ToolPanel","eElement","getDragItem","createDragItem","dragItemName","dragAndDropService","addDestroyFunc","removeDragSource","visibleState","isVisible","columns","setTextValue","setupRemove","addCssClass","getGui","addGuiEventListener","onShowAggFuncSelection","setDisplayed","addDestroyableEventListener","mouseEvent","agEvent","EVENT_COLUMN_REMOVE","dispatchEvent","stopPropagation","touchListener","EVENT_TAP","event","destroy","displayValue","aggFuncString","getLocaleTextFunc","localeTextFunc","displayValueSanitised","escape","eText","innerHTML","virtualList","rows","setModel","getRow","getRowCount","getContext","ePopup","loadTemplate","style","top","left","width","clientWidth","hidePopup","popupService","addAsModalPopup","setComponentCreator","createAggSelect","positionPopupUnderComponent","eventSource","keepWithinBounds","refresh","aggFuncStringTranslated","AggItemComp","isFunctionsPassive","event_1","EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST","api","gridApi","columnApi","eventService","setColumnAggFunc","itemSelected","innerText","BaseDropZonePanel","horizontal","state","STATE_NOT_DRAGGING","guiDestroyFunctions","childColumnComponents","eColumnDropList","isHorizontal","setBeans","beans","destroyGui","func","clearElement","logger","loggerFactory","addEventListener","EVENT_COLUMN_EVERYTHING_CHANGED","refreshGui","setupDropTarget","dropTarget","getContainer","getIconName","onDragging","onDragEnter","onDragLeave","onDragStop","isInterestedIn","addDropTarget","HeaderCell","checkInsertIndex","draggingEvent","newIndex","getNewHorizontalInsertIndex","getNewVerticalInsertIndex","changed","insertIndex","hDirection","enableRtl","isEnableRtl","goingLeft","Left","mouseX","clientX","childColumn","rect","getBoundingClientRect","rectX","right","vDirection","clientY","Down","bottom","checkDragStartedBySelf","STATE_REARRANGE_COLUMNS","potentialDndColumns","dragColumns","STATE_NEW_COLUMNS_IN","goodDragColumns","isColumnDroppable","isPotentialDndColumns","removeColumns","success","addColumns","rearrangeColumns","columnsToRemove","newColumnList","getExistingColumns","updateColumns","columnsToAdd","insertArrayIntoArray","getNonGhostColumns","shallowCompare","scrollTop","addIconAndTitleToGui","addEmptyMessageToGui","addColumnsToGui","existingColumns","nonGhostColumns","addingGhosts","itemsToAddToGui","columnComponent","createColumnComponent","addArrow","iconFaded","isExistingColumnsEmpty","eGroupIcon","icon","eContainer","document","createElement","addOrRemoveCssClass","eTitle","title","eMessage","emptyMessage","eParent","RowGroupDropZonePanel","passBeansUp","dragAndDropIcon","ICON_GROUP","EVENT_COLUMN_ROW_GROUP_CHANGED","isPrimary","isAllowRowGroup","isRowGroupActive","EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST","setRowGroupColumns","ICON_NOT_ALLOWED","PivotDropZonePanel","EVENT_COLUMN_PIVOT_CHANGED","EVENT_COLUMN_PIVOT_MODE_CHANGED","checkVisibility","getPivotPanelShow","isAllowPivot","EVENT_COLUMN_PIVOT_CHANGE_REQUEST","setPivotColumns","ICON_PIVOT","GridHeaderDropZones","setGui","createNorthPanel","onRowGroupChanged","topPanelGui","dropPanelVisibleListener","onDropPanelVisible","rowGroupComp","pivotComp","EVENT_DISPLAYED_CHANGED","removeEventListener","bothDisplayed","isDisplayed","rowGroupPanelShow","getRowGroupPanelShow","ALWAYS","ONLY_WHEN_GROUPING","grouping","isRowGroupEmpty","RowGroupingModule","moduleName","agStackComponents","componentName","componentClass","dependantModules","ValuesDropZonePanel","ICON_AGGREGATE","EVENT_COLUMN_VALUE_CHANGED","isAllowValue","isValueActive","EVENT_COLUMN_VALUE_CHANGE_REQUEST","setValueColumns","__spreadArrays","s","il","k","jl","RangeController","cellRanges","bodyScrollListener","onBodyScroll","dragging","registerGridComp","gridPanel","autoScrollService","removeAllCellRanges","EVENT_COLUMN_GROUP_OPENED","refreshLastRangeStart","EVENT_COLUMN_MOVED","EVENT_COLUMN_PINNED","EVENT_COLUMN_VISIBLE","onColumnVisibleChange","cellRange","beforeCols","dispatchChangedEvent","lastRange","refreshRangeStart","isContiguousRange","rangeColumns","allColumns","getAllDisplayedColumns","allPositions","indexOf","getRangeStartRow","startRow","endRow","rowPositionUtils","before","rowIndex","rowPinned","pinnedRowModel","getPinnedTopRowCount","PINNED_TOP","getRangeEndRow","pinnedBottomRowCount","getPinnedBottomRowCount","PINNED_BOTTOM","rowModel","setRangeToCell","cell","appendRange","isEnableRangeSelection","calculateColumnsBetween","isSuppressMultiRangeSelection","rowForCell","range","sameRow","startColumn","newestRangeStartCell","extendLatestRangeToCell","cellPosition","isEmpty","updateRangeEnd","silent","endColumn","colsToAdd","moveColInCellRange","colToMove","moveToFront","otherCols","getRangeEdgeColumns","allIndices","extendLatestRangeInDirection","startCell","firstCol","lastCol","endCellIndex","endCellFloating","endCell","newEndCell","cellNavigationService","getNextCellToFocus","setCellRange","rowStartIndex","rowStartPinned","rowEndIndex","rowEndPinned","columnStart","columnEnd","addCellRange","setCellRanges","newRange","createCellRangeFromCellRangeParams","getColumnWithValidation","getCellRanges","isMoreThanOneCell","lastMouseEvent","isCellInAnyRange","getCellRangeCount","isCellInSpecificRange","columnInRange","rowInRange","isRowInRange","isLastCellOfRange","lastRow","isLastColumn","isLastRow","floating","firstRow","thisRow","equalsFirstRow","equalsLastRow","afterFirstRow","beforeLastRow","getDraggingRange","draggingRange","onDragStart","ctrlKey","metaKey","shiftKey","multiKeyPressed","multiSelectKeyPressed","mouseCell","mouseEventService","getCellPositionForEvent","draggingCell","mouseRowPosition","addScrollEventListener","isMouseAndStartInPinned","position","skipVerticalScroll","check","cellPositionUtils","equals","ensureCleared","removeScrollEventListener","started","finished","freeze","EVENT_RANGE_SELECTION_CHANGED","columnFrom","columnTo","isSameColumn","fromIndex","toIndex","firstIndex","Math","lastIndex","AutoScrollService","tickingInterval","getBodyClientRect","getDomLayout","DOM_LAYOUT_NORMAL","isHorizontalScrollShowing","tickLeft","tickRight","tickUp","tickDown","ensureTickingStarted","window","setInterval","doTick","tickCount","tickAmount","vScrollPosition","getVScrollPosition","hScrollPosition","getHScrollPosition","setVerticalScrollPosition","setHorizontalScrollPosition","clearInterval","AbstractSelectionHandle","apply","changedCell","shouldDestroyOnEndDragging","dragService","dragStartPixels","e","rangeController","onDrag","onDragEnd","clearValues","removeCssClass","body","preventRangeExtension","isDragging","getCellComp","cellComp","setCellComp","getCellRange","rangeStartRow","setRangeStartRow","row","rangeEndRow","setRangeEndRow","getLastCellHovered","lastCellHovered","preventDefault","cellHoverListener","rowRenderer","getGridCore","getRootGui","updateLastCellPositionHovered","getType","oldCellComp","eGui","start","end","setTimeout","isAlive","removeListeners","parentElement","removeChild","__assign","t","n","FillHandle","markedCellComps","cellValues","isUp","isLeft","isReduce","initialXY","top_1","x","y","_b","direction","abs","dragAxis","initialPosition","getCellPosition","lastCellMarked","markPathFrom","finalRange","isX","initialRange","colLen","raiseFillStartEvent","handleValueChanged","raiseFillEndEvent","fillStartEvent","EVENT_FILL_START","getColumnApi","getApi","fillEndEvent","EVENT_FILL_END","initialRangeEndRow","initialRangeStartRow","finalRangeEndRow","finalRangeStartRow","isVertical","isSuppressClearOnFillReduction","withinInitialRange","initialValues","idx","resetValues","iterateAcrossCells","currentRow","getRowNode","fillValues","getRowAbove","getRowBelow","updateInitialSet","currentValue","processValues","isCellEditable","setValue","clearCellsInRange","_loop_2","userFillOperation","getFillOperation","userResult","currentIndex","allNumbers","some","val","isNaN","parseFloat","altKey","multiplier","findLineByLeastSquares","Number","clearMarkedPath","clearCellValues","currentPosition","isBefore","reduceVertical","extendVertical","initialColumn","currentColumn","displayedColumns","initialIndex","reduceHorizontal","extendHorizontal","endPosition","isMovingUp","rowPos","cellPos","cellInRange","isInitialRow","getComponentForCell","celPos","isMovingLeft","allCols","startCol","endCol","offset","colsToMark","RangeHandle","rangeFixed","fixRangeStartEnd","DIMENSION","VALUE","RangeSelectionModule","stylesMap","registeredNumberFmts","registeredFonts","registeredFills","registeredBorders","registeredCellStyleXfs","registeredCellXfs","registeredCellStyles","core","getTemplate","jsonDate","Date","toJSON","properties","prefixedAttributes","prefix","cp","dc","dcterms","dcmitype","xsi","textNode","rawMap","contentType","config","ContentType","Extension","PartName","contentTypes","xmlns","getColorChildren","props","lastClr","getFont","typeface","script","panose","utf8_encode","getPropertyVal","getGs","pos","schemeColor","satMod","lumMod","tint","shade","getSolidFill","getGradFill","rotWithShape","gs1","gs2","gs3","lin","ang","scaled","getLine","w","cap","cmpd","algn","lim","getEffectStyle","shadow","blurRad","dist","dir","office","buildSharedString","strings","uniqueCount","numberFormat","formatCode","numFmtId","numberFormatMap","numberFormats","font","size","colorTheme","color","_c","family","scheme","italic","bold","strike","outline","underline","theme","rgb","lUnder","toLocaleLowerCase","fonts","fill","patternType","fgTheme","fgTint","fgRgb","bgRgb","bgIndexed","pf","indexed","fills","getBorderColor","convertLegacyColor","border","diagonal","leftChildren","rightChildren","topChildren","bottomChildren","diagonalChildren","mappedNames","None","Dot","Dash","Double","DashDot","DashDotDot","SlantDashDot","mediumBorders","convertLegacyBorder","weight","namedWeight","mappedName","charAt","toLowerCase","substr","borders","convertLegacyHorizontalAlignment","alignment","Automatic","Center","Right","Fill","Justify","CenterAcrossSelection","Distributed","JustifyDistributed","convertLegacyVerticalAlignment","Top","Bottom","getReadingOrderId","readingOrder","indent","rotate","shrinkToFit","vertical","wrapText","textRotation","protection","locked","protected","hidden","hideFormula","xf","borderId","fillId","fontId","xfId","applyAlignment","applyProtection","applyBorder","applyFont","applyNumberFormat","cellStyle","builtinId","cellStyles","resetStylesheetValues","base","registerFont","fontName","strikeThrough","utf8Name","convertedColor","familyId","getFamilyId","findIndex","currentFont","registerStyle","interior","currentFill","currentBorder","currentNumberFmt","convertedPattern","pattern","Solid","Gray50","Gray75","Gray25","HorzStripe","VertStripe","ReverseDiagStripe","DiagStripe","DiagCross","ThickDiagCross","ThinHorzStripe","ThinVertStripe","ThinReverseDiagStripe","ThinDiagStripe","ThinHorzCross","ThinDiagCross","Gray125","Gray0625","convertedFillColor","convertedPatternColor","patternColor","registerFill","bottomStyle","topStyle","leftStyle","rightStyle","bottomColor","topColor","leftColor","rightColor","borderBottom","borderTop","borderLeft","borderRight","lineStyle","clS","clC","crS","crC","ctS","ctC","_d","cbS","cbC","registerBorders","format","currentFormat","registerNumberFmt","stylesheet","cellStylesXfs","cellXfs","defaultPivotStyle","defaultTableStyle","sheet","sheetId","sheets","names","workbook","bestFit","excelWidth","customWidth","ceil","getExcelCellWidth","ref","styleId","convertedType","toUpperCase","convertLegacyType","obj","collapsed","height","cells","rowIdx","mergeMap","posCounter","mergeAcross","excelPos","mergedCells","getExcelColumnName","splice","addEmptyCells","ht","customHeight","customFormat","getMergedCells","cols","merges","currentCell","cellIdx","outputRow","prevCol","currentMin","updateColMinMax","colIdx","fromCharCode","String","floor","tableIdx","worksheet","table","relationship","Id","Type","Target","relationships","ExcelXlsxFactory","sharedStrings","createSharedStrings","createXmlPart","xmlFactory","createHeader","encoding","standalone","createXml","createExcel","styles","worksheets","sheetNames","registerStyles","createWorksheet","createCore","createContentTypes","createRels","rs","createStylesheet","createTheme","createWorkbook","createWorkbookRels","o","ss","html","Width","MergeAcross","StyleID","it","ws","Name","styleProperties","Vertical","Horizontal","Indent","ReadingOrder","Rotate","ShrinkToFit","VerticalText","verticalText","WrapText","Position","LineStyle","Weight","Color","Bold","FontName","Italic","Outline","Shadow","Size","StrikeThrough","Underline","VerticalAlign","verticalAlign","CharSet","charSet","Family","Pattern","PatternColor","Protected","HideFormula","Format","ID","ExcelXmlFactory","header","excelXmlHeader","docProps","eWorkbook","wb","boolean","docProperties","stylesXmlElement","styleXmlElement","compose","addProperty","property","options","ExcelXmlSerializingSession","mixedStyles","mixedStyleCounter","stylesByIds","baseExcelStyles","excelStyles","addCustomContent","customContent","prepare","columnsToExport","convertColumnToExcel","onNewHeaderGroupingRow","currentCells","headerRowHeight","onColumn","span","styleIds","styleLinker","HEADER_GROUPING","createMergedCell","onNewHeaderRow","onNewRow","onNewHeaderColumn","onNewBodyRow","onNewBodyColumn","rowHeight","onNewColumnAccumulator","nameForCol","extractHeaderValue","HEADER","createCell","parse","longestRow","sheetName","excelFactory","excelStyleId","valueForCell","extractRowCellValue","EXPORT_TYPE_EXCEL","BODY","addNewMixedStyle","excelID","getDataTypeForValue","isNumeric","excelId","resultantStyle","excelStyle","mergeDeep","deepCloneObject","styleExists","actualStyle","typeTransformed","dataType","suppressTextAsCDATA","cdataEndRegex","RegExp","replace","massageText","valueOf","numOfCells","columnWidth","getActualWidth","ExcelXlsxSerializingSession","stringList","stringMap","getStringPosition","ExcelCreator","downloader","gridSerializer","exportDataAsExcel","setExportMode","exportMode","export","getDataAsExcelXml","getData","getMimeType","getExportMode","getDefaultFileName","getDefaultFileExtension","createSerializingSession","isXlsx","xlsxFactory","excelXmlFactory","gridOptions","rowType","colIndex","applicableStyles","stylingService","processAllCellClasses","$scope","className","isExportSuppressed","isSuppressExcelExport","packageFile","zipContainer","addFolders","addFile","getContent","ExcelExportModule","EXPAND_STATE","FiltersToolPanelHeaderPanel","preConstruct","translate","createExpandIcons","setExpandState","EXPANDED","eExpand","onExpandClicked","eSearchTextField","onSearchTextChanged","EVENT_NEW_COLUMNS_LOADED","showOrHideOptions","isReady","eExpandChecked","eExpandUnchecked","eExpandIndeterminate","showFilterSearch","suppressFilterSearch","showExpand","suppressExpandAll","filterGroupsPresent","getAllGridColumns","getOriginalParent","isFilterAllowed","eFilterWrapper","onSearchTextChangedDebounced","debounce","searchText","currentExpandState","COLLAPSED","INDETERMINATE","ToolPanelFilterComp","hideHeader","setColumn","eFilterName","eFilterToolPanelHeader","toggleExpanded","EVENT_FILTER_OPENED","onFilterOpened","addInIcon","eFilterIcon","isFilterActive","EVENT_FILTER_CHANGED","onFilterChanged","getColumn","getColumnFilterName","iconName","eIcon","filterManager","collapse","expand","container","filterPromise","getOrCreateFilterWrapper","then","underlyingFilter","agFilterToolPanelBody","afterGuiAttached","refreshFilter","refreshVirtualList","source","ToolPanelFilterGroupComp","columnGroup","childFilterComps","expandedCallback","depth","setGroupTitle","filterGroupComp","setAlignItems","filterComp","addItem","isColumnGroup","addTopLevelColumnGroupExpandListener","addFilterChangedListeners","refreshFilters","getChildren","getFilterGroupName","filterGroupName","getFilterGroupId","hideGroupItem","hideItem","hideGroup","group_1","getLeafColumns","column_1","toggleGroupExpand","getColumnGroupName","getColumnName","setTitle","getDisplayNameForOriginalColumnGroup","destroyFilters","FiltersToolPanelListPanel","filterGroupComps","defaultParams","suppressSyncLayoutWithGrid","onColumnsChanged","EVENT_TOOL_PANEL_VISIBLE_CHANGED","pivotModeActive","syncFilterLayout","buildTreeFromProvidedColumnDefs","toolPanelColDefService","syncLayoutWithGrid","setFiltersLayout","columnTree","getPrimaryColumnTree","recursivelyAddComps","len","comp","setFirstAndLastVisible","searchFilterText","searchFilters","fireExpandedEvent","colDefs","createColumnTree","tree","flatten","recursivelyAddFilterGroupComps","shouldDisplayFilter","onGroupExpanded","filtersExistInChildren","getColGroupDef","suppressFiltersToolPanel","newDepth","isPadding","setVisible","visible","expandFilterGroups","groupIds","updatedGroupIds","updateGroupExpandState","filterGroup","unrecognisedGroupIds","expandFilters","updatedColIds","anyChildrenChanged_1","updateFilterExpandState","unrecognisedColIds","expandedCount","notExpandedCount","updateExpandCounts","performFilterSearch","searchFilter","firstVisible","lastVisible","passesFilter","groupName","recursivelySearch","filterItem","parentPasses","groupNamePasses","alreadyPassed","anyChildPasses","childPasses","containsClass","firstIdx","lastIdx","FiltersToolPanel","filtersToolPanelHeaderPanel","filtersToolPanelListPanel","hideExpand","hideSearch","onExpandAll","onCollapseAll","onSearchChanged","setFilterLayout","collapseFilterGroups","collapseFilters","FiltersToolPanelModule","userComponents","MenuItemComponent","checked","isNodeOrElement","tooltip","isEnableBrowserTooltips","setAttribute","tooltipManager","registerTooltip","shortcut","eShortcut","subMenu","ePopupPointer","eName","disabled","onOptionSelected","cssClasses","getTooltipText","getComponentHolder","EVENT_ITEM_SELECTED","action","MenuList","timerCount","removeChildFuncs","clearActiveItem","removeActiveItem","removeChildPopup","addMenuItems","menuItems","menuItemOrString","addSeparator","menuItem","menuItemDef","cMenuItem","showChildMenu","mouseEnterItem","mouseLeaveItem","menuItemParams","activeMenuItemParams","activeMenuItem","addHoverForChildPopup","menuItemComp","timerCountCopy","shouldShow","showingThisMenu","subMenuParentDef","SEPARATOR_TEMPLATE","childMenu","hidePopupFunc","positionPopupForMenu","selectedListener","EnterpriseMenuFactory","hideActiveMenu","activeMenu","showMenuAfterMouseEvent","defaultTab","showMenu","menu","positionPopupUnderMouseEvent","showTab","showMenuAfterButtonClick","restrictToTabs","alignSide","minDims","getMinDimensions","nudgeX","nudgeY","minWidth","minHeight","positionCallback","lastSelectedTab","eMenuGui","setMenuVisible","showTabBasedOnPreviousSelection","EVENT_TAB_SELECTED","EVENT_DESTROYED","isMenuEnabled","getMenuTabs","TABS_DEFAULT","EnterpriseMenu","initialSelection","restrictTo","tabFactories","includeChecks","timeOfLastColumnChange","now","TAB_GENERAL","createMainPanel","TAB_FILTER","createFilterPanel","TAB_COLUMNS","createColumnsPanel","tabbedLayout","tabs","getTabsToCreate","menuTabName","createTab","items","cssClass","onActiveItemClicked","onHidePopup","onItemClicked","onTabItemClicked","EVENT_DISPLAYED_COLUMNS_CHANGED","onDisplayedColumnsChanged","tabName","isValidMenuTabItem","isNotSuppressed","isModuleLoaded","isRegistered","ColumnToolPanelModule","isValid","itemsToConsider","toShow","tabItemColumns","showItem","tabItemFilter","tabItemGeneral","showFirstItem","ev","columnSelectPanel","mainMenuList","getMenuItems","defaultMenuOptions","getDefaultMenuOptions","getMainMenuItemsFunc","defaultItems","removeRepeatsFromArray","MENU_ITEM_SEPARATOR","allowPinning","lockPinned","rowGroupCount","doingGrouping","groupedByThisColumn","allowValue","allowRowGroup","pivotModeOn","isInMemoryRowModel","ROW_MODEL_TYPE_CLIENT_SIDE","allowValueAgg","allowExpandAndContract","menuItemsMapped","menuItemMapper","mapWithStockItems","bodyPromise","resolve","filterWrapper","afterFilterAttachedCallback","guiPromise","promise","afterAttachedCallback","eWrapperDiv","createComponent","suppressValues","suppressPivots","suppressRowGroups","suppressPivotMode","contractColumnSelection","suppressColumnExpandAll","suppressColumnFilter","suppressColumnSelectAll","suppressSideButtons","setAfterAttachedParams","initialScroll","getHorizontalPixelRange","newScroll","getScrollbarWidth","ContextMenuFactory","ClipboardModule","isEnableCharts","GridChartsModule","csvModuleMissing","CsvExportModule","excelModuleMissing","suppressExcel","suppressCsv","isSuppressCsvExport","isIOSUserAgent","getContextMenuItemsFunc","ContextMenu","menuList","MenuItemMapper","originalList","resultList","getStockMenuItem","resultDef","skipHeaderOnAutoSize","isSkipHeaderOnAutoSize","setColumnPinned","PINNED_LEFT","isPinnedLeft","PINNED_RIGHT","isPinnedRight","isPinned","assertRegistered","createAggregationSubMenu","autoSizeColumn","autoSizeAllColumns","addRowGroupColumn","removeRowGroupColumn","resetColumnState","expandAll","collapseAll","clipboardService","copyToClipboard","pasteFromClipboard","exportSubMenuItems","csvModuleLoaded","excelModuleLoaded","exportDataAsCsv","chartMenuItem","getChartItems","pivotChartMenuItem","localeKey","defaultText","chartType","chartService","createPivotChart","rangeChartMenuItem","createChartFromCurrentRange","GroupedColumn","StackedColumn","NormalizedColumn","GroupedBar","StackedBar","NormalizedBar","Pie","Doughnut","Line","Scatter","Bubble","Area","StackedArea","NormalizedArea","columnToUse","columnIsAlreadyAggValue","funcNames","funcName","addValueColumn","MenuModule","SetFilterModelValuesType","CheckboxState","SetValueModel","valueGetter","doesRowPassOtherFilters","suppressSorting","modelUpdatedFunc","isLoadingFunc","valueFormatterService","clientSideRowModel","filterParams","valuesType","isArray","PROVIDED_LIST","PROVIDED_CB","showingAvailableOnly","suppressRemoveEntries","NOT_PROVIDED","createAllUniqueValues","createAvailableUniqueValues","displayedValues","availableUniqueValues","miniFilter","selectedValuesMap","selectAllUsingMiniFilter","formatter","textFormatter","DEFAULT_FORMATTER","refreshAfterNewRowsLoaded","keepSelection","everythingSelected","refreshSelection","refreshValues","valuesToUse","isSelectAll","setValues","oldModel","processMiniFilter","refreshAfterAnyFilterChanged","areValuesSync","extractSyncValuesToUse","filterValuesPromise","filterValuesExternalPromise","external","callback_1","params_1","onAsyncValuesLoaded","setValuesType","getValuesType","allUniqueValues","sortValues","toStrings","Error","uniqueValuesAsAnyObjects","getUniqueValues","defaultComparator","filterOutNotAvailable","uniqueCheck","addUniqueValueIfMissing","forEachLeafNode","keyCreator","setMiniFilter","newMiniFilter","makeNull","getMiniFilter","miniFilterUpperCase","matchesFn","valueToCheck","l","displayedValue","formattedValue","formatValue","getDisplayedValueCount","getDisplayedValue","selectOn","toSelectOn","safeKey","valueToKey","selectedValuesCount","keyToValue","selectNothingUsingMiniFilter","unselectValue","selectNothing","getUniqueValueCount","getUniqueValue","selectAllFromMiniFilter","selectValue","isValueSelected","isEverythingSelected","isNothingSelected","getModel","selectedValues","model","setSyncModel","rawValue","onFilterValuesReady","firstOneOnly","SetFilterListItem","selected","useCellRenderer","eTarget","cellRendererPromise","userComponentFactory","newCellRenderer","bindCellRendererToHtmlElement","valueFormatted","eCheckedIcon","eUncheckedIcon","eCheckbox","queryForHtmlElement","useNativeCheckboxes","eNativeCheckbox","eClickableArea","updateCheckboxIcon","render","addAgGridEventPath","EVENT_SELECTED","isSelected","valueElement","componentPromise","component","SetFilter","updateUiVisibility","createBodyTemplate","resetUiToDefaults","valueModel","selectEverything","setModelIntoUi","updateSelectAll","getModelFromUi","isEnableOldSetFilterModel","filterType","areModelsEqual","setParams","checkSetFilterDeprecatedParams","setFilterParams","eIndeterminateCheckedIcon","eSelectAllCheckbox","eSelectAll","initialiseFilterBodyUi","suppressSyncValuesAfterDataChange","setupSyncValuesAfterDataChange","syncValuesLikeExcel","selectAllOnMiniFilter","resetFilterValuesAndReapplyModel","modelBeforeUpdate","resetFilterValues","EVENT_ROW_DATA_UPDATED","EVENT_CELL_VALUE_CHANGED","selectAllState","CHECKED","indeterminate","INTERMEDIATE","UNCHECKED","setLoading","loading","eFilterLoading","eSetFilterList","getRefElement","createSetListItem","doesRowPassOtherFilter","toSelect","setFilterValues","ModelWrapper","querySelector","suppressMiniFilter","eMiniFilter","onMiniFilterInput","onMiniFilterKeyPress","eSelectAllContainer","onSelectAll","suppressSelectAll","listItem","onItemSelected","focus","applyModel","appliedModel","appliedModelValuesMapped","doesFilterPass","onNewRowsLoaded","valuesTypeProvided","newRowsActionKeep","isNewRowsActionKeep","selectAll","notify","newRowsAction","option","onUiChanged","onAnyFilterChanged","isKeyPressed","KEY_ENTER","onEnterKeyOnMiniFilter","doSelectAll","SetFloatingFilterComp","eFloatingFilterText","onParentModelChanged","parentModel","formattedValues","arrayToDisplay","valuesString","SetFilterModule","__param","paramIndex","decorator","ServerSideBlock","pageNumber","parentCache","groupLevel","rowGroupCols","usingMasterDetail","isMasterDetail","groupColVo","groupField","createNodeIdPrefix","parts","nodeIdPrefix","createIdForIndex","getNodeIdPrefix","displayRowIndex","bottomPointer","getStartRow","virtualRowCount","getVirtualRowCount","getEndRow","topPointer","midPointer","currentRowNode","getRowUsingLocalIndex","master","detailNode","childrenCache","isDisplayIndexInCache","setDataAndId","stub","idToUse","setRowHeight","getRowHeightForNode","getServerSideGroupKey","getServerSideGroupKeyFunc","isServerSideGroup","getIsServerSideGroupFunc","isRowMasterFunc","getIsRowMasterFunc","setGroupDataIntoRowNode","setChildCountIntoRowNode","getChildCount","getChildCountFunc","allChildrenCount","groupDisplayCols","groupValue","loadFromDatasource","createLoadParams","datasource","getRows","createBlankRowNode","uiLevel","createGroupKeys","isPixelInRange","pixel","blockTop","blockHeight","getRowBounds","extractRowBounds","rowTop","serverSideCache","getRowIndexAtPixel","clearRowTops","forEachRowNode","clearRowTop","setDisplayIndexes","displayIndexSeq","nextRowTop","displayIndexStart","peek","setRowIndex","displayIndexEnd","groupKeys","request","pivotCols","filterModel","sortModel","successCallback","pageLoaded","getVersion","failCallback","pageLoadFailed","isDisplayIndexInBlock","displayIndex","isBlockBefore","getDisplayIndexStart","getDisplayIndexEnd","getBlockHeight","getBlockTop","isGroupLevel","getGroupField","DefaultBlockSize","ServerSideCache","cacheParams","cacheTop","blockHeights","log","blockFound","lastBlock","forEachBlockInOrder","block","nextRowIndex","rowsBetween","destroyBlock","lastAllowedIndex","lastBlockId","blockSize","getBlockSize","currentBlock","blockId","blocksSkippedCount","rowsSkippedCount","skip","blockToAddId","lastVisitedRow","rowsNotAccountedFor","cacheHeight","dontCreateBlock","beforeBlock","displayIndexStart_1","blockNumber","getBlockNumber","cachedBlockHeight","localIndex","createBlock","getTopLevelRowDisplayedIndex","topLevelIndex","blockBefore_1","getBlock","currentId","lastRowTopLevelIndex","indexDiff","newBlock","displayIndexSequence","postCreateBlock","getChildCache","nextKey","nextServerSideCache","forEachNodeShallow","keyListForNextLevel","refreshCacheAfterSort","changedColumnsInSort","rowGroupColIds","shouldPurgeCache","rowGroupBlock","sortingByGroup","purgeCache","nextCache","ServerSideRowModel","ensureRowHeightsValid","startPixel","endPixel","startLimitIndex","endLimitIndex","getRowHeightAsNumber","addEventListeners","getServerSideDatasource","setDatasource","destroyDatasource","datasourceChanged","onColumnRowGroupChanged","EVENT_ROW_GROUP_OPENED","onRowGroupOpened","onPivotModeChanged","onColumnEverything","onValueChanged","onColumnPivotChanged","EVENT_SORT_CHANGED","onSortChanged","reset","isLastRowFound","cacheExists","isMaxRowFound","isSuppressEnterpriseResetOnNewColumns","resetRequired","rowGroupColumnVos","toValueObjects","valueColumnVos","pivotColumnVos","sortModelDifferent","jsonEquals","sortController","getSortModel","rowGroupDifferent","pivotDifferent","valuesDifferent","findChangedColumnsInSort","newSortModel","oldSortModel","allColsInBothSorts","ids","sm","oldSortItem","find","newSortItem","differentSorts","differentIndexes","extractSortModel","sortingWithValueCol","isSortingWithValueColumn","sortingWithSecondaryCol","isSortingWithSecondaryColumn","isServerSideSortingAlwaysResets","createDetailNode","createNodeCache","isPurgeClosedRowNodes","updateRowIndexesAndBounds","modelUpdatedEvent","EVENT_MODEL_UPDATED","newPage","newData","animate","rowAnimationEnabled","isAnimateRows","shouldAnimate","keepRenderedRows","createNewRowNodeBlockLoader","createCacheParams","rowDataChangedEvent","EVENT_ROW_DATA_CHANGED","destroyRowNodeBlockLoader","maxConcurrentRequests","getMaxConcurrentDatasourceRequests","blockLoadDebounceMillis","getBlockLoadDebounceMillis","rowNodeBlockLoader","dynamicRowHeight","isDynamicRowHeight","maxBlocksInCache","getMaxBlocksInCache","isAutoRowHeightActive","getFilterModel","lastAccessedSequence","overflowSize","initialRowCount","getCacheBlockSize","cache","EVENT_CACHE_UPDATED","onCacheUpdated","resetRowTops","numberSequence","forEachNodeDeep","getTopLevelRowCount","getCurrentPageHeight","isRowsToRender","ROW_MODEL_TYPE_SERVER_SIDE","forEachNode","executeOnCache","route","cacheToPurge","getNodesInRangeForSelection","firstInRange","lastInRange","getRowNodesInRange","getBlockState","isRowPresent","autoGroupIndex","GROUP_AUTO_COLUMN_ID","individualGroupCols","individualGroupCol","isGroupMultiAutoColumn","multiColumnPrefix","valueColIds","getSecondaryColumns","secondaryColIds","masterNode","detail","selectable","isLoading","ServerSideRowModelModule","rowModels","RichSelectRow","setState","populateWithRenderer","populateWithoutRenderer","valueToRender","textContent","childComponent","RichSelectCellEditor","selectionConfirmed","searchString","selectedValue","originalSelectedValue","focusAfterAttached","cellStartedEdit","eValue","createRowComponent","eList","cellHeight","renderSelectedValue","onKeyDown","virtualListGui","onClick","onMouseMove","clearSearchString","charPress","which","keyCode","onEnterKeyDown","KEY_DOWN","KEY_UP","onNavigationKeyPressed","stopEditing","oldIndex","valueToSelect","setSelectedValue","isCharacterKey","runSearch","searchStrings","topSuggestion","fuzzySuggestions","topValue","renderer","ensureIndexVisible","getScrollTop","mouseY","getRowHeight","selectedIndex","RichSelectModule","DetailCellRenderer","needRefresh","suppressRefresh","rowId","masterGridApi","selectAndSetTemplate","eDetailGrid","addThemeToDetailGrid","createDetailsGrid","registerDetailWithMaster","loadRowData","detailGridOptions","doLayout","EVENT_DATA_CHANGED","environment","getTheme","gridInfo","addDetailGridInfo","detailGridInfo","removeDetailGridInfo","paramsAny","template","templateFunc","$compile","providedBeanInstances","agGridReact","frameworkComponentWrapper","getDetailRowData","setRowData","rowData","MasterDetailModule"],"mappings":"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","file":"static/js/defaultVendors~main~d1caff1f.21803d18.chunk.js","sourcesContent":["var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, Autowired, _ } from \"@ag-grid-community/core\";\nvar AggregationStage = /** @class */ (function () {\n function AggregationStage() {\n }\n // it's possible to recompute the aggregate without doing the other parts\n // + gridApi.recomputeAggregates()\n AggregationStage.prototype.execute = function (params) {\n // we don't do aggregation if doing legacy tree good\n var doingLegacyTreeData = _.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n if (doingLegacyTreeData) {\n return null;\n }\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.columnController.getValueColumns());\n var noUserAgg = !this.gridOptionsWrapper.getGroupRowAggNodesFunc();\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.columnController.isPivotActive();\n var measureColumns = this.columnController.getValueColumns();\n var pivotColumns = pivotActive ? this.columnController.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 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.columnController.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.getGroupRowAggNodesFunc();\n var aggResult;\n if (userFunc) {\n aggResult = userFunc(rowNode.childrenAfterFilter);\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());\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 (colId) {\n aggResults.push(result[colId]);\n });\n result[colId] = _this.aggregateValues(aggResults, pivotValueColumn.getAggFunc());\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());\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 rowCount = rowNode.childrenAfterFilter.length;\n for (var i = 0; i < rowCount; i++) {\n var childNode = rowNode.childrenAfterFilter[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) {\n var aggFunction = typeof aggFuncOrString === 'string' ?\n this.aggFuncService.getAggFunc(aggFuncOrString) :\n aggFuncOrString;\n if (typeof aggFunction !== 'function') {\n console.error(\"ag-Grid: unrecognised aggregation function \" + aggFuncOrString);\n return null;\n }\n return aggFunction(values);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], AggregationStage.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], AggregationStage.prototype, \"columnController\", 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 AggregationStage = __decorate([\n Bean('aggregationStage')\n ], AggregationStage);\n return AggregationStage;\n}());\nexport { AggregationStage };\n","var __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, NumberSequence, PostConstruct, RowNode, _ } from \"@ag-grid-community/core\";\nvar GroupStage = /** @class */ (function () {\n function GroupStage() {\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. we set to -1 as others row id 0 will be shared\n // with the other rows.\n this.groupIdSequence = new NumberSequence(1);\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.transaction) {\n this.handleTransaction(details);\n }\n else {\n var afterColsChanged = params.afterColumnsChanged === true;\n this.shotgunResetEverything(details, afterColsChanged);\n }\n this.sortGroupsWithComparator(details.rootNode);\n this.selectableService.updateSelectableAfterGrouping(details.rootNode);\n };\n GroupStage.prototype.createGroupingDetails = function (params) {\n var rowNode = params.rowNode, changedPath = params.changedPath, rowNodeTransaction = params.rowNodeTransaction, rowNodeOrder = params.rowNodeOrder;\n var groupedCols = this.usingTreeData ? null : this.columnController.getRowGroupColumns();\n var isGrouping = this.usingTreeData || (groupedCols && groupedCols.length > 0);\n var usingTransaction = isGrouping && _.exists(rowNodeTransaction);\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.isGroupSuppressRow() ?\n -1 : this.gridOptionsWrapper.getGroupDefaultExpanded(),\n groupedCols: groupedCols,\n rootNode: rowNode,\n pivotMode: this.columnController.isPivotMode(),\n groupedColCount: this.usingTreeData || !groupedCols ? 0 : groupedCols.length,\n rowNodeOrder: rowNodeOrder,\n // important not to do transaction if we are not grouping, as otherwise the 'insert index' is ignored.\n // ie, if not grouping, then we just want to shotgun so the rootNode.allLeafChildren gets copied\n // to rootNode.childrenAfterGroup and maintaining order (as delta transaction misses the order).\n transaction: usingTransaction ? rowNodeTransaction : null,\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 tran = details.transaction;\n if (tran.add) {\n this.insertNodes(tran.add, details, false);\n }\n if (tran.update) {\n this.moveNodesInWrongPath(tran.update, details);\n }\n if (tran.remove) {\n this.removeNodes(tran.remove, details);\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 (rowNode) {\n _.sortRowNodesByOrder(rowNode.childrenAfterGroup, details.rowNodeOrder);\n });\n };\n GroupStage.prototype.sortGroupsWithComparator = function (rootNode) {\n // we don't do group sorting for tree data\n if (this.usingTreeData) {\n return;\n }\n var comparator = this.gridOptionsWrapper.getDefaultGroupSortComparator();\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(comparator);\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) {\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 = _.compareArrays(oldPath, newPath);\n if (!nodeInCorrectPath) {\n _this.moveNode(childNode, details);\n }\n });\n };\n GroupStage.prototype.moveNode = function (childNode, details) {\n this.removeNodesInStages([childNode], details);\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) {\n this.removeNodesInStages(leafRowNodes, details);\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) {\n this.removeNodesFromParents(leafRowNodes, details);\n this.postRemoveCreateFillerNodes(leafRowNodes, details);\n this.postRemoveRemoveEmptyGroups(leafRowNodes, details);\n };\n GroupStage.prototype.forEachParentGroup = function (details, child, callback) {\n var pointer = child.parent;\n while (pointer && pointer !== details.rootNode) {\n callback(pointer);\n pointer = pointer.parent;\n }\n };\n GroupStage.prototype.removeNodesFromParents = function (nodesToRemove, details) {\n var _this = this;\n var batchRemover = new BatchRemover();\n nodesToRemove.forEach(function (nodeToRemove) {\n _this.removeFromParent(nodeToRemove, batchRemover);\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, function (parentNode) {\n batchRemover.removeFromAllLeafChildren(parentNode, nodeToRemove);\n });\n });\n batchRemover.flush();\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.childrenAfterGroup.forEach(function (rowNode) { return rowNode.parent = newGroupNode_1; });\n }\n });\n };\n GroupStage.prototype.postRemoveRemoveEmptyGroups = function (nodesToRemove, 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 else {\n // if still not removed, then we remove if this group is empty\n return rowNode.isEmptyRowGroupNode();\n }\n };\n var _loop_1 = function () {\n checkAgain = false;\n var batchRemover = new BatchRemover();\n nodesToRemove.forEach(function (nodeToRemove) {\n // remove empty groups\n _this.forEachParentGroup(details, nodeToRemove, 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 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 }\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 };\n GroupStage.prototype.addToParent = function (child, parent) {\n var mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);\n if (parent) {\n if (parent.childrenMapped) {\n parent.childrenMapped[mapKey] = child;\n }\n parent.childrenAfterGroup.push(child);\n }\n };\n GroupStage.prototype.areGroupColsEqual = function (d1, d2) {\n if (d1 == null || d2 == null) {\n return false;\n }\n if (d1.pivotMode !== d2.pivotMode) {\n return false;\n }\n if (!_.compareArrays(d1.groupedCols, d2.groupedCols)) {\n return false;\n }\n return true;\n };\n GroupStage.prototype.shotgunResetEverything = function (details, afterColumnsChanged) {\n var skipStage = afterColumnsChanged ?\n this.usingTreeData || this.areGroupColsEqual(details, this.oldGroupingDetails)\n : false;\n this.oldGroupingDetails = details;\n if (skipStage) {\n return;\n }\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 details.rootNode.leafGroup = this.usingTreeData ? false : details.groupedCols.length === 0;\n // we are doing everything from scratch, so reset childrenAfterGroup and childrenMapped from the rootNode\n details.rootNode.childrenAfterGroup = [];\n details.rootNode.childrenMapped = {};\n this.insertNodes(details.rootNode.allLeafChildren, details, false);\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 }\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 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 mapKey = this.getChildrenMappedKey(groupInfo.key, groupInfo.rowGroupColumn);\n var nextNode = parentGroup.childrenMapped ? parentGroup.childrenMapped[mapKey] : 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 _this = this;\n var groupNode = new RowNode();\n this.context.wireBean(groupNode);\n groupNode.group = true;\n groupNode.field = groupInfo.field;\n groupNode.rowGroupColumn = groupInfo.rowGroupColumn;\n groupNode.groupData = {};\n var groupDisplayCols = this.columnController.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 // we use negative number for the ids of the groups, this makes sure we don't clash with the\n // id's of the leaf nodes.\n groupNode.id = (this.groupIdSequence.next() * -1).toString();\n groupNode.key = groupInfo.key;\n groupNode.level = level;\n groupNode.leafGroup = this.usingTreeData ? false : level === (details.groupedColCount - 1);\n // if doing pivoting, then the leaf group is never expanded,\n // as we do not show leaf rows\n if (details.pivotMode && groupNode.leafGroup) {\n groupNode.expanded = false;\n }\n else {\n groupNode.expanded = this.isExpanded(details.expandByDefault, level);\n }\n groupNode.allLeafChildren = [];\n // why is this done here? we are not updating the children could 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.parent = details.includeParents ? parent : null;\n return groupNode;\n };\n GroupStage.prototype.getChildrenMappedKey = function (key, rowGroupColumn) {\n if (rowGroupColumn) {\n // grouping by columns\n return rowGroupColumn.getId() + '-' + key;\n }\n else {\n // tree data - we don't have rowGroupColumns\n return key;\n }\n };\n GroupStage.prototype.isExpanded = function (expandByDefault, level) {\n if (expandByDefault === -1) {\n return true;\n }\n else {\n return level < expandByDefault;\n }\n };\n GroupStage.prototype.getGroupInfo = function (rowNode, details) {\n if (this.usingTreeData) {\n return this.getGroupInfoFromCallback(rowNode);\n }\n else {\n return this.getGroupInfoFromGroupColumns(rowNode, details);\n }\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(\"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('selectionController')\n ], GroupStage.prototype, \"selectionController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], GroupStage.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], GroupStage.prototype, \"columnController\", 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('eventService')\n ], GroupStage.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('context')\n ], GroupStage.prototype, \"context\", void 0);\n __decorate([\n PostConstruct\n ], GroupStage.prototype, \"postConstruct\", null);\n GroupStage = __decorate([\n Bean('groupStage')\n ], GroupStage);\n return GroupStage;\n}());\nexport { GroupStage };\n// doing _.removeFromArray() multiple times on a large list can be a bottleneck.\n// when doing large deletes (eg removing 1,000 rows) then we would be calling _.removeFromArray()\n// a thousands of times, in particular RootNode.allGroupChildren could be a large list, and\n// 1,000 removes is time consuming as each one requires traversing the full list.\n// to get around this, we do all the removes in a batch. this class manages the batch.\n//\n// This problem was brought to light by a client (AG-2879), with dataset of 20,000\n// in 10,000 groups (2 items per group), then deleting all rows with transaction,\n// it took about 20 seconds to delete. with the BathRemoved, the reduced to less than 1 second.\nvar 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.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) {\n var res = !nodeDetails.removeFromChildrenAfterGroup[child.id];\n return res;\n });\n parent.allLeafChildren = parent.allLeafChildren.filter(function (child) { return !nodeDetails.removeFromAllLeafChildren[child.id]; });\n });\n this.allSets = {};\n this.allParents.length = 0;\n };\n return BatchRemover;\n}());\n","var __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, NumberSequence, _ } from \"@ag-grid-community/core\";\nvar PivotColDefService = /** @class */ (function () {\n function PivotColDefService() {\n }\n PivotColDefService.prototype.createPivotColumnDefs = function (uniqueValues) {\n // this is passed to the columnController, to configure the columns and groups we show\n var pivotColumnGroupDefs = [];\n // this is used by the aggregation stage, to do the aggregation based on the pivot columns\n var pivotColumnDefs = [];\n var pivotColumns = this.columnController.getPivotColumns();\n var valueColumns = this.columnController.getValueColumns();\n var levelsDeep = pivotColumns.length;\n var columnIdSequence = new NumberSequence();\n this.recursivelyAddGroup(pivotColumnGroupDefs, pivotColumnDefs, 1, uniqueValues, [], columnIdSequence, levelsDeep, pivotColumns);\n this.addRowGroupTotals(pivotColumnGroupDefs, pivotColumnDefs, valueColumns, pivotColumns, columnIdSequence);\n this.addPivotTotalsToGroups(pivotColumnGroupDefs, pivotColumnDefs, columnIdSequence);\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 // parentChildren - the list of colDefs we are adding to\n // @index - how far the column is from the top (also same as pivotKeys.length)\n // @uniqueValues - the values for which we should create a col for\n // @pivotKeys - the keys for the pivot, eg if pivoting on {Language,Country} then could be {English,Ireland}\n PivotColDefService.prototype.recursivelyAddGroup = function (parentChildren, pivotColumnDefs, index, uniqueValues, pivotKeys, columnIdSequence, levelsDeep, primaryPivotColumns) {\n var _this = this;\n _.iterateObject(uniqueValues, function (key, value) {\n var newPivotKeys = pivotKeys.slice(0);\n newPivotKeys.push(key);\n var createGroup = index !== levelsDeep;\n if (createGroup) {\n var groupDef = {\n children: [],\n headerName: key,\n pivotKeys: newPivotKeys,\n columnGroupShow: 'open',\n groupId: 'pivot' + columnIdSequence.next()\n };\n parentChildren.push(groupDef);\n _this.recursivelyAddGroup(groupDef.children, pivotColumnDefs, index + 1, value, newPivotKeys, columnIdSequence, levelsDeep, primaryPivotColumns);\n }\n else {\n var measureColumns = _this.columnController.getValueColumns();\n var valueGroup_1 = {\n children: [],\n headerName: key,\n pivotKeys: newPivotKeys,\n columnGroupShow: 'open',\n groupId: 'pivot' + columnIdSequence.next()\n };\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 if (measureColumns.length === 0) {\n // this is the blank column, for when no value columns enabled.\n var colDef_1 = _this.createColDef(null, '-', newPivotKeys, columnIdSequence);\n valueGroup_1.children.push(colDef_1);\n pivotColumnDefs.push(colDef_1);\n }\n else {\n measureColumns.forEach(function (measureColumn) {\n var columnName = _this.columnController.getDisplayNameForColumn(measureColumn, 'header');\n var colDef = _this.createColDef(measureColumn, columnName, newPivotKeys, columnIdSequence);\n colDef.columnGroupShow = 'open';\n valueGroup_1.children.push(colDef);\n pivotColumnDefs.push(colDef);\n });\n }\n parentChildren.push(valueGroup_1);\n }\n });\n // sort by either user provided comparator, or our own one\n var colDef = primaryPivotColumns[index - 1].getColDef();\n var userComparator = colDef.pivotComparator;\n var comparator = this.headerNameComparator.bind(this, userComparator);\n parentChildren.sort(comparator);\n };\n PivotColDefService.prototype.addPivotTotalsToGroups = function (pivotColumnGroupDefs, pivotColumnDefs, columnIdSequence) {\n var _this = this;\n if (!this.gridOptionsWrapper.getPivotColumnGroupTotals()) {\n return;\n }\n var insertAfter = this.gridOptionsWrapper.getPivotColumnGroupTotals() === 'after';\n var valueCols = this.columnController.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, columnIdSequence, valueColumn, insertAfter);\n });\n };\n PivotColDefService.prototype.recursivelyAddPivotTotal = function (groupDef, pivotColumnDefs, columnIdSequence, 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, columnIdSequence, 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 //create total colDef using an arbitrary value column as a template\n var totalColDef = this.createColDef(valueColumn, 'Total', groupDef.pivotKeys, columnIdSequence);\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, pivotColumns, columnIdSequence) {\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 levelsDeep = pivotColumns.length;\n this_1.createRowGroupTotal(pivotColumnGroupDefs, pivotColumnDefs, 1, [], columnIdSequence, levelsDeep, pivotColumns, valueCol, colIds, insertAfter);\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, index, pivotKeys, columnIdSequence, levelsDeep, primaryPivotColumns, valueColumn, colIds, insertAfter) {\n var newPivotKeys = pivotKeys.slice(0);\n var createGroup = index !== levelsDeep;\n if (createGroup) {\n var groupDef = {\n children: [],\n pivotKeys: newPivotKeys,\n groupId: 'pivot' + columnIdSequence.next()\n };\n insertAfter ? parentChildren.push(groupDef) : parentChildren.unshift(groupDef);\n this.createRowGroupTotal(groupDef.children, pivotColumnDefs, index + 1, newPivotKeys, columnIdSequence, levelsDeep, primaryPivotColumns, valueColumn, colIds, insertAfter);\n }\n else {\n var measureColumns = this.columnController.getValueColumns();\n var valueGroup = {\n children: [],\n pivotKeys: newPivotKeys,\n groupId: 'pivot' + columnIdSequence.next()\n };\n if (measureColumns.length === 0) {\n var colDef = this.createColDef(null, '-', newPivotKeys, columnIdSequence);\n valueGroup.children.push(colDef);\n pivotColumnDefs.push(colDef);\n }\n else {\n var columnName = this.columnController.getDisplayNameForColumn(valueColumn, 'header');\n var colDef = this.createColDef(valueColumn, columnName, newPivotKeys, columnIdSequence);\n colDef.pivotTotalColumnIds = colIds;\n valueGroup.children.push(colDef);\n pivotColumnDefs.push(colDef);\n }\n insertAfter ? parentChildren.push(valueGroup) : parentChildren.unshift(valueGroup);\n }\n };\n PivotColDefService.prototype.createColDef = function (valueColumn, headerName, pivotKeys, columnIdSequence) {\n var colDef = {};\n if (valueColumn) {\n var colDefToCopy = valueColumn.getColDef();\n _.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 = 'pivot_' + columnIdSequence.next();\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 colDef.pivotKeys = pivotKeys;\n colDef.pivotValueColumn = valueColumn;\n colDef.filter = false;\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 else if (a.headerName > b.headerName) {\n return 1;\n }\n else {\n return 0;\n }\n }\n };\n __decorate([\n Autowired('columnController')\n ], PivotColDefService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], PivotColDefService.prototype, \"gridOptionsWrapper\", void 0);\n PivotColDefService = __decorate([\n Bean('pivotColDefService')\n ], PivotColDefService);\n return PivotColDefService;\n}());\nexport { PivotColDefService };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, _ } from \"@ag-grid-community/core\";\nvar PivotStage = /** @class */ (function () {\n function PivotStage() {\n this.uniqueValues = {};\n }\n PivotStage.prototype.execute = function (params) {\n var rootNode = params.rowNode;\n var changedPath = params.changedPath;\n if (this.columnController.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.columnController.isSecondaryColumnsPresent()) {\n this.columnController.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.columnController.getValueColumns();\n var aggregationColumnsHash = aggregationColumns.map(function (column) { return column.getId(); }).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 if (uniqueValuesChanged || aggregationColumnsChanged || aggregationFuncsChanged) {\n var result = this.pivotColDefService.createPivotColumnDefs(this.uniqueValues);\n this.pivotColumnGroupDefs = result.pivotColumnGroupDefs;\n this.pivotColumnDefs = result.pivotColumnDefs;\n this.columnController.setSecondaryColumns(this.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.columnController.getPivotColumns();\n if (pivotColumns.length === 0) {\n rowNode.childrenMapped = null;\n return;\n }\n rowNode.childrenMapped = this.bucketChildren(rowNode.childrenAfterFilter, pivotColumns, 0, uniqueValues);\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('rowModel')\n ], PivotStage.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('valueService')\n ], PivotStage.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('columnController')\n ], PivotStage.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], PivotStage.prototype, \"eventService\", 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}());\nexport { PivotStage };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct, _ } from \"@ag-grid-community/core\";\nvar AggFuncService = /** @class */ (function () {\n function AggFuncService() {\n this.aggFuncsMap = {};\n this.initialised = false;\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.getDefaultAggFunc = function (column) {\n var allKeys = this.getFuncNames(column);\n // use 'sum' if it's a) allowed for the column and b) still registered\n // (ie not removed by user)\n var sumInKeysList = _.includes(allKeys, AggFuncService_1.AGG_SUM);\n var sumInFuncs = _.exists(this.aggFuncsMap[AggFuncService_1.AGG_SUM]);\n if (sumInKeysList && sumInFuncs) {\n return AggFuncService_1.AGG_SUM;\n }\n else {\n return _.existsAndNotEmpty(allKeys) ? allKeys[0] : null;\n }\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 if (_.exists(userAllowedFuncs) && userAllowedFuncs) {\n return userAllowedFuncs;\n }\n else {\n return Object.keys(this.aggFuncsMap).sort();\n }\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 Autowired('gridOptionsWrapper')\n ], AggFuncService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], AggFuncService.prototype, \"init\", null);\n AggFuncService = AggFuncService_1 = __decorate([\n Bean('aggFuncService')\n ], AggFuncService);\n return AggFuncService;\n}());\nexport { AggFuncService };\nfunction aggSum(input) {\n return input\n .filter(function (value) { return typeof value === 'number'; })\n .reduce(function (sum, value) { return sum === null ? value : sum + value; }, null);\n}\nfunction aggFirst(input) {\n return input.length > 0 ? input[0] : null;\n}\nfunction aggLast(input) {\n return input.length > 0 ? _.last(input) : null;\n}\nfunction aggMin(input) {\n return input\n .filter(function (value) { return typeof value === 'number'; })\n .reduce(function (min, value) { return min === null || value < min ? value : min; }, null);\n}\nfunction aggMax(input) {\n return input\n .filter(function (value) { return typeof value === 'number'; })\n .reduce(function (max, value) { return max === null || value > max ? value : max; }, null);\n}\nfunction aggCount(input) {\n var value = input.reduce(function (count, item) {\n var isGroupAgg = _.exists(item) && typeof item.value === 'number';\n return count + (isGroupAgg ? item.value : 1);\n }, 0);\n return {\n value: value,\n toString: function () {\n return this.value.toString();\n },\n // used for sorting\n toNumber: function () {\n return this.value;\n }\n };\n}\n// the average function is tricky as the multiple levels require weighted averages\n// for the non-leaf node aggregations.\nfunction aggAvg(input) {\n // the average will be the sum / count\n var _a = input.reduce(function (_a, item) {\n var sum = _a.sum, count = _a.count;\n var itemIsGroupResult = _.exists(item) &&\n typeof item.value === 'number' &&\n typeof item.count === 'number';\n if (typeof item === 'number') {\n return { sum: sum + item, count: count + 1 };\n }\n if (itemIsGroupResult) {\n // we are aggregating groups, so we take the\n // aggregated values to calculated a weighted average\n return {\n sum: sum + item.value * item.count,\n count: count + item.count\n };\n }\n return { sum: sum, count: count };\n }, { sum: 0, count: 0 }), sum = _a.sum, count = _a.count;\n // avoid divide by zero error\n var value = count > 0 ? sum / count : null;\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 if (typeof this.value === 'number') {\n return this.value.toString();\n }\n else {\n return '';\n }\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, PostConstruct, RefSelector, _, Optional, VirtualList } from \"@ag-grid-community/core\";\nvar DropZoneColumnComp = /** @class */ (function (_super) {\n __extends(DropZoneColumnComp, _super);\n function DropZoneColumnComp(column, dragSourceDropTarget, ghost, valueColumn) {\n var _this = _super.call(this) || this;\n _this.popupShowing = false;\n _this.valueColumn = valueColumn;\n _this.column = column;\n _this.dragSourceDropTarget = dragSourceDropTarget;\n _this.ghost = ghost;\n return _this;\n }\n DropZoneColumnComp.prototype.init = function () {\n this.setTemplate(DropZoneColumnComp.TEMPLATE);\n this.eDragHandle.appendChild(_.createIconNoSpan('columnDrag', this.gridOptionsWrapper));\n this.btRemove.appendChild(_.createIconNoSpan('cancel', this.gridOptionsWrapper));\n this.displayName = this.columnController.getDisplayNameForColumn(this.column, 'columnDrop');\n this.setupComponents();\n if (!this.ghost && !this.gridOptionsWrapper.isFunctionsReadOnly()) {\n this.addDragSource();\n }\n };\n DropZoneColumnComp.prototype.addDragSource = function () {\n var _this = this;\n var dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\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 _.addCssClass(this.getGui(), 'ag-column-drop-cell-ghost');\n }\n if (this.valueColumn && !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.btRemove, !this.gridOptionsWrapper.isFunctionsReadOnly());\n this.addDestroyableEventListener(this.btRemove, 'click', function (mouseEvent) {\n var agEvent = { type: DropZoneColumnComp.EVENT_COLUMN_REMOVE };\n _this.dispatchEvent(agEvent);\n mouseEvent.stopPropagation();\n });\n var touchListener = new TouchListener(this.btRemove);\n this.addDestroyableEventListener(touchListener, TouchListener.EVENT_TAP, function (event) {\n var agEvent = { type: DropZoneColumnComp.EVENT_COLUMN_REMOVE };\n _this.dispatchEvent(agEvent);\n });\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n };\n DropZoneColumnComp.prototype.setTextValue = function () {\n var displayValue;\n if (this.valueColumn) {\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 var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n displayValue = aggFuncStringTranslated + \"(\" + this.displayName + \")\";\n }\n else {\n displayValue = this.displayName;\n }\n var displayValueSanitised = _.escape(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();\n var rows = this.aggFuncService.getFuncNames(this.column);\n virtualList.setModel({\n getRow: function (index) { return rows[index]; },\n getRowCount: function () { return rows.length; }\n });\n this.getContext().wireBean(virtualList);\n var ePopup = _.loadTemplate('
');\n ePopup.style.top = '0px';\n ePopup.style.left = '0px';\n ePopup.appendChild(virtualList.getGui());\n // ePopup.style.height = this.gridOptionsWrapper.getAggFuncPopupHeight() + 'px';\n ePopup.style.width = this.getGui().clientWidth + 'px';\n var popupHiddenFunc = function () {\n virtualList.destroy();\n _this.popupShowing = false;\n };\n var hidePopup = this.popupService.addAsModalPopup(ePopup, true, popupHiddenFunc);\n virtualList.setComponentCreator(this.createAggSelect.bind(this, hidePopup));\n this.popupService.positionPopupUnderComponent({\n type: 'aggFuncSelect',\n eventSource: this.getGui(),\n ePopup: ePopup,\n keepWithinBounds: true,\n column: this.column\n });\n virtualList.refresh();\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 api: _this.gridApi,\n columnApi: _this.columnApi\n };\n _this.eventService.dispatchEvent(event_1);\n }\n else {\n _this.columnController.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.EVENT_COLUMN_REMOVE = 'columnRemove';\n DropZoneColumnComp.TEMPLATE = \"\\n \\n \\n \\n \";\n __decorate([\n Autowired('dragAndDropService')\n ], DropZoneColumnComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnController')\n ], DropZoneColumnComp.prototype, \"columnController\", 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('gridOptionsWrapper')\n ], DropZoneColumnComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], DropZoneColumnComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], DropZoneColumnComp.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], DropZoneColumnComp.prototype, \"gridApi\", 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('btRemove')\n ], DropZoneColumnComp.prototype, \"btRemove\", 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, '
') || this;\n _this.getGui().innerText = value;\n _this.value = value;\n _this.addGuiEventListener('click', itemSelected);\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})();\nimport { Component, DragSourceType, Events, HorizontalDirection, VerticalDirection, _ } from \"@ag-grid-community/core\";\nimport { DropZoneColumnComp } from \"./dropZoneColumnComp\";\nvar BaseDropZonePanel = /** @class */ (function (_super) {\n __extends(BaseDropZonePanel, _super);\n function BaseDropZonePanel(horizontal, valueColumn, name) {\n var _this = _super.call(this, \"
\") || this;\n _this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n _this.guiDestroyFunctions = [];\n _this.childColumnComponents = [];\n _this.horizontal = horizontal;\n _this.valueColumn = valueColumn;\n _this.eColumnDropList = _.loadTemplate('
');\n return _this;\n }\n BaseDropZonePanel.prototype.isHorizontal = function () {\n return this.horizontal;\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.logger = this.beans.loggerFactory.create('AbstractColumnDropPanel');\n this.beans.eventService.addEventListener(Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.refreshGui.bind(this));\n this.addDestroyableEventListener(this.beans.gridOptionsWrapper, 'functionsReadOnly', this.refreshGui.bind(this));\n this.setupDropTarget();\n // we don't know if this bean will be initialised before columnController.\n // if columnController first, then below will work\n // if columnController second, then below will put blank in, and then above event gets first when columnController is set up\n this.refreshGui();\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.horizontal ? this.getNewHorizontalInsertIndex(draggingEvent) : this.getNewVerticalInsertIndex(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.getNewHorizontalInsertIndex = function (draggingEvent) {\n if (_.missing(draggingEvent.hDirection)) {\n return -1;\n }\n var newIndex = 0;\n var mouseEvent = draggingEvent.event;\n var enableRtl = this.beans.gridOptionsWrapper.isEnableRtl();\n var goingLeft = draggingEvent.hDirection === HorizontalDirection.Left;\n var mouseX = mouseEvent.clientX;\n this.childColumnComponents.forEach(function (childColumn) {\n var rect = childColumn.getGui().getBoundingClientRect();\n var rectX = goingLeft ? rect.right : rect.left;\n var horizontalFit = enableRtl ? mouseX <= rectX : mouseX >= rectX;\n if (horizontalFit) {\n newIndex++;\n }\n });\n return newIndex;\n };\n BaseDropZonePanel.prototype.getNewVerticalInsertIndex = function (draggingEvent) {\n if (_.missing(draggingEvent.vDirection)) {\n return -1;\n }\n var newIndex = 0;\n var mouseEvent = draggingEvent.event;\n this.childColumnComponents.forEach(function (childColumn) {\n var rect = childColumn.getGui().getBoundingClientRect();\n var verticalFit = mouseEvent.clientY >= (draggingEvent.vDirection === VerticalDirection.Down ? rect.top : rect.bottom);\n if (verticalFit) {\n newIndex++;\n }\n });\n return newIndex;\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 this.potentialDndColumns = goodDragColumns;\n this.checkInsertIndex(draggingEvent);\n this.refreshGui();\n }\n };\n BaseDropZonePanel.prototype.isPotentialDndColumns = function () {\n return _.existsAndNotEmpty(this.potentialDndColumns);\n };\n BaseDropZonePanel.prototype.onDragLeave = function (draggingEvent) {\n // if the dragging started from us, we remove the group, however if it started\n // someplace 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 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 var newColumnList = this.getExistingColumns().slice();\n _.insertArrayIntoArray(newColumnList, columnsToAdd, 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 (_.shallowCompare(newColumnList, this.getExistingColumns())) {\n return false;\n }\n else {\n this.updateColumns(newColumnList);\n return true;\n }\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 this.destroyGui();\n this.addIconAndTitleToGui();\n this.addEmptyMessageToGui();\n this.addColumnsToGui();\n if (!this.isHorizontal()) {\n this.eColumnDropList.scrollTop = scrollTop;\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 else {\n return existingColumns;\n }\n };\n BaseDropZonePanel.prototype.addColumnsToGui = function () {\n var _this = this;\n var nonGhostColumns = this.getNonGhostColumns();\n var addingGhosts = this.isPotentialDndColumns();\n var itemsToAddToGui = [];\n nonGhostColumns.forEach(function (column, index) {\n if (addingGhosts && index >= _this.insertIndex) {\n return;\n }\n var columnComponent = _this.createColumnComponent(column, false);\n itemsToAddToGui.push(columnComponent);\n });\n if (this.isPotentialDndColumns()) {\n this.potentialDndColumns.forEach(function (column) {\n var columnComponent = _this.createColumnComponent(column, true);\n itemsToAddToGui.push(columnComponent);\n });\n nonGhostColumns.forEach(function (column, index) {\n if (index < _this.insertIndex) {\n return;\n }\n var columnComponent = _this.createColumnComponent(column, false);\n itemsToAddToGui.push(columnComponent);\n });\n }\n this.getGui().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 };\n BaseDropZonePanel.prototype.createColumnComponent = function (column, ghost) {\n var columnComponent = new DropZoneColumnComp(column, this.dropTarget, ghost, this.valueColumn);\n columnComponent.addEventListener(DropZoneColumnComp.EVENT_COLUMN_REMOVE, this.removeColumns.bind(this, [column]));\n this.beans.context.wireBean(columnComponent);\n this.guiDestroyFunctions.push(function () { return columnComponent.destroy(); });\n if (!ghost) {\n this.childColumnComponents.push(columnComponent);\n }\n return columnComponent;\n };\n BaseDropZonePanel.prototype.addIconAndTitleToGui = function () {\n var iconFaded = this.horizontal && this.isExistingColumnsEmpty();\n var eGroupIcon = this.params.icon;\n var eContainer = document.createElement('div');\n _.addCssClass(eGroupIcon, 'ag-column-drop-icon');\n _.addOrRemoveCssClass(eGroupIcon, 'ag-faded', iconFaded);\n eContainer.appendChild(eGroupIcon);\n if (!this.horizontal) {\n var eTitle = document.createElement('span');\n eTitle.innerHTML = this.params.title;\n _.addCssClass(eTitle, 'ag-column-drop-title');\n _.addOrRemoveCssClass(eTitle, 'ag-faded', iconFaded);\n eContainer.appendChild(eTitle);\n }\n this.getGui().appendChild(eContainer);\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 _.addCssClass(eMessage, 'ag-column-drop-empty-message');\n this.getGui().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 eParent.appendChild(_.createIconNoSpan(enableRtl ? 'smallLeft' : 'smallRight', this.beans.gridOptionsWrapper));\n }\n };\n BaseDropZonePanel.STATE_NOT_DRAGGING = 'notDragging';\n BaseDropZonePanel.STATE_NEW_COLUMNS_IN = 'newColumnsIn';\n BaseDropZonePanel.STATE_REARRANGE_COLUMNS = 'rearrangeColumns';\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, PostConstruct, Events, _ } 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, false, 'row-group') || 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.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.refreshGui.bind(this));\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 api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnController.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.columnController.getRowGroupColumns();\n };\n __decorate([\n Autowired('columnController')\n ], RowGroupDropZonePanel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], RowGroupDropZonePanel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RowGroupDropZonePanel.prototype, \"gridOptionsWrapper\", 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 Autowired('columnApi')\n ], RowGroupDropZonePanel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], RowGroupDropZonePanel.prototype, \"gridApi\", 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, PostConstruct, Events, _ } 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, false, '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.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.refresh.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.refresh.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.checkVisibility.bind(this));\n this.refresh();\n };\n PivotDropZonePanel.prototype.refresh = function () {\n this.checkVisibility();\n this.refreshGui();\n };\n PivotDropZonePanel.prototype.checkVisibility = function () {\n var pivotMode = this.columnController.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.columnController.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 api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnController.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.columnController.getPivotColumns();\n };\n __decorate([\n Autowired('columnController')\n ], PivotDropZonePanel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], PivotDropZonePanel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], PivotDropZonePanel.prototype, \"gridOptionsWrapper\", 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 Autowired('columnApi')\n ], PivotDropZonePanel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], PivotDropZonePanel.prototype, \"gridApi\", 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.eventService.addEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.onRowGroupChanged.bind(this));\n this.onRowGroupChanged();\n };\n GridHeaderDropZones.prototype.createNorthPanel = function () {\n var _this = this;\n var topPanelGui = document.createElement('div');\n var dropPanelVisibleListener = this.onDropPanelVisible.bind(this);\n this.rowGroupComp = new RowGroupDropZonePanel(true);\n this.getContext().wireBean(this.rowGroupComp);\n this.addDestroyFunc(function () { return _this.rowGroupComp.destroy(); });\n this.pivotComp = new PivotDropZonePanel(true);\n this.getContext().wireBean(this.pivotComp);\n this.addDestroyFunc(function () { return _this.pivotComp.destroy(); });\n topPanelGui.appendChild(this.rowGroupComp.getGui());\n topPanelGui.appendChild(this.pivotComp.getGui());\n this.rowGroupComp.addEventListener(Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n this.pivotComp.addEventListener(Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n this.addDestroyFunc(function () {\n _this.rowGroupComp.removeEventListener(Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n _this.pivotComp.removeEventListener(Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n });\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-width-half', bothDisplayed);\n this.pivotComp.addOrRemoveCssClass('ag-width-half', 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.columnController.isRowGroupEmpty();\n this.rowGroupComp.setDisplayed(grouping);\n }\n else {\n this.rowGroupComp.setDisplayed(false);\n }\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], GridHeaderDropZones.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], GridHeaderDropZones.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], GridHeaderDropZones.prototype, \"eventService\", void 0);\n __decorate([\n PostConstruct\n ], GridHeaderDropZones.prototype, \"postConstruct\", null);\n return GridHeaderDropZones;\n}(Component));\nexport { GridHeaderDropZones };\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\";\nexport var RowGroupingModule = {\n moduleName: ModuleNames.RowGroupingModule,\n beans: [AggregationStage, GroupStage, PivotColDefService, PivotStage, AggFuncService],\n agStackComponents: [\n { componentName: 'AgGridHeaderDropZones', componentClass: GridHeaderDropZones }\n ],\n dependantModules: [\n EnterpriseCoreModule\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 { Autowired, DragAndDropService, PostConstruct, Events, _ } 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, true, 'values') || 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.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshGui.bind(this));\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 api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnController.setValueColumns(columns, \"toolPanelUi\");\n }\n };\n ValuesDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnController.getValueColumns();\n };\n __decorate([\n Autowired('columnController')\n ], ValuesDropZonePanel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], ValuesDropZonePanel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ValuesDropZonePanel.prototype, \"gridOptionsWrapper\", 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 Autowired('columnApi')\n ], ValuesDropZonePanel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ValuesDropZonePanel.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], ValuesDropZonePanel.prototype, \"passBeansUp\", null);\n return ValuesDropZonePanel;\n}(BaseDropZonePanel));\nexport { ValuesDropZonePanel };\n","export { RowGroupingModule } from \"./rowGroupingModule\";\nexport { RowGroupDropZonePanel } from \"./rowGrouping/columnDropZones/rowGroupDropZonePanel\";\nexport { ValuesDropZonePanel } from \"./rowGrouping/columnDropZones/valueDropZonePanel\";\nexport { PivotDropZonePanel } from \"./rowGrouping/columnDropZones/pivotDropZonePanel\";\n","var __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 __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { Autowired, Bean, Constants, Events, PostConstruct, _, } from \"@ag-grid-community/core\";\nvar RangeController = /** @class */ (function () {\n function RangeController() {\n this.cellRanges = [];\n this.bodyScrollListener = this.onBodyScroll.bind(this);\n this.dragging = false;\n }\n RangeController.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.autoScrollService = new AutoScrollService(this.gridPanel, this.gridOptionsWrapper);\n };\n RangeController.prototype.init = function () {\n this.logger = this.loggerFactory.create('RangeController');\n this.eventService.addEventListener(Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.removeAllCellRanges.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.removeAllCellRanges.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.removeAllCellRanges.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_GROUP_OPENED, this.refreshLastRangeStart.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_MOVED, this.refreshLastRangeStart.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_PINNED, this.refreshLastRangeStart.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_VISIBLE, this.onColumnVisibleChange.bind(this));\n };\n RangeController.prototype.onColumnVisibleChange = function () {\n var _this = this;\n // first move start column in last cell range (i.e. series chart range)\n this.refreshLastRangeStart();\n // then check if the column visibility has changed in any cell range\n this.cellRanges.forEach(function (cellRange) {\n var beforeCols = cellRange.columns;\n // remove hidden cols from cell range\n cellRange.columns = cellRange.columns.filter(function (col) { return col.isVisible(); });\n var colsInRangeChanged = !_.compareArrays(beforeCols, cellRange.columns);\n if (colsInRangeChanged) {\n // notify users and other parts of grid (i.e. status panel) that range has changed\n _this.dispatchChangedEvent(false, true, cellRange.id);\n }\n });\n };\n RangeController.prototype.refreshLastRangeStart = function () {\n var lastRange = _.last(this.cellRanges);\n if (!lastRange) {\n return;\n }\n this.refreshRangeStart(lastRange);\n };\n RangeController.prototype.isContiguousRange = function (cellRange) {\n var rangeColumns = cellRange.columns;\n if (!rangeColumns.length) {\n return false;\n }\n var allColumns = this.columnController.getAllDisplayedColumns();\n var allPositions = rangeColumns.map(function (c) { return allColumns.indexOf(c); }).sort(function (a, b) { return a - b; });\n return _.last(allPositions) - allPositions[0] + 1 === rangeColumns.length;\n };\n RangeController.prototype.getRangeStartRow = function (cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\n cellRange.startRow : cellRange.endRow;\n }\n var rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? Constants.PINNED_TOP : undefined;\n return { rowIndex: 0, rowPinned: rowPinned };\n };\n RangeController.prototype.getRangeEndRow = function (cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\n cellRange.endRow : cellRange.startRow;\n }\n var pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();\n var pinnedBottom = pinnedBottomRowCount > 0;\n if (pinnedBottom) {\n return {\n rowIndex: pinnedBottomRowCount - 1,\n rowPinned: Constants.PINNED_BOTTOM\n };\n }\n return {\n rowIndex: this.rowModel.getRowCount() - 1,\n rowPinned: undefined\n };\n };\n RangeController.prototype.setRangeToCell = function (cell, appendRange) {\n if (appendRange === void 0) { appendRange = false; }\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n var columns = this.calculateColumnsBetween(cell.column, cell.column);\n if (!columns) {\n return;\n }\n var suppressMultiRangeSelections = this.gridOptionsWrapper.isSuppressMultiRangeSelection();\n // if not appending, then clear previous range selections\n if (suppressMultiRangeSelections || !appendRange || _.missing(this.cellRanges)) {\n this.removeAllCellRanges(true);\n }\n var rowForCell = {\n rowIndex: cell.rowIndex,\n rowPinned: cell.rowPinned\n };\n // if there is already a range for this cell, then we reuse the same range, otherwise the user\n // can ctrl & click a cell many times and hit ctrl+c, which would result in the cell getting copied\n // many times to the clipboard.\n var cellRange;\n for (var i = 0; i < this.cellRanges.length; i++) {\n var range = this.cellRanges[i];\n var matches = \n // check cols are same\n (range.columns && range.columns.length === 1 && range.columns[0] === cell.column) &&\n // check rows are same\n this.rowPositionUtils.sameRow(rowForCell, range.startRow) &&\n this.rowPositionUtils.sameRow(rowForCell, range.endRow);\n if (matches) {\n cellRange = range;\n break;\n }\n }\n if (cellRange) {\n // we need it at the end of the list, as the dragStart picks the last created\n // range as the start point for the drag\n var atEndOfList = _.last(this.cellRanges) === cellRange;\n if (!atEndOfList) {\n _.removeFromArray(this.cellRanges, cellRange);\n this.cellRanges.push(cellRange);\n }\n }\n else {\n cellRange = {\n startRow: rowForCell,\n endRow: rowForCell,\n columns: columns,\n startColumn: cell.column\n };\n this.cellRanges.push(cellRange);\n }\n this.newestRangeStartCell = cell;\n this.onDragStop();\n this.dispatchChangedEvent(false, true, cellRange.id);\n };\n RangeController.prototype.extendLatestRangeToCell = function (cellPosition) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n var cellRange = _.last(this.cellRanges);\n this.updateRangeEnd(cellRange, cellPosition);\n };\n RangeController.prototype.updateRangeEnd = function (cellRange, cellPosition, silent) {\n var endColumn = cellPosition.column;\n var colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);\n if (!colsToAdd) {\n return;\n }\n cellRange.columns = colsToAdd;\n cellRange.endRow = { rowIndex: cellPosition.rowIndex, rowPinned: cellPosition.rowPinned };\n if (!silent) {\n this.dispatchChangedEvent(false, true, cellRange.id);\n }\n };\n RangeController.prototype.refreshRangeStart = function (cellRange) {\n var startColumn = cellRange.startColumn, columns = cellRange.columns;\n var moveColInCellRange = function (colToMove, moveToFront) {\n var otherCols = cellRange.columns.filter(function (col) { return col !== colToMove; });\n if (colToMove) {\n cellRange.startColumn = colToMove;\n cellRange.columns = moveToFront ? __spreadArrays([colToMove], otherCols) : __spreadArrays(otherCols, [colToMove]);\n }\n else {\n cellRange.columns = otherCols;\n }\n };\n var _a = this.getRangeEdgeColumns(cellRange), left = _a.left, right = _a.right;\n var shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;\n if (shouldMoveLeftCol) {\n moveColInCellRange(left, true);\n return;\n }\n var shouldMoveRightCol = startColumn === _.last(columns) && startColumn === right;\n if (shouldMoveRightCol) {\n moveColInCellRange(right, false);\n return;\n }\n };\n RangeController.prototype.getRangeEdgeColumns = function (cellRange) {\n var allColumns = this.columnController.getAllDisplayedColumns();\n var allIndices = cellRange.columns\n .map(function (c) { return allColumns.indexOf(c); })\n .filter(function (i) { return i > -1; })\n .sort(function (a, b) { return a - b; });\n return {\n left: allColumns[allIndices[0]],\n right: allColumns[_.last(allIndices)]\n };\n };\n // returns true if successful, false if not successful\n RangeController.prototype.extendLatestRangeInDirection = function (key) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n var lastRange = _.last(this.cellRanges);\n var startCell = this.newestRangeStartCell;\n var firstCol = lastRange.columns[0];\n var lastCol = _.last(lastRange.columns);\n // find the cell that is at the furthest away corner from the starting cell\n var endCellIndex = lastRange.endRow.rowIndex;\n var endCellFloating = lastRange.endRow.rowPinned;\n var endCellColumn = startCell.column === firstCol ? lastCol : firstCol;\n var endCell = { column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating };\n var newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell);\n // if user is at end of grid, so no cell to extend to, we return false\n if (!newEndCell) {\n return;\n }\n this.setCellRange({\n rowStartIndex: startCell.rowIndex,\n rowStartPinned: startCell.rowPinned,\n rowEndIndex: newEndCell.rowIndex,\n rowEndPinned: newEndCell.rowPinned,\n columnStart: startCell.column,\n columnEnd: newEndCell.column\n });\n return newEndCell;\n };\n RangeController.prototype.setCellRange = function (params) {\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n this.removeAllCellRanges(true);\n this.addCellRange(params);\n };\n RangeController.prototype.setCellRanges = function (cellRanges) {\n var _this = this;\n this.removeAllCellRanges(true);\n cellRanges.forEach(function (newRange) {\n if (newRange.columns && newRange.startRow) {\n _this.newestRangeStartCell = {\n rowIndex: newRange.startRow.rowIndex,\n rowPinned: newRange.startRow.rowPinned,\n column: newRange.columns[0]\n };\n }\n _this.cellRanges.push(newRange);\n });\n this.dispatchChangedEvent(false, true);\n };\n RangeController.prototype.createCellRangeFromCellRangeParams = function (params) {\n var _this = this;\n var columns;\n if (params.columns) {\n columns = params.columns.map(function (c) { return _this.columnController.getColumnWithValidation(c); }).filter(function (c) { return c; });\n }\n else {\n var columnStart = this.columnController.getColumnWithValidation(params.columnStart);\n var columnEnd = this.columnController.getColumnWithValidation(params.columnEnd);\n if (!columnStart || !columnEnd) {\n return;\n }\n columns = this.calculateColumnsBetween(columnStart, columnEnd);\n }\n if (!columns) {\n return;\n }\n var startRow = params.rowStartIndex != null ? {\n rowIndex: params.rowStartIndex,\n rowPinned: params.rowStartPinned\n } : undefined;\n var endRow = params.rowEndIndex != null ? {\n rowIndex: params.rowEndIndex,\n rowPinned: params.rowEndPinned\n } : undefined;\n return {\n startRow: startRow,\n endRow: endRow,\n columns: columns,\n startColumn: columns[0]\n };\n };\n RangeController.prototype.addCellRange = function (params) {\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n var newRange = this.createCellRangeFromCellRangeParams(params);\n if (newRange) {\n this.cellRanges.push(newRange);\n this.dispatchChangedEvent(false, true, newRange.id);\n }\n };\n RangeController.prototype.getCellRanges = function () {\n return this.cellRanges;\n };\n RangeController.prototype.isEmpty = function () {\n return this.cellRanges.length === 0;\n };\n RangeController.prototype.isMoreThanOneCell = function () {\n if (this.cellRanges.length === 0) {\n // no ranges, so not more than one cell\n return false;\n }\n else if (this.cellRanges.length > 1) {\n // many ranges, so more than one cell\n return true;\n }\n // only one range, return true if range has more than one\n var range = this.cellRanges[0];\n var startRow = this.getRangeStartRow(range);\n var endRow = this.getRangeEndRow(range);\n return startRow.rowPinned !== endRow.rowPinned ||\n startRow.rowIndex !== endRow.rowIndex ||\n range.columns.length !== 1;\n };\n RangeController.prototype.removeAllCellRanges = function (silent) {\n if (this.isEmpty()) {\n return;\n }\n this.onDragStop();\n this.cellRanges.length = 0;\n if (!silent) {\n this.dispatchChangedEvent(false, true);\n }\n };\n // as the user is dragging outside of the panel, the div starts to scroll, which in turn\n // means we are selection more (or less) cells, but the mouse isn't moving, so we recalculate\n // the selection my mimicking a new mouse event\n RangeController.prototype.onBodyScroll = function () {\n this.onDragging(this.lastMouseEvent);\n };\n RangeController.prototype.isCellInAnyRange = function (cell) {\n return this.getCellRangeCount(cell) > 0;\n };\n RangeController.prototype.isCellInSpecificRange = function (cell, range) {\n var columnInRange = range.columns !== null && _.includes(range.columns, cell.column);\n var rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);\n return columnInRange && rowInRange;\n };\n RangeController.prototype.isLastCellOfRange = function (cellRange, cell) {\n var allColumns = this.columnController.getAllDisplayedColumns();\n var allPositions = cellRange.columns.map(function (c) { return allColumns.indexOf(c); }).sort(function (a, b) { return a - b; });\n var startRow = cellRange.startRow, endRow = cellRange.endRow;\n var lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\n var isLastColumn = allColumns.indexOf(cell.column) === _.last(allPositions);\n var isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;\n return isLastColumn && isLastRow;\n };\n // returns the number of ranges this cell is in\n RangeController.prototype.getCellRangeCount = function (cell) {\n var _this = this;\n if (this.isEmpty()) {\n return 0;\n }\n return this.cellRanges.filter(function (cellRange) { return _this.isCellInSpecificRange(cell, cellRange); }).length;\n };\n RangeController.prototype.isRowInRange = function (rowIndex, floating, cellRange) {\n var firstRow = this.getRangeStartRow(cellRange);\n var lastRow = this.getRangeEndRow(cellRange);\n var thisRow = { rowIndex: rowIndex, rowPinned: floating };\n // compare rowPinned with == instead of === because it can be `null` or `undefined`\n var equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;\n var equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;\n if (equalsFirstRow || equalsLastRow) {\n return true;\n }\n var afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);\n var beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);\n return afterFirstRow && beforeLastRow;\n };\n RangeController.prototype.getDraggingRange = function () {\n return this.draggingRange;\n };\n RangeController.prototype.onDragStart = function (mouseEvent) {\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n var ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey;\n // ctrlKey for windows, metaKey for Apple\n var multiKeyPressed = ctrlKey || metaKey;\n var allowMulti = !this.gridOptionsWrapper.isSuppressMultiRangeSelection();\n var multiSelectKeyPressed = allowMulti ? multiKeyPressed : false;\n var mouseCell = this.mouseEventService.getCellPositionForEvent(mouseEvent);\n if (_.missing(mouseCell)) {\n // if drag wasn't on cell, then do nothing, including do not set dragging=true,\n // (which them means onDragging and onDragStop do nothing)\n return;\n }\n if (!multiSelectKeyPressed && (!shiftKey || _.exists(_.last(this.cellRanges).type))) {\n this.removeAllCellRanges(true);\n }\n this.dragging = true;\n this.draggingCell = mouseCell;\n this.lastMouseEvent = mouseEvent;\n if (!shiftKey) {\n this.newestRangeStartCell = mouseCell;\n }\n // if we didn't clear the ranges, then dragging means the user clicked, and when the\n // user clicks it means a range of one cell was created. we need to extend this range\n // rather than creating another range. otherwise we end up with two distinct ranges\n // from a drag operation (one from click, and one from drag).\n if (this.cellRanges.length > 0) {\n this.draggingRange = _.last(this.cellRanges);\n }\n else {\n var mouseRowPosition = {\n rowIndex: mouseCell.rowIndex,\n rowPinned: mouseCell.rowPinned\n };\n this.draggingRange = {\n startRow: mouseRowPosition,\n endRow: mouseRowPosition,\n columns: [mouseCell.column],\n startColumn: this.newestRangeStartCell.column\n };\n this.cellRanges.push(this.draggingRange);\n }\n this.gridPanel.addScrollEventListener(this.bodyScrollListener);\n this.dispatchChangedEvent(true, false, this.draggingRange.id);\n };\n RangeController.prototype.onDragging = function (mouseEvent) {\n var _this = this;\n if (!this.dragging || !mouseEvent) {\n return;\n }\n this.lastMouseEvent = mouseEvent;\n var cellPosition = this.mouseEventService.getCellPositionForEvent(mouseEvent);\n var isMouseAndStartInPinned = function (position) {\n return cellPosition && cellPosition.rowPinned === position && _this.newestRangeStartCell.rowPinned === position;\n };\n var skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');\n this.autoScrollService.check(mouseEvent, skipVerticalScroll);\n if (!cellPosition ||\n !this.draggingCell ||\n this.cellPositionUtils.equals(this.draggingCell, cellPosition)) {\n return;\n }\n var columns = this.calculateColumnsBetween(this.newestRangeStartCell.column, cellPosition.column);\n if (!columns) {\n return;\n }\n this.draggingCell = cellPosition;\n this.draggingRange.endRow = {\n rowIndex: cellPosition.rowIndex,\n rowPinned: cellPosition.rowPinned\n };\n this.draggingRange.columns = columns;\n this.dispatchChangedEvent(false, false, this.draggingRange.id);\n };\n RangeController.prototype.onDragStop = function () {\n if (!this.dragging) {\n return;\n }\n var id = this.draggingRange.id;\n this.autoScrollService.ensureCleared();\n this.gridPanel.removeScrollEventListener(this.bodyScrollListener);\n this.lastMouseEvent = null;\n this.dragging = false;\n this.draggingRange = undefined;\n this.draggingCell = undefined;\n this.dispatchChangedEvent(false, true, id);\n };\n RangeController.prototype.dispatchChangedEvent = function (started, finished, id) {\n var event = Object.freeze({\n type: Events.EVENT_RANGE_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n started: started,\n finished: finished,\n id: id,\n });\n this.eventService.dispatchEvent(event);\n };\n RangeController.prototype.calculateColumnsBetween = function (columnFrom, columnTo) {\n var allColumns = this.columnController.getAllDisplayedColumns();\n var isSameColumn = columnFrom === columnTo;\n var fromIndex = allColumns.indexOf(columnFrom);\n if (fromIndex < 0) {\n console.warn(\"ag-Grid: column \" + columnFrom.getId() + \" is not visible\");\n return undefined;\n }\n var toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);\n if (toIndex < 0) {\n console.warn(\"ag-Grid: column \" + columnTo.getId() + \" is not visible\");\n return undefined;\n }\n if (isSameColumn) {\n return [columnFrom];\n }\n var firstIndex = Math.min(fromIndex, toIndex);\n var lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;\n var columns = [];\n for (var i = firstIndex; i <= lastIndex; i++) {\n columns.push(allColumns[i]);\n }\n return columns;\n };\n __decorate([\n Autowired('loggerFactory')\n ], RangeController.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('rowModel')\n ], RangeController.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('eventService')\n ], RangeController.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnController')\n ], RangeController.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('mouseEventService')\n ], RangeController.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RangeController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnApi')\n ], RangeController.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], RangeController.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('cellNavigationService')\n ], RangeController.prototype, \"cellNavigationService\", void 0);\n __decorate([\n Autowired(\"pinnedRowModel\")\n ], RangeController.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], RangeController.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n Autowired('cellPositionUtils')\n ], RangeController.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n PostConstruct\n ], RangeController.prototype, \"init\", null);\n RangeController = __decorate([\n Bean('rangeController')\n ], RangeController);\n return RangeController;\n}());\nexport { RangeController };\nvar AutoScrollService = /** @class */ (function () {\n function AutoScrollService(gridPanel, gridOptionsWrapper) {\n this.tickingInterval = null;\n this.gridPanel = gridPanel;\n this.gridOptionsWrapper = gridOptionsWrapper;\n }\n AutoScrollService.prototype.check = function (mouseEvent, skipVerticalScroll) {\n if (skipVerticalScroll === void 0) { skipVerticalScroll = false; }\n var rect = this.gridPanel.getBodyClientRect();\n skipVerticalScroll = skipVerticalScroll || this.gridOptionsWrapper.getDomLayout() !== Constants.DOM_LAYOUT_NORMAL;\n // we don't do ticking if grid is auto height unless we have a horizontal scroller\n if (skipVerticalScroll && !this.gridPanel.isHorizontalScrollShowing()) {\n return;\n }\n this.tickLeft = mouseEvent.clientX < (rect.left + 20);\n this.tickRight = mouseEvent.clientX > (rect.right - 20);\n this.tickUp = mouseEvent.clientY < (rect.top + 20) && !skipVerticalScroll;\n this.tickDown = mouseEvent.clientY > (rect.bottom - 20) && !skipVerticalScroll;\n if (this.tickLeft || this.tickRight || this.tickUp || this.tickDown) {\n this.ensureTickingStarted();\n }\n else {\n this.ensureCleared();\n }\n };\n AutoScrollService.prototype.ensureTickingStarted = function () {\n if (this.tickingInterval === null) {\n this.tickingInterval = window.setInterval(this.doTick.bind(this), 100);\n this.tickCount = 0;\n }\n };\n AutoScrollService.prototype.doTick = function () {\n this.tickCount++;\n var vScrollPosition = this.gridPanel.getVScrollPosition();\n var hScrollPosition = this.gridPanel.getHScrollPosition();\n var tickAmount;\n tickAmount = this.tickCount > 20 ? 200 : (this.tickCount > 10 ? 80 : 40);\n if (this.tickUp) {\n this.gridPanel.setVerticalScrollPosition(vScrollPosition.top - tickAmount);\n }\n if (this.tickDown) {\n this.gridPanel.setVerticalScrollPosition(vScrollPosition.top + tickAmount);\n }\n if (this.tickLeft) {\n this.gridPanel.setHorizontalScrollPosition(hScrollPosition.left - tickAmount);\n }\n if (this.tickRight) {\n this.gridPanel.setHorizontalScrollPosition(hScrollPosition.left + tickAmount);\n }\n };\n AutoScrollService.prototype.ensureCleared = function () {\n if (this.tickingInterval) {\n window.clearInterval(this.tickingInterval);\n this.tickingInterval = null;\n }\n };\n return AutoScrollService;\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 { Autowired, Component, PostConstruct, _ } from \"@ag-grid-community/core\";\nvar AbstractSelectionHandle = /** @class */ (function (_super) {\n __extends(AbstractSelectionHandle, _super);\n function AbstractSelectionHandle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.changedCell = false;\n _this.dragging = false;\n _this.shouldDestroyOnEndDragging = false;\n return _this;\n }\n AbstractSelectionHandle.prototype.init = function () {\n var _this = this;\n this.dragService.addDragSource({\n dragStartPixels: 0,\n eElement: this.getGui(),\n onDragStart: this.onDragStart.bind(this),\n onDragging: function (e) {\n _this.dragging = true;\n _this.rangeController.autoScrollService.check(e);\n if (_this.changedCell) {\n _this.onDrag(e);\n }\n },\n onDragStop: function (e) {\n _this.dragging = false;\n _this.onDragEnd(e);\n _this.clearValues();\n _this.rangeController.autoScrollService.ensureCleared();\n _.removeCssClass(document.body, \"ag-dragging-\" + _this.type + \"-handle\");\n if (_this.shouldDestroyOnEndDragging) {\n _this.destroy();\n }\n }\n });\n this.addDestroyableEventListener(this.getGui(), 'mousedown', this.preventRangeExtension.bind(this));\n };\n AbstractSelectionHandle.prototype.isDragging = function () {\n return this.dragging;\n };\n AbstractSelectionHandle.prototype.getCellComp = function () {\n return this.cellComp;\n };\n AbstractSelectionHandle.prototype.setCellComp = function (cellComp) {\n this.cellComp = cellComp;\n };\n AbstractSelectionHandle.prototype.getCellRange = function () {\n return this.cellRange;\n };\n AbstractSelectionHandle.prototype.setCellRange = function (range) {\n this.cellRange = range;\n };\n AbstractSelectionHandle.prototype.getRangeStartRow = function () {\n return this.rangeStartRow;\n };\n AbstractSelectionHandle.prototype.setRangeStartRow = function (row) {\n this.rangeStartRow = row;\n };\n AbstractSelectionHandle.prototype.getRangeEndRow = function () {\n return this.rangeEndRow;\n };\n AbstractSelectionHandle.prototype.setRangeEndRow = function (row) {\n this.rangeEndRow = row;\n };\n AbstractSelectionHandle.prototype.getLastCellHovered = function () {\n return this.lastCellHovered;\n };\n AbstractSelectionHandle.prototype.preventRangeExtension = function (e) {\n e.preventDefault();\n e.stopPropagation();\n };\n AbstractSelectionHandle.prototype.onDragStart = function (e) {\n this.cellHoverListener = this.addDestroyableEventListener(this.rowRenderer.getGridCore().getRootGui(), 'mousemove', this.updateLastCellPositionHovered.bind(this));\n _.addCssClass(document.body, \"ag-dragging-\" + this.type + \"-handle\");\n };\n AbstractSelectionHandle.prototype.updateLastCellPositionHovered = function (e) {\n var cell = this.mouseEventService.getCellPositionForEvent(e);\n if (cell === this.lastCellHovered) {\n this.changedCell = false;\n return;\n }\n this.lastCellHovered = cell;\n this.changedCell = true;\n };\n AbstractSelectionHandle.prototype.getType = function () {\n return this.type;\n };\n AbstractSelectionHandle.prototype.refresh = function (cellComp) {\n var _this = this;\n var oldCellComp = this.getCellComp();\n var eGui = this.getGui();\n var cellRange = _.last(this.rangeController.getCellRanges());\n var start = cellRange.startRow;\n var end = cellRange.endRow;\n if (start && end) {\n var isBefore = this.rowPositionUtils.before(end, start);\n if (isBefore) {\n this.setRangeStartRow(end);\n this.setRangeEndRow(start);\n }\n else {\n this.setRangeStartRow(start);\n this.setRangeEndRow(end);\n }\n }\n if (oldCellComp !== cellComp || !_.isVisible(eGui)) {\n this.setCellComp(cellComp);\n window.setTimeout(function () {\n if (_this.isAlive()) {\n cellComp.appendChild(eGui);\n }\n }, 1);\n }\n this.setCellRange(cellRange);\n };\n AbstractSelectionHandle.prototype.clearValues = function () {\n this.lastCellHovered = undefined;\n this.removeListeners();\n };\n AbstractSelectionHandle.prototype.removeListeners = function () {\n if (this.cellHoverListener) {\n this.cellHoverListener();\n this.cellHoverListener = undefined;\n }\n };\n AbstractSelectionHandle.prototype.destroy = function () {\n if (!this.shouldDestroyOnEndDragging && this.isDragging()) {\n _.setDisplayed(this.getGui(), false);\n this.shouldDestroyOnEndDragging = true;\n return;\n }\n this.shouldDestroyOnEndDragging = false;\n _super.prototype.destroy.call(this);\n this.removeListeners();\n var eGui = this.getGui();\n if (eGui.parentElement) {\n eGui.parentElement.removeChild(eGui);\n }\n };\n __decorate([\n Autowired(\"rowRenderer\")\n ], AbstractSelectionHandle.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired(\"dragService\")\n ], AbstractSelectionHandle.prototype, \"dragService\", void 0);\n __decorate([\n Autowired(\"rangeController\")\n ], AbstractSelectionHandle.prototype, \"rangeController\", void 0);\n __decorate([\n Autowired(\"mouseEventService\")\n ], AbstractSelectionHandle.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired(\"columnController\")\n ], AbstractSelectionHandle.prototype, \"columnController\", void 0);\n __decorate([\n Autowired(\"cellNavigationService\")\n ], AbstractSelectionHandle.prototype, \"cellNavigationService\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], AbstractSelectionHandle.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n PostConstruct\n ], AbstractSelectionHandle.prototype, \"init\", null);\n return AbstractSelectionHandle;\n}(Component));\nexport { AbstractSelectionHandle };\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 __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { Autowired, Events, _ } from '@ag-grid-community/core';\nimport { AbstractSelectionHandle } from \"./abstractSelectionHandle\";\nvar FillHandle = /** @class */ (function (_super) {\n __extends(FillHandle, _super);\n function FillHandle() {\n var _this = _super.call(this, FillHandle.TEMPLATE) || this;\n _this.markedCellComps = [];\n _this.cellValues = [];\n _this.isUp = false;\n _this.isLeft = false;\n _this.isReduce = false;\n _this.type = 'fill';\n return _this;\n }\n FillHandle.prototype.onDrag = function (e) {\n if (!this.initialXY) {\n var _a = this.getGui().getBoundingClientRect(), left = _a.left, top_1 = _a.top;\n this.initialXY = { x: left, y: top_1 };\n }\n var _b = this.initialXY, x = _b.x, y = _b.y;\n var diffX = Math.abs(x - e.clientX);\n var diffY = Math.abs(y - e.clientY);\n var direction = diffX > diffY ? 'x' : 'y';\n if (direction !== this.dragAxis) {\n this.dragAxis = direction;\n }\n if (!this.initialPosition) {\n var cellComp = this.getCellComp();\n if (!cellComp) {\n return;\n }\n this.initialPosition = cellComp.getCellPosition();\n }\n var lastCellHovered = this.getLastCellHovered();\n if (lastCellHovered && lastCellHovered !== this.lastCellMarked) {\n this.lastCellMarked = lastCellHovered;\n this.markPathFrom(this.initialPosition, lastCellHovered);\n }\n };\n FillHandle.prototype.onDragEnd = function (e) {\n if (!this.markedCellComps.length) {\n return;\n }\n var isX = this.dragAxis === 'x';\n var initialRange = this.getCellRange();\n var colLen = initialRange.columns.length;\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n var finalRange;\n if (!this.isUp && !this.isLeft) {\n finalRange = this.rangeController.createCellRangeFromCellRangeParams({\n rowStartIndex: rangeStartRow.rowIndex,\n rowStartPinned: rangeStartRow.rowPinned,\n columnStart: initialRange.columns[0],\n rowEndIndex: isX ? rangeEndRow.rowIndex : this.lastCellMarked.rowIndex,\n rowEndPinned: isX ? rangeEndRow.rowPinned : this.lastCellMarked.rowPinned,\n columnEnd: isX ? this.lastCellMarked.column : initialRange.columns[colLen - 1]\n });\n }\n else {\n var startRow = isX ? rangeStartRow : this.lastCellMarked;\n finalRange = this.rangeController.createCellRangeFromCellRangeParams({\n rowStartIndex: startRow.rowIndex,\n rowStartPinned: startRow.rowPinned,\n columnStart: isX ? this.lastCellMarked.column : initialRange.columns[0],\n rowEndIndex: rangeEndRow.rowIndex,\n rowEndPinned: rangeEndRow.rowPinned,\n columnEnd: initialRange.columns[colLen - 1]\n });\n }\n if (finalRange) {\n // raising fill events for undo / redo\n this.raiseFillStartEvent();\n this.handleValueChanged(initialRange, finalRange, e);\n this.rangeController.setCellRanges([finalRange]);\n this.raiseFillEndEvent(initialRange, finalRange);\n }\n };\n FillHandle.prototype.raiseFillStartEvent = function () {\n var fillStartEvent = {\n type: Events.EVENT_FILL_START,\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n api: this.gridOptionsWrapper.getApi()\n };\n this.eventService.dispatchEvent(fillStartEvent);\n };\n FillHandle.prototype.raiseFillEndEvent = function (initialRange, finalRange) {\n var fillEndEvent = {\n type: Events.EVENT_FILL_END,\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n api: this.gridOptionsWrapper.getApi(),\n initialRange: initialRange,\n finalRange: finalRange\n };\n this.eventService.dispatchEvent(fillEndEvent);\n };\n FillHandle.prototype.handleValueChanged = function (initialRange, finalRange, e) {\n var _this = this;\n var initialRangeEndRow = this.rangeController.getRangeEndRow(initialRange);\n var initialRangeStartRow = this.rangeController.getRangeStartRow(initialRange);\n var finalRangeEndRow = this.rangeController.getRangeEndRow(finalRange);\n var finalRangeStartRow = this.rangeController.getRangeStartRow(finalRange);\n var isVertical = this.dragAxis === 'y';\n // if the range is being reduced in size, all we need to do is\n // clear the cells that are no longer part of the range\n if (this.isReduce && !this.gridOptionsWrapper.isSuppressClearOnFillReduction()) {\n var columns = isVertical\n ? initialRange.columns\n : initialRange.columns.filter(function (col) { return finalRange.columns.indexOf(col) < 0; });\n var startRow = isVertical ? this.cellNavigationService.getRowBelow(finalRangeEndRow) : finalRangeStartRow;\n if (startRow) {\n this.clearCellsInRange(startRow, initialRangeEndRow, columns);\n }\n return;\n }\n var withinInitialRange = true;\n var values = [];\n var initialValues = [];\n var idx = 0;\n var resetValues = function () {\n values.length = 0;\n initialValues.length = 0;\n idx = 0;\n };\n var iterateAcrossCells = function (column, columns) {\n var currentRow = _this.isUp ? initialRangeEndRow : initialRangeStartRow;\n var finished = false;\n if (isVertical) {\n withinInitialRange = true;\n resetValues();\n }\n var _loop_1 = function () {\n var rowNode = _this.rowPositionUtils.getRowNode(currentRow);\n if (!rowNode) {\n return \"break\";\n }\n if (isVertical && column) {\n fillValues(values, column, rowNode, function () {\n return !_this.rowPositionUtils.sameRow(currentRow, _this.isUp ? initialRangeStartRow : initialRangeEndRow);\n });\n }\n else if (columns) {\n withinInitialRange = true;\n resetValues();\n columns.forEach(function (col) { return fillValues(values, col, rowNode, function () { return col !== (_this.isLeft ? initialRange.columns[0] : _.last(initialRange.columns)); }); });\n }\n finished = _this.rowPositionUtils.sameRow(currentRow, _this.isUp ? finalRangeStartRow : finalRangeEndRow);\n currentRow = _this.isUp\n ? _this.cellNavigationService.getRowAbove(currentRow)\n : _this.cellNavigationService.getRowBelow(currentRow);\n };\n while (!finished && currentRow) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n };\n var fillValues = function (values, col, rowNode, updateInitialSet) {\n var currentValue;\n if (withinInitialRange) {\n currentValue = _this.valueService.getValue(col, rowNode);\n initialValues.push(currentValue);\n withinInitialRange = updateInitialSet();\n }\n else {\n currentValue = _this.processValues(e, values, initialValues, col, rowNode, idx++);\n if (col.isCellEditable(rowNode)) {\n _this.valueService.setValue(rowNode, col, currentValue);\n }\n }\n values.push(currentValue);\n };\n if (isVertical) {\n initialRange.columns.forEach(function (col) {\n iterateAcrossCells(col);\n });\n }\n else {\n var columns = this.isLeft ? __spreadArrays(finalRange.columns).reverse() : finalRange.columns;\n iterateAcrossCells(undefined, columns);\n }\n };\n FillHandle.prototype.clearCellsInRange = function (startRow, endRow, columns) {\n var _this = this;\n var currentRow = startRow;\n var finished = false;\n var _loop_2 = function () {\n var rowNode = this_1.rowPositionUtils.getRowNode(currentRow);\n // should never happen, defensive programming\n if (!rowNode) {\n return \"break\";\n }\n columns.forEach(function (col) {\n if (col.isCellEditable(rowNode)) {\n _this.valueService.setValue(rowNode, col, null);\n }\n });\n finished = this_1.rowPositionUtils.sameRow(currentRow, endRow);\n currentRow = this_1.cellNavigationService.getRowBelow(currentRow);\n };\n var this_1 = this;\n while (!finished && currentRow) {\n var state_2 = _loop_2();\n if (state_2 === \"break\")\n break;\n }\n };\n FillHandle.prototype.processValues = function (event, values, initialValues, col, rowNode, idx) {\n var userFillOperation = this.gridOptionsWrapper.getFillOperation();\n var isVertical = this.dragAxis === 'y';\n var direction;\n if (isVertical) {\n direction = this.isUp ? 'up' : 'down';\n }\n else {\n direction = this.isLeft ? 'left' : 'right';\n }\n if (userFillOperation) {\n var userResult = userFillOperation({\n event: event,\n values: values,\n initialValues: initialValues,\n currentIndex: idx,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n direction: direction,\n column: isVertical ? col : undefined,\n rowNode: !isVertical ? rowNode : undefined // only present if left / right\n });\n if (userResult !== false) {\n return userResult;\n }\n }\n var allNumbers = !values.some(function (val) { return isNaN(parseFloat(val)); });\n // values should be copied in order if the alt key is pressed\n // or if the values contain strings and numbers\n // However, if we only have one initial value selected, and that\n // value is a number and we are also pressing alt, then we should\n // increment or decrement the value by 1 based on direction.\n if (event.altKey || !allNumbers) {\n if (allNumbers && initialValues.length === 1) {\n var multiplier = (this.isUp || this.isLeft) ? -1 : 1;\n return _.last(values) + 1 * multiplier;\n }\n return values[idx % values.length];\n }\n return _.last(_.findLineByLeastSquares(values.map(Number)));\n };\n FillHandle.prototype.clearValues = function () {\n this.clearMarkedPath();\n this.clearCellValues();\n this.lastCellMarked = undefined;\n _super.prototype.clearValues.call(this);\n };\n FillHandle.prototype.clearMarkedPath = function () {\n this.markedCellComps.forEach(function (cellComp) {\n var eGui = cellComp.getGui();\n _.removeCssClass(eGui, 'ag-selection-fill-top');\n _.removeCssClass(eGui, 'ag-selection-fill-right');\n _.removeCssClass(eGui, 'ag-selection-fill-bottom');\n _.removeCssClass(eGui, 'ag-selection-fill-left');\n });\n this.markedCellComps.length = 0;\n this.isUp = false;\n this.isLeft = false;\n this.isReduce = false;\n };\n FillHandle.prototype.clearCellValues = function () {\n this.cellValues.length = 0;\n };\n FillHandle.prototype.markPathFrom = function (initialPosition, currentPosition) {\n this.clearMarkedPath();\n this.clearCellValues();\n if (this.dragAxis === 'y') {\n if (this.rowPositionUtils.sameRow(currentPosition, initialPosition)) {\n return;\n }\n var isBefore = this.rowPositionUtils.before(currentPosition, initialPosition);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n if (isBefore && ((currentPosition.rowPinned == rangeStartRow.rowPinned &&\n currentPosition.rowIndex >= rangeStartRow.rowIndex) ||\n (rangeStartRow.rowPinned != rangeEndRow.rowPinned &&\n currentPosition.rowPinned == rangeEndRow.rowPinned &&\n currentPosition.rowIndex <= rangeEndRow.rowIndex))) {\n this.reduceVertical(initialPosition, currentPosition);\n this.isReduce = true;\n }\n else {\n this.extendVertical(initialPosition, currentPosition, isBefore);\n this.isReduce = false;\n }\n }\n else {\n var initialColumn = initialPosition.column;\n var currentColumn = currentPosition.column;\n if (initialColumn === currentColumn) {\n return;\n }\n var displayedColumns = this.columnController.getAllDisplayedColumns();\n var initialIndex = displayedColumns.indexOf(initialColumn);\n var currentIndex = displayedColumns.indexOf(currentColumn);\n if (currentIndex <= initialIndex && currentIndex >= displayedColumns.indexOf(this.getCellRange().columns[0])) {\n this.reduceHorizontal(initialPosition, currentPosition);\n this.isReduce = true;\n }\n else {\n this.extendHorizontal(initialPosition, currentPosition, currentIndex < initialIndex);\n this.isReduce = false;\n }\n }\n };\n FillHandle.prototype.extendVertical = function (initialPosition, endPosition, isMovingUp) {\n var _a = this, rowRenderer = _a.rowRenderer, rangeController = _a.rangeController;\n var row = initialPosition;\n do {\n var cellRange = this.getCellRange();\n var colLen = cellRange.columns.length;\n for (var i = 0; i < colLen; i++) {\n var column = cellRange.columns[i];\n var rowPos = { rowIndex: row.rowIndex, rowPinned: row.rowPinned };\n var cellPos = __assign(__assign({}, rowPos), { column: column });\n var cellInRange = rangeController.isCellInSpecificRange(cellPos, cellRange);\n var isInitialRow = this.rowPositionUtils.sameRow(row, initialPosition);\n if (isMovingUp) {\n this.isUp = true;\n }\n if (!isInitialRow) {\n var cellComp = rowRenderer.getComponentForCell(cellPos);\n if (cellComp) {\n this.markedCellComps.push(cellComp);\n var eGui = cellComp.getGui();\n if (!cellInRange) {\n _.addOrRemoveCssClass(eGui, 'ag-selection-fill-left', i === 0);\n _.addOrRemoveCssClass(eGui, 'ag-selection-fill-right', i === colLen - 1);\n }\n _.addOrRemoveCssClass(eGui, isMovingUp ? 'ag-selection-fill-top' : 'ag-selection-fill-bottom', this.rowPositionUtils.sameRow(row, endPosition));\n }\n }\n }\n if (this.rowPositionUtils.sameRow(row, endPosition)) {\n break;\n }\n } while (row = isMovingUp ?\n this.cellNavigationService.getRowAbove(row) :\n this.cellNavigationService.getRowBelow(row));\n };\n FillHandle.prototype.reduceVertical = function (initialPosition, endPosition) {\n var row = initialPosition;\n do {\n var cellRange = this.getCellRange();\n var colLen = cellRange.columns.length;\n var isLastRow = this.rowPositionUtils.sameRow(row, endPosition);\n for (var i = 0; i < colLen; i++) {\n var rowPos = { rowIndex: row.rowIndex, rowPinned: row.rowPinned };\n var celPos = __assign(__assign({}, rowPos), { column: cellRange.columns[i] });\n var cellComp = this.rowRenderer.getComponentForCell(celPos);\n if (cellComp) {\n this.markedCellComps.push(cellComp);\n var eGui = cellComp.getGui();\n _.addOrRemoveCssClass(eGui, 'ag-selection-fill-bottom', this.rowPositionUtils.sameRow(row, endPosition));\n }\n }\n if (isLastRow) {\n break;\n }\n } while (row = this.cellNavigationService.getRowAbove(row));\n };\n FillHandle.prototype.extendHorizontal = function (initialPosition, endPosition, isMovingLeft) {\n var _this = this;\n var allCols = this.columnController.getAllDisplayedColumns();\n var startCol = allCols.indexOf(isMovingLeft ? endPosition.column : initialPosition.column);\n var endCol = allCols.indexOf(isMovingLeft ? this.getCellRange().columns[0] : endPosition.column);\n var offset = isMovingLeft ? 0 : 1;\n var colsToMark = allCols.slice(startCol + offset, endCol + offset);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n colsToMark.forEach(function (column) {\n var row = rangeStartRow;\n var isLastRow = false;\n do {\n isLastRow = _this.rowPositionUtils.sameRow(row, rangeEndRow);\n var cellComp = _this.rowRenderer.getComponentForCell({\n rowIndex: row.rowIndex,\n rowPinned: row.rowPinned,\n column: column\n });\n if (cellComp) {\n _this.markedCellComps.push(cellComp);\n var eGui = cellComp.getGui();\n _.addOrRemoveCssClass(eGui, 'ag-selection-fill-top', _this.rowPositionUtils.sameRow(row, rangeStartRow));\n _.addOrRemoveCssClass(eGui, 'ag-selection-fill-bottom', _this.rowPositionUtils.sameRow(row, rangeEndRow));\n if (isMovingLeft) {\n _this.isLeft = true;\n _.addOrRemoveCssClass(eGui, 'ag-selection-fill-left', column === colsToMark[0]);\n }\n else {\n _.addOrRemoveCssClass(eGui, 'ag-selection-fill-right', column === _.last(colsToMark));\n }\n }\n row = _this.cellNavigationService.getRowBelow(row);\n } while (!isLastRow);\n });\n };\n FillHandle.prototype.reduceHorizontal = function (initialPosition, endPosition) {\n var _this = this;\n var allCols = this.columnController.getAllDisplayedColumns();\n var startCol = allCols.indexOf(endPosition.column);\n var endCol = allCols.indexOf(initialPosition.column);\n var colsToMark = allCols.slice(startCol, endCol);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n colsToMark.forEach(function (column) {\n var row = rangeStartRow;\n var isLastRow = false;\n do {\n isLastRow = _this.rowPositionUtils.sameRow(row, rangeEndRow);\n var cellComp = _this.rowRenderer.getComponentForCell({\n rowIndex: row.rowIndex,\n rowPinned: row.rowPinned,\n column: column\n });\n if (cellComp) {\n _this.markedCellComps.push(cellComp);\n var eGui = cellComp.getGui();\n _.addOrRemoveCssClass(eGui, 'ag-selection-fill-right', column === colsToMark[0]);\n }\n row = _this.cellNavigationService.getRowBelow(row);\n } while (!isLastRow);\n });\n };\n FillHandle.prototype.refresh = function (cellComp) {\n var cellRange = this.rangeController.getCellRanges()[0];\n var isColumnRange = !cellRange.startRow || !cellRange.endRow;\n if (isColumnRange) {\n this.destroy();\n return;\n }\n _super.prototype.refresh.call(this, cellComp);\n };\n FillHandle.TEMPLATE = '
';\n __decorate([\n Autowired('valueService')\n ], FillHandle.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('eventService')\n ], FillHandle.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], FillHandle.prototype, \"gridOptionsWrapper\", void 0);\n return FillHandle;\n}(AbstractSelectionHandle));\nexport { FillHandle };\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};\nimport { _, CellRangeType } from \"@ag-grid-community/core\";\nimport { AbstractSelectionHandle } from \"./abstractSelectionHandle\";\nvar RangeHandle = /** @class */ (function (_super) {\n __extends(RangeHandle, _super);\n function RangeHandle() {\n var _this = _super.call(this, RangeHandle.TEMPLATE) || this;\n _this.type = 'range';\n _this.rangeFixed = false;\n return _this;\n }\n RangeHandle.prototype.onDrag = function (e) {\n var lastCellHovered = this.getLastCellHovered();\n if (!lastCellHovered) {\n return;\n }\n var cellRanges = this.rangeController.getCellRanges();\n var lastRange = _.last(cellRanges);\n if (!this.rangeFixed) {\n this.fixRangeStartEnd(lastRange);\n this.rangeFixed = true;\n }\n this.endPosition = {\n rowIndex: lastCellHovered.rowIndex,\n rowPinned: lastCellHovered.rowPinned,\n column: lastCellHovered.column\n };\n // check if the cell ranges are for a chart\n if (cellRanges.length === 2 && cellRanges[0].type === CellRangeType.DIMENSION && lastRange.type === CellRangeType.VALUE) {\n var rowChanged = !this.rowPositionUtils.sameRow(this.endPosition, this.rangeController.getRangeEndRow(lastRange));\n if (rowChanged) {\n // ensure the dimension range is kept in sync with the value range (which has the handle)\n this.rangeController.updateRangeEnd(cellRanges[0], __assign(__assign({}, this.endPosition), { column: cellRanges[0].columns[0] }), true);\n }\n }\n this.rangeController.extendLatestRangeToCell(this.endPosition);\n };\n RangeHandle.prototype.onDragEnd = function (e) {\n var cellRange = _.last(this.rangeController.getCellRanges());\n this.fixRangeStartEnd(cellRange);\n this.rangeFixed = false;\n };\n RangeHandle.prototype.fixRangeStartEnd = function (cellRange) {\n var startRow = this.rangeController.getRangeStartRow(cellRange);\n var endRow = this.rangeController.getRangeEndRow(cellRange);\n var column = cellRange.columns[0];\n cellRange.startRow = startRow;\n cellRange.endRow = endRow;\n cellRange.startColumn = column;\n };\n RangeHandle.TEMPLATE = '
';\n return RangeHandle;\n}(AbstractSelectionHandle));\nexport { RangeHandle };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { RangeController } from \"./rangeSelection/rangeController\";\nimport { FillHandle } from \"./rangeSelection/fillHandle\";\nimport { RangeHandle } from \"./rangeSelection/rangeHandle\";\nexport var RangeSelectionModule = {\n moduleName: ModuleNames.RangeSelectionModule,\n beans: [RangeController],\n agStackComponents: [\n { componentName: 'AgFillHandle', componentClass: FillHandle },\n { componentName: 'AgRangeHandle', componentClass: RangeHandle }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","export { RangeSelectionModule } from \"./rangeSelectionModule\";\n","import { _ } from '@ag-grid-community/core';\nimport numberFormatsFactory from './numberFormats';\nimport fontsFactory from './fonts';\nimport fillsFactory from './fills';\nimport bordersFactory from './borders';\nimport cellStylesXfsFactory from './cellStyleXfs';\nimport cellXfsFactory from './cellXfs';\nimport cellStylesFactory from './cellStyles';\nimport { numberFormatMap } from './numberFormat';\nimport { getFamilyId } from './font';\nimport { convertLegacyBorder } from './border';\nvar stylesMap;\nvar registeredNumberFmts;\nvar registeredFonts;\nvar registeredFills;\nvar registeredBorders;\nvar registeredCellStyleXfs;\nvar registeredCellXfs;\nvar registeredCellStyles;\nvar resetStylesheetValues = function () {\n stylesMap = { base: 0 };\n registeredNumberFmts = [];\n registeredFonts = [{ name: 'Calibri', size: 14, colorTheme: '1', family: 2, scheme: 'minor' }];\n registeredFills = [{ patternType: 'none', }, { patternType: 'gray125' }];\n registeredBorders = [{ left: undefined, right: undefined, top: undefined, bottom: undefined, diagonal: undefined }];\n registeredCellStyleXfs = [{ borderId: 0, fillId: 0, fontId: 0, numFmtId: 0 }];\n registeredCellXfs = [{ borderId: 0, fillId: 0, fontId: 0, numFmtId: 0, xfId: 0 }];\n registeredCellStyles = [{ builtinId: 0, name: 'normal', xfId: 0 }];\n};\nvar convertLegacyPattern = function (name) {\n var colorMap = {\n None: 'none',\n Solid: 'solid',\n Gray50: 'mediumGray',\n Gray75: 'darkGray',\n Gray25: 'lightGray',\n HorzStripe: 'darkHorizontal',\n VertStripe: 'darkVertical',\n ReverseDiagStripe: 'darkDown',\n DiagStripe: 'darkUp',\n DiagCross: 'darkGrid',\n ThickDiagCross: 'darkTrellis',\n ThinHorzStripe: 'lightHorizontal',\n ThinVertStripe: 'lightVertical',\n ThinReverseDiagStripe: 'lightDown',\n ThinDiagStripe: 'lightUp',\n ThinHorzCross: 'lightGrid',\n ThinDiagCross: 'lightTrellis',\n Gray125: 'gray125',\n Gray0625: 'gray0625'\n };\n if (!name) {\n return 'none';\n }\n return colorMap[name] || name;\n};\nexport var convertLegacyColor = function (color) {\n if (color == undefined) {\n return color;\n }\n if (color.charAt(0) === '#') {\n color = color.substr(1);\n }\n return color.length === 6 ? '00' + color : color;\n};\nvar registerFill = function (fill) {\n var convertedPattern = convertLegacyPattern(fill.pattern);\n var convertedFillColor = convertLegacyColor(fill.color);\n var convertedPatternColor = convertLegacyColor(fill.patternColor);\n var pos = _.findIndex(registeredFills, function (currentFill) {\n var patternType = currentFill.patternType, fgRgb = currentFill.fgRgb, bgRgb = currentFill.bgRgb;\n if (patternType != convertedPattern ||\n fgRgb != convertedFillColor ||\n bgRgb != convertedPatternColor) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredFills.length;\n registeredFills.push({ patternType: convertedPattern, fgRgb: convertedFillColor, bgRgb: convertedPatternColor });\n }\n return pos;\n};\nvar registerNumberFmt = function (format) {\n format = _.utf8_encode(format);\n if (numberFormatMap[format]) {\n return numberFormatMap[format];\n }\n var pos = _.findIndex(registeredNumberFmts, function (currentFormat) { return currentFormat.formatCode === format; });\n if (pos === -1) {\n pos = registeredNumberFmts.length + 164;\n registeredNumberFmts.push({ formatCode: format, numFmtId: pos });\n }\n else {\n pos = registeredNumberFmts[pos].numFmtId;\n }\n return pos;\n};\nvar registerBorders = function (borders) {\n var borderBottom = borders.borderBottom, borderTop = borders.borderTop, borderLeft = borders.borderLeft, borderRight = borders.borderRight;\n var bottomStyle, topStyle, leftStyle, rightStyle;\n var bottomColor, topColor, leftColor, rightColor;\n if (borderLeft) {\n leftStyle = convertLegacyBorder(borderLeft.lineStyle, borderLeft.weight);\n leftColor = convertLegacyColor(borderLeft.color);\n }\n if (borderRight) {\n rightStyle = convertLegacyBorder(borderRight.lineStyle, borderRight.weight);\n rightColor = convertLegacyColor(borderRight.color);\n }\n if (borderBottom) {\n bottomStyle = convertLegacyBorder(borderBottom.lineStyle, borderBottom.weight);\n bottomColor = convertLegacyColor(borderBottom.color);\n }\n if (borderTop) {\n topStyle = convertLegacyBorder(borderTop.lineStyle, borderTop.weight);\n topColor = convertLegacyColor(borderTop.color);\n }\n var pos = _.findIndex(registeredBorders, function (currentBorder) {\n var left = currentBorder.left, right = currentBorder.right, top = currentBorder.top, bottom = currentBorder.bottom;\n if (!left && (leftStyle || leftColor)) {\n return false;\n }\n if (!right && (rightStyle || rightColor)) {\n return false;\n }\n if (!top && (topStyle || topColor)) {\n return false;\n }\n if (!bottom && (bottomStyle || bottomColor)) {\n return false;\n }\n var _a = left || {}, clS = _a.style, clC = _a.color;\n var _b = right || {}, crS = _b.style, crC = _b.color;\n var _c = top || {}, ctS = _c.style, ctC = _c.color;\n var _d = bottom || {}, cbS = _d.style, cbC = _d.color;\n if (clS != leftStyle || clC != leftColor) {\n return false;\n }\n if (crS != rightStyle || crC != rightColor) {\n return false;\n }\n if (ctS != topStyle || ctC != topColor) {\n return false;\n }\n if (cbS != bottomStyle || cbC != bottomColor) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredBorders.length;\n registeredBorders.push({\n left: {\n style: leftStyle, color: leftColor\n },\n right: {\n style: rightStyle, color: rightColor\n },\n top: {\n style: topStyle, color: topColor\n },\n bottom: {\n style: bottomStyle, color: bottomColor\n },\n diagonal: {\n style: undefined,\n color: undefined\n }\n });\n }\n return pos;\n};\nvar registerFont = function (font) {\n var name = font.fontName, color = font.color, size = font.size, bold = font.bold, italic = font.italic, outline = font.outline, shadow = font.shadow, strikeThrough = font.strikeThrough, underline = font.underline, family = font.family;\n var utf8Name = name ? _.utf8_encode(name) : name;\n var convertedColor = convertLegacyColor(color);\n var familyId = getFamilyId(family);\n var pos = _.findIndex(registeredFonts, function (currentFont) {\n if (currentFont.name != utf8Name ||\n currentFont.color != convertedColor ||\n currentFont.size != size ||\n currentFont.bold != bold ||\n currentFont.italic != italic ||\n currentFont.outline != outline ||\n currentFont.shadow != shadow ||\n currentFont.strike != strikeThrough ||\n currentFont.underline != underline ||\n currentFont.family != familyId) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredFonts.length;\n registeredFonts.push({\n name: utf8Name,\n color: convertedColor,\n size: size,\n bold: bold,\n italic: italic,\n outline: outline,\n shadow: shadow,\n strike: strikeThrough,\n underline: underline,\n family: familyId\n });\n }\n return pos;\n};\nvar registerStyle = function (config) {\n var id = config.id, alignment = config.alignment, borders = config.borders, font = config.font, interior = config.interior, numberFormat = config.numberFormat, protection = config.protection;\n var currentFill = 0;\n var currentBorder = 0;\n var currentFont = 0;\n var currentNumberFmt = 0;\n if (!id || stylesMap[id] != undefined) {\n return;\n }\n if (interior) {\n currentFill = registerFill(interior);\n }\n if (borders) {\n currentBorder = registerBorders(borders);\n }\n if (font) {\n currentFont = registerFont(font);\n }\n if (numberFormat) {\n currentNumberFmt = registerNumberFmt(numberFormat.format);\n }\n stylesMap[id] = registeredCellXfs.length;\n registeredCellXfs.push({\n alignment: alignment,\n borderId: currentBorder || 0,\n fillId: currentFill || 0,\n fontId: currentFont || 0,\n numFmtId: currentNumberFmt || 0,\n protection: protection,\n xfId: 0\n });\n};\nvar stylesheetFactory = {\n getTemplate: function () {\n var numberFormats = numberFormatsFactory.getTemplate(registeredNumberFmts);\n var fonts = fontsFactory.getTemplate(registeredFonts);\n var fills = fillsFactory.getTemplate(registeredFills);\n var borders = bordersFactory.getTemplate(registeredBorders);\n var cellStylesXfs = cellStylesXfsFactory.getTemplate(registeredCellStyleXfs);\n var cellXfs = cellXfsFactory.getTemplate(registeredCellXfs);\n var cellStyles = cellStylesFactory.getTemplate(registeredCellStyles);\n resetStylesheetValues();\n return {\n name: 'styleSheet',\n properties: {\n rawMap: {\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'\n }\n },\n children: [\n numberFormats,\n fonts,\n fills,\n borders,\n cellStylesXfs,\n cellXfs,\n cellStyles,\n {\n name: 'tableStyles',\n properties: {\n rawMap: {\n count: 0,\n defaultPivotStyle: 'PivotStyleLight16',\n defaultTableStyle: 'TableStyleMedium2'\n }\n }\n }\n ]\n };\n }\n};\nexport var getStyleId = function (name) {\n return stylesMap[name] || 0;\n};\nexport var registerStyles = function (styles) {\n resetStylesheetValues();\n styles.forEach(registerStyle);\n};\nexport default stylesheetFactory;\n","var coreFactory = {\n getTemplate: function () {\n var dt = new Date(), jsonDate = dt.toJSON();\n return {\n name: 'cp:coreProperties',\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n cp: \"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\",\n dc: 'http://purl.org/dc/elements/1.1/',\n dcterms: 'http://purl.org/dc/terms/',\n dcmitype: 'http://purl.org/dc/dcmitype/',\n xsi: 'http://www.w3.org/2001/XMLSchema-instance'\n }\n }]\n },\n children: [{\n name: 'dc:creator',\n textNode: 'ag-Grid'\n }, {\n name: 'dc:title',\n textNode: 'Workbook'\n }, {\n name: 'dcterms:created',\n properties: {\n rawMap: {\n 'xsi:type': 'dcterms:W3CDTF'\n }\n },\n textNode: jsonDate\n }, {\n name: 'dcterms:modified',\n properties: {\n rawMap: {\n 'xsi:type': 'dcterms:W3CDTF'\n }\n },\n textNode: jsonDate\n }]\n };\n }\n};\nexport default coreFactory;\n","var contentTypeFactory = {\n getTemplate: function (config) {\n var name = config.name, ContentType = config.ContentType, Extension = config.Extension, PartName = config.PartName;\n return {\n name: name,\n properties: {\n rawMap: {\n Extension: Extension,\n PartName: PartName,\n ContentType: ContentType\n }\n }\n };\n }\n};\nexport default contentTypeFactory;\n","import contentTypeFactory from './contentType';\nvar contentTypesFactory = {\n getTemplate: function () {\n var children = [{\n name: 'Default',\n Extension: 'rels',\n ContentType: 'application/vnd.openxmlformats-package.relationships+xml'\n }, {\n name: 'Default',\n ContentType: 'application/xml',\n Extension: 'xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml',\n PartName: \"/xl/workbook.xml\"\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml',\n PartName: '/xl/worksheets/sheet1.xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.theme+xml',\n PartName: '/xl/theme/theme1.xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml',\n PartName: '/xl/styles.xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml',\n PartName: '/xl/sharedStrings.xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-package.core-properties+xml',\n PartName: '/docProps/core.xml'\n }].map(contentTypeFactory.getTemplate);\n return {\n name: \"Types\",\n properties: {\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/package/2006/content-types\"\n }\n },\n children: children\n };\n }\n};\nexport default contentTypesFactory;\n","var getColorChildren = function (props) {\n var type = props[0], innerType = props[1], val = props[2], lastClr = props[3];\n return {\n name: \"a:\" + type,\n children: [{\n name: \"a:\" + innerType,\n properties: {\n rawMap: {\n val: val,\n lastClr: lastClr\n }\n }\n }]\n };\n};\nvar colorScheme = {\n getTemplate: function () {\n return {\n name: \"a:clrScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [\n getColorChildren(['dk1', 'sysClr', 'windowText', '000000']),\n getColorChildren(['lt1', 'sysClr', 'window', 'FFFFFF']),\n getColorChildren(['dk2', 'srgbClr', '44546A']),\n getColorChildren(['lt2', 'srgbClr', 'E7E6E6']),\n getColorChildren(['accent1', 'srgbClr', '4472C4']),\n getColorChildren(['accent2', 'srgbClr', 'ED7D31']),\n getColorChildren(['accent3', 'srgbClr', 'A5A5A5']),\n getColorChildren(['accent4', 'srgbClr', 'FFC000']),\n getColorChildren(['accent5', 'srgbClr', '5B9BD5']),\n getColorChildren(['accent6', 'srgbClr', '70AD47']),\n getColorChildren(['hlink', 'srgbClr', '0563C1']),\n getColorChildren(['folHlink', 'srgbClr', '954F72'])\n ]\n };\n }\n};\nexport default colorScheme;\n","import { _ } from '@ag-grid-community/core';\nvar getFont = function (props) {\n var type = props[0], typeface = props[1], script = props[2], panose = props[3];\n return {\n name: \"a:\" + type,\n properties: {\n rawMap: {\n script: script,\n typeface: typeface,\n panose: panose\n }\n }\n };\n};\nvar fontScheme = {\n getTemplate: function () {\n var utf8_encode = _.utf8_encode;\n return {\n name: \"a:fontScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [{\n name: 'a:majorFont',\n children: [\n getFont(['latin', 'Calibri Light', undefined, '020F0302020204030204']),\n getFont(['ea', '']),\n getFont(['cs', '']),\n getFont(['font', utf8_encode('游ゴシック Light'), 'Jpan']),\n getFont(['font', utf8_encode('맑은 고딕'), 'Hang']),\n getFont(['font', utf8_encode('等线 Light'), 'Hans']),\n getFont(['font', utf8_encode('新細明體'), 'Hant']),\n getFont(['font', 'Times New Roman', 'Arab']),\n getFont(['font', 'Times New Roman', 'Hebr']),\n getFont(['font', 'Tahoma', 'Thai']),\n getFont(['font', 'Nyala', 'Ethi']),\n getFont(['font', 'Vrinda', 'Beng']),\n getFont(['font', 'Shruti', 'Gujr']),\n getFont(['font', 'MoolBoran', 'Khmr']),\n getFont(['font', 'Tunga', 'Knda']),\n getFont(['font', 'Raavi', 'Guru']),\n getFont(['font', 'Euphemia', 'Cans']),\n getFont(['font', 'Plantagenet Cherokee', 'Cher']),\n getFont(['font', 'Microsoft Yi Baiti', 'Yiii']),\n getFont(['font', 'Microsoft Himalaya', 'Tibt']),\n getFont(['font', 'MV Boli', 'Thaa']),\n getFont(['font', 'Mangal', 'Deva']),\n getFont(['font', 'Gautami', 'Telu']),\n getFont(['font', 'Latha', 'Taml']),\n getFont(['font', 'Estrangelo Edessa', 'Syrc']),\n getFont(['font', 'Kalinga', 'Orya']),\n getFont(['font', 'Kartika', 'Mlym']),\n getFont(['font', 'DokChampa', 'Laoo']),\n getFont(['font', 'Iskoola Pota', 'Sinh']),\n getFont(['font', 'Mongolian Baiti', 'Mong']),\n getFont(['font', 'Times New Roman', 'Viet']),\n getFont(['font', 'Microsoft Uighur', 'Uigh']),\n getFont(['font', 'Sylfaen', 'Geor']),\n getFont(['font', 'Arial', 'Armn']),\n getFont(['font', 'Leelawadee UI', 'Bugi']),\n getFont(['font', 'Microsoft JhengHei', 'Bopo']),\n getFont(['font', 'Javanese Text', 'Java']),\n getFont(['font', 'Segoe UI', 'Lisu']),\n getFont(['font', 'Myanmar Text', 'Mymr']),\n getFont(['font', 'Ebrima', 'Nkoo']),\n getFont(['font', 'Nirmala UI', 'Olck']),\n getFont(['font', 'Ebrima', 'Osma']),\n getFont(['font', 'Phagspa', 'Phag']),\n getFont(['font', 'Estrangelo Edessa', 'Syrn']),\n getFont(['font', 'Estrangelo Edessa', 'Syrj']),\n getFont(['font', 'Estrangelo Edessa', 'Syre']),\n getFont(['font', 'Nirmala UI', 'Sora']),\n getFont(['font', 'Microsoft Tai Le', 'Tale']),\n getFont(['font', 'Microsoft New Tai Lue', 'Talu']),\n getFont(['font', 'Ebrima', 'Tfng'])\n ]\n }, {\n name: 'a:minorFont',\n children: [\n getFont(['latin', 'Calibri', undefined, '020F0502020204030204']),\n getFont(['ea', '']),\n getFont(['cs', '']),\n getFont(['font', utf8_encode('游ゴシック'), 'Jpan']),\n getFont(['font', utf8_encode('맑은 고딕'), 'Hang']),\n getFont(['font', utf8_encode('等线'), 'Hans']),\n getFont(['font', utf8_encode('新細明體'), 'Hant']),\n getFont(['font', 'Arial', 'Arab']),\n getFont(['font', 'Arial', 'Hebr']),\n getFont(['font', 'Tahoma', 'Thai']),\n getFont(['font', 'Nyala', 'Ethi']),\n getFont(['font', 'Vrinda', 'Beng']),\n getFont(['font', 'Shruti', 'Gujr']),\n getFont(['font', 'DaunPenh', 'Khmr']),\n getFont(['font', 'Tunga', 'Knda']),\n getFont(['font', 'Raavi', 'Guru']),\n getFont(['font', 'Euphemia', 'Cans']),\n getFont(['font', 'Plantagenet Cherokee', 'Cher']),\n getFont(['font', 'Microsoft Yi Baiti', 'Yiii']),\n getFont(['font', 'Microsoft Himalaya', 'Tibt']),\n getFont(['font', 'MV Boli', 'Thaa']),\n getFont(['font', 'Mangal', 'Deva']),\n getFont(['font', 'Gautami', 'Telu']),\n getFont(['font', 'Latha', 'Taml']),\n getFont(['font', 'Estrangelo Edessa', 'Syrc']),\n getFont(['font', 'Kalinga', 'Orya']),\n getFont(['font', 'Kartika', 'Mlym']),\n getFont(['font', 'DokChampa', 'Laoo']),\n getFont(['font', 'Iskoola Pota', 'Sinh']),\n getFont(['font', 'Mongolian Baiti', 'Mong']),\n getFont(['font', 'Arial', 'Viet']),\n getFont(['font', 'Microsoft Uighur', 'Uigh']),\n getFont(['font', 'Sylfaen', 'Geor']),\n getFont(['font', 'Arial', 'Armn']),\n getFont(['font', 'Leelawadee UI', 'Bugi']),\n getFont(['font', 'Microsoft JhengHei', 'Bopo']),\n getFont(['font', 'Javanese Text', 'Java']),\n getFont(['font', 'Segoe UI', 'Lisu']),\n getFont(['font', 'Myanmar Text', 'Mymr']),\n getFont(['font', 'Ebrima', 'Nkoo']),\n getFont(['font', 'Nirmala UI', 'Olck']),\n getFont(['font', 'Ebrima', 'Osma']),\n getFont(['font', 'Phagspa', 'Phag']),\n getFont(['font', 'Estrangelo Edessa', 'Syrn']),\n getFont(['font', 'Estrangelo Edessa', 'Syrj']),\n getFont(['font', 'Estrangelo Edessa', 'Syre']),\n getFont(['font', 'Nirmala UI', 'Sora']),\n getFont(['font', 'Microsoft Tai Le', 'Tale']),\n getFont(['font', 'Microsoft New Tai Lue', 'Talu']),\n getFont(['font', 'Ebrima', 'Tfng'])\n ]\n }]\n };\n }\n};\nexport default fontScheme;\n","import { _ } from '@ag-grid-community/core';\nvar getPropertyVal = function (name, val, children) { return ({\n name: \"a:\" + name,\n properties: {\n rawMap: {\n val: val\n }\n },\n children: children\n}); };\nvar getGs = function (props) {\n var pos = props[0], schemeColor = props[1], satMod = props[2], lumMod = props[3], tint = props[4], shade = props[5];\n var children = [];\n children.push(getPropertyVal('satMod', satMod));\n if (lumMod) {\n children.push(getPropertyVal('lumMod', lumMod));\n }\n if (tint) {\n children.push(getPropertyVal('tint', tint));\n }\n if (shade) {\n children.push(getPropertyVal('shade', shade));\n }\n return {\n name: 'a:gs',\n properties: {\n rawMap: {\n pos: pos\n }\n },\n children: [{\n name: 'a:schemeClr',\n properties: {\n rawMap: {\n val: schemeColor\n }\n },\n children: children\n }]\n };\n};\nvar getSolidFill = function (val, children) { return ({\n name: 'a:solidFill',\n children: [getPropertyVal('schemeClr', val, children)]\n}); };\nvar getGradFill = function (props) {\n var rotWithShape = props[0], gs1 = props[1], gs2 = props[2], gs3 = props[3], lin = props[4];\n var ang = lin[0], scaled = lin[1];\n return {\n name: 'a:gradFill',\n properties: {\n rawMap: {\n rotWithShape: rotWithShape\n }\n },\n children: [{\n name: 'a:gsLst',\n children: [\n getGs(gs1),\n getGs(gs2),\n getGs(gs3)\n ]\n }, {\n name: 'a:lin',\n properties: {\n rawMap: {\n ang: ang,\n scaled: scaled\n }\n }\n }]\n };\n};\nvar getLine = function (props) {\n var w = props[0], cap = props[1], cmpd = props[2], algn = props[3];\n return {\n name: 'a:ln',\n properties: {\n rawMap: { w: w, cap: cap, cmpd: cmpd, algn: algn }\n },\n children: [\n getSolidFill('phClr'),\n getPropertyVal('prstDash', 'solid'),\n {\n name: 'a:miter',\n properties: {\n rawMap: {\n lim: '800000'\n }\n }\n }\n ]\n };\n};\nvar getEffectStyle = function (shadow) {\n var children = [];\n if (shadow) {\n var blurRad = shadow[0], dist = shadow[1], dir = shadow[2], algn = shadow[3], rotWithShape = shadow[4];\n children.push({\n name: 'a:outerShdw',\n properties: {\n rawMap: { blurRad: blurRad, dist: dist, dir: dir, algn: algn, rotWithShape: rotWithShape }\n },\n children: [\n getPropertyVal('srgbClr', '000000', [getPropertyVal('alpha', '63000')])\n ]\n });\n }\n return {\n name: 'a:effectStyle',\n children: [_.assign({}, {\n name: 'a:effectLst'\n }, children.length ? { children: children } : {})]\n };\n};\nvar getFillStyleList = function () { return ({\n name: 'a:fillStyleLst',\n children: [\n getSolidFill('phClr'),\n getGradFill([\n '1',\n ['0', 'phClr', '105000', '110000', '67000'],\n ['50000', 'phClr', '103000', '105000', '73000'],\n ['100000', 'phClr', '109000', '105000', '81000'],\n ['5400000', '0']\n ]),\n getGradFill([\n '1',\n ['0', 'phClr', '103000', '102000', '94000'],\n ['50000', 'phClr', '110000', '100000', undefined, '100000'],\n ['100000', 'phClr', '120000', '99000', undefined, '78000'],\n ['5400000', '0']\n ])\n ]\n}); };\nvar getLineStyleList = function () { return ({\n name: 'a:lnStyleLst',\n children: [\n getLine(['6350', 'flat', 'sng', 'ctr']),\n getLine(['12700', 'flat', 'sng', 'ctr']),\n getLine(['19050', 'flat', 'sng', 'ctr'])\n ]\n}); };\nvar getEffectStyleList = function () { return ({\n name: 'a:effectStyleLst',\n children: [\n getEffectStyle(),\n getEffectStyle(),\n getEffectStyle(['57150', '19050', '5400000', 'ctr', '0'])\n ]\n}); };\nvar getBgFillStyleList = function () { return ({\n name: 'a:bgFillStyleLst',\n children: [\n getSolidFill('phClr'),\n getSolidFill('phClr', [\n getPropertyVal('tint', '95000'),\n getPropertyVal('satMod', '170000'),\n ]),\n getGradFill([\n '1',\n ['0', 'phClr', '150000', '102000', '93000', '98000'],\n ['50000', 'phClr', '130000', '103000', '98000', '90000'],\n ['100000', 'phClr', '120000', undefined, undefined, '63000'],\n ['5400000', '0']\n ])\n ]\n}); };\nvar formatScheme = {\n getTemplate: function () {\n return {\n name: \"a:fmtScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [\n getFillStyleList(),\n getLineStyleList(),\n getEffectStyleList(),\n getBgFillStyleList()\n ]\n };\n }\n};\nexport default formatScheme;\n","import colorScheme from './colorScheme';\nimport fontScheme from './fontScheme';\nimport formatScheme from './formatScheme';\nvar themeElements = {\n getTemplate: function () {\n return {\n name: \"a:themeElements\",\n children: [\n colorScheme.getTemplate(),\n fontScheme.getTemplate(),\n formatScheme.getTemplate()\n ]\n };\n }\n};\nexport default themeElements;\n","import themeElements from './office/themeElements';\nvar officeTheme = {\n getTemplate: function () {\n return {\n name: \"a:theme\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n a: \"http://schemas.openxmlformats.org/drawingml/2006/main\"\n },\n }],\n rawMap: {\n name: \"Office Theme\"\n }\n },\n children: [\n themeElements.getTemplate(),\n {\n name: 'a:objectDefaults'\n },\n {\n name: 'a:extraClrSchemeLst'\n }\n ]\n };\n }\n};\nexport default officeTheme;\n","import { _ } from '@ag-grid-community/core';\nvar buildSharedString = function (textNode) { return ({\n name: 'si',\n children: [{\n name: 't',\n textNode: _.utf8_encode(_.escape(textNode.toString()))\n }]\n}); };\nvar sharedStrings = {\n getTemplate: function (strings) {\n return {\n name: \"sst\",\n properties: {\n rawMap: {\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n count: strings.length,\n uniqueCount: strings.length\n }\n },\n children: strings.map(buildSharedString)\n };\n }\n};\nexport default sharedStrings;\n","var numberFormatFactory = {\n getTemplate: function (numberFormat) {\n var formatCode = numberFormat.formatCode, numFmtId = numberFormat.numFmtId;\n return {\n name: \"numFmt\",\n properties: {\n rawMap: {\n formatCode: formatCode,\n numFmtId: numFmtId\n }\n }\n };\n }\n};\nexport default numberFormatFactory;\nexport var numberFormatMap = {\n '0': 1,\n '0.00': 2,\n '#,##0': 3,\n '#,##0.00': 4,\n '0%': 9,\n '0.00%': 10,\n '0.00E+00': 11,\n '# ?/?': 12,\n '# ??/??': 13,\n 'mm-dd-yy': 14,\n 'd-mmm-yy': 15,\n 'd-mmm': 16,\n 'mmm-yy': 17,\n 'h:mm AM/PM': 18,\n 'h:mm:ss AM/PM': 19,\n 'h:mm': 20,\n 'h:mm:ss': 21,\n 'm/d/yy h:mm': 22,\n '#,##0 ;(#,##0)': 37,\n '#,##0 ;[Red](#,##0)': 38,\n '#,##0.00;(#,##0.00)': 39,\n '#,##0.00;[Red](#,##0.00)': 40,\n 'mm:ss': 45,\n '[h]:mm:ss': 46,\n 'mmss.0': 47,\n '##0.0E+0': 48,\n '@': 49\n};\n","import numberFormatFactory from './numberFormat';\nvar numberFormatsFactory = {\n getTemplate: function (numberFormats) {\n return {\n name: \"numFmts\",\n properties: {\n rawMap: {\n count: numberFormats.length\n }\n },\n children: numberFormats.map(numberFormatFactory.getTemplate)\n };\n }\n};\nexport default numberFormatsFactory;\n","var fontFactory = {\n getTemplate: function (font) {\n var _a = font.size, size = _a === void 0 ? 14 : _a, colorTheme = font.colorTheme, _b = font.color, color = _b === void 0 ? '00000000' : _b, _c = font.name, name = _c === void 0 ? 'Calibri' : _c, family = font.family, scheme = font.scheme, italic = font.italic, bold = font.bold, strike = font.strike, outline = font.outline, shadow = font.shadow, underline = font.underline;\n var children = [\n { name: 'sz', properties: { rawMap: { val: size } } },\n { name: 'color', properties: { rawMap: { theme: colorTheme, rgb: color } } },\n { name: 'name', properties: { rawMap: { val: name } } }\n ];\n if (family) {\n children.push({ name: 'family', properties: { rawMap: { val: family } } });\n }\n if (scheme) {\n children.push({ name: 'scheme', properties: { rawMap: { val: scheme } } });\n }\n if (italic) {\n children.push({ name: 'i' });\n }\n if (bold) {\n children.push({ name: 'b' });\n }\n if (strike) {\n children.push({ name: 'strike' });\n }\n if (outline) {\n children.push({ name: 'outline' });\n }\n if (shadow) {\n children.push({ name: 'shadow' });\n }\n if (underline) {\n var lUnder = underline.toLocaleLowerCase();\n children.push({ name: 'u', properties: { rawMap: { val: lUnder === 'double' ? 'double' : 'single' } } });\n }\n return {\n name: \"font\",\n children: children\n };\n }\n};\nexport default fontFactory;\nexport var getFamilyId = function (name) {\n var families = ['Automatic', 'Roman', 'Swiss', 'Modern', 'Script', 'Decorative'];\n var pos = families.indexOf(name || 'Automatic');\n return Math.max(pos, 0);\n};\n","import fontFactory from './font';\nvar fontsFactory = {\n getTemplate: function (fonts) {\n return {\n name: \"fonts\",\n properties: {\n rawMap: {\n count: fonts.length\n }\n },\n children: fonts.map(fontFactory.getTemplate)\n };\n }\n};\nexport default fontsFactory;\n","var fillFactory = {\n getTemplate: function (fill) {\n var patternType = fill.patternType, fgTheme = fill.fgTheme, fgTint = fill.fgTint, fgRgb = fill.fgRgb, bgRgb = fill.bgRgb, bgIndexed = fill.bgIndexed;\n var pf = {\n name: 'patternFill',\n properties: {\n rawMap: {\n patternType: patternType\n }\n }\n };\n if (fgTheme || fgTint || fgRgb) {\n pf.children = [{\n name: 'fgColor',\n properties: {\n rawMap: {\n theme: fgTheme,\n tint: fgTint,\n rgb: fgRgb\n }\n }\n }];\n }\n if (bgIndexed) {\n if (!pf.children) {\n pf.children = [];\n }\n pf.children.push({\n name: 'bgColor',\n properties: {\n rawMap: {\n indexed: bgIndexed,\n rgb: bgRgb\n }\n }\n });\n }\n return {\n name: \"fill\",\n children: [pf]\n };\n }\n};\nexport default fillFactory;\n","import fillFactory from './fill';\nvar fillsFactory = {\n getTemplate: function (fills) {\n return {\n name: \"fills\",\n properties: {\n rawMap: {\n count: fills.length\n }\n },\n children: fills.map(fillFactory.getTemplate)\n };\n }\n};\nexport default fillsFactory;\n","import { convertLegacyColor } from './stylesheet';\nvar getBorderColor = function (color) {\n return {\n name: 'color',\n properties: {\n rawMap: {\n rgb: convertLegacyColor(color || '#000000')\n }\n }\n };\n};\nvar borderFactory = {\n getTemplate: function (border) {\n var left = border.left, right = border.right, top = border.top, bottom = border.bottom, diagonal = border.diagonal;\n var leftChildren = left ? [getBorderColor(left.color)] : undefined;\n var rightChildren = right ? [getBorderColor(right.color)] : undefined;\n var topChildren = top ? [getBorderColor(top.color)] : undefined;\n var bottomChildren = bottom ? [getBorderColor(bottom.color)] : undefined;\n var diagonalChildren = diagonal ? [getBorderColor(diagonal.color)] : undefined;\n return {\n name: 'border',\n children: [{\n name: 'left',\n properties: { rawMap: { style: left && left.style } },\n children: leftChildren\n }, {\n name: 'right',\n properties: { rawMap: { style: right && right.style } },\n children: rightChildren\n }, {\n name: 'top',\n properties: { rawMap: { style: top && top.style } },\n children: topChildren\n }, {\n name: 'bottom',\n properties: { rawMap: { style: bottom && bottom.style } },\n children: bottomChildren\n }, {\n name: 'diagonal',\n properties: { rawMap: { style: diagonal && diagonal.style } },\n children: diagonalChildren\n }]\n };\n }\n};\nexport default borderFactory;\nvar getWeightName = function (value) {\n if (value === 1) {\n return 'thin';\n }\n if (value === 2) {\n return 'medium';\n }\n if (value === 3) {\n return 'thick';\n }\n return 'hair';\n};\nvar mappedNames = {\n None: 'None',\n Dot: 'Dotted',\n Dash: 'Dashed',\n Double: 'Double',\n DashDot: 'DashDot',\n DashDotDot: 'DashDotDot',\n SlantDashDot: 'SlantDashDot'\n};\nvar mediumBorders = ['Dashed', 'DashDot', 'DashDotDot'];\nexport var convertLegacyBorder = function (type, weight) {\n // Legacy Types are: None, Continuous, Dash, Dot, DashDot, DashDotDot, SlantDashDot, and Double\n // Weight represents: 0—Hairline, 1—Thin , 2—Medium, 3—Thick\n // New types: none, thin, medium, dashed, dotted, thick, double, hair, mediumDashed, dashDot, mediumDashDot,\n // dashDotDot, mediumDashDotDot, slantDashDot\n var namedWeight = getWeightName(weight);\n var mappedName = mappedNames[type];\n if (!type) {\n return 'thin';\n }\n if (type === 'Continuous') {\n return namedWeight;\n }\n if (namedWeight === 'medium' && mediumBorders.indexOf(mappedName) > 0) {\n return \"medium\" + mappedName;\n }\n return mappedName.charAt(0).toLowerCase() + mappedName.substr(1);\n};\n","import borderFactory from './border';\nvar bordersFactory = {\n getTemplate: function (borders) {\n return {\n name: \"borders\",\n properties: {\n rawMap: {\n count: borders.length\n }\n },\n children: borders.map(borderFactory.getTemplate)\n };\n }\n};\nexport default bordersFactory;\n","var convertLegacyHorizontalAlignment = function (alignment) {\n var map = {\n Automatic: 'general',\n Left: 'left',\n Center: 'center',\n Right: 'right',\n Fill: 'fill',\n Justify: 'justify',\n CenterAcrossSelection: 'centerContinuous',\n Distributed: 'distributed',\n JustifyDistributed: 'justify'\n };\n return map[alignment] || 'general';\n};\nvar convertLegacyVerticalAlignment = function (alignment) {\n var map = {\n Automatic: undefined,\n Top: 'top',\n Bottom: 'bottom',\n Center: 'center',\n Justify: 'justify',\n Distributed: 'distributed',\n JustifyDistributed: 'justify'\n };\n return map[alignment] || undefined;\n};\nvar getReadingOrderId = function (readingOrder) {\n var order = ['Context', 'LeftToRight', 'RightToLeft'];\n var pos = order.indexOf(readingOrder);\n return Math.max(pos, 0);\n};\nvar alignmentFactory = {\n getTemplate: function (alignment) {\n var horizontal = alignment.horizontal, indent = alignment.indent, readingOrder = alignment.readingOrder, rotate = alignment.rotate, shrinkToFit = alignment.shrinkToFit, vertical = alignment.vertical, wrapText = alignment.wrapText;\n return {\n name: 'alignment',\n properties: {\n rawMap: {\n horizontal: horizontal && convertLegacyHorizontalAlignment(horizontal),\n indent: indent,\n readingOrder: readingOrder && getReadingOrderId(readingOrder),\n textRotation: rotate,\n shrinkToFit: shrinkToFit,\n vertical: vertical && convertLegacyVerticalAlignment(vertical),\n wrapText: wrapText\n }\n }\n };\n }\n};\nexport default alignmentFactory;\n","var protectionFactory = {\n getTemplate: function (protection) {\n var locked = protection.protected === false ? 0 : 1;\n var hidden = protection.hideFormula === true ? 1 : 0;\n return {\n name: 'protection',\n properties: {\n rawMap: {\n hidden: hidden,\n locked: locked\n }\n }\n };\n }\n};\nexport default protectionFactory;\n","import alignmentFactory from './alignment';\nimport protectionFactory from './protection';\nvar xfFactory = {\n getTemplate: function (xf) {\n var alignment = xf.alignment, borderId = xf.borderId, fillId = xf.fillId, fontId = xf.fontId, numFmtId = xf.numFmtId, protection = xf.protection, xfId = xf.xfId;\n var children = [];\n if (alignment) {\n children.push(alignmentFactory.getTemplate(alignment));\n }\n if (protection) {\n children.push(protectionFactory.getTemplate(protection));\n }\n return {\n name: \"xf\",\n properties: {\n rawMap: {\n applyAlignment: alignment ? 1 : undefined,\n applyProtection: protection ? 1 : undefined,\n applyBorder: borderId ? 1 : undefined,\n borderId: borderId,\n fillId: fillId,\n applyFont: fontId ? 1 : undefined,\n fontId: fontId,\n applyNumberFormat: numFmtId ? 1 : undefined,\n numFmtId: numFmtId,\n xfId: xfId\n }\n },\n children: children.length ? children : undefined\n };\n }\n};\nexport default xfFactory;\n","import xfFactory from './xf';\nvar cellStylesXfsFactory = {\n getTemplate: function (xf) {\n return {\n name: \"cellStyleXfs\",\n properties: {\n rawMap: {\n count: xf.length\n }\n },\n children: xf.map(xfFactory.getTemplate)\n };\n }\n};\nexport default cellStylesXfsFactory;\n","import xfFactory from './xf';\nvar cellXfsFactory = {\n getTemplate: function (xf) {\n return {\n name: \"cellXfs\",\n properties: {\n rawMap: {\n count: xf.length\n }\n },\n children: xf.map(xfFactory.getTemplate)\n };\n }\n};\nexport default cellXfsFactory;\n","var borderFactory = {\n getTemplate: function (cellStyle) {\n var builtinId = cellStyle.builtinId, name = cellStyle.name, xfId = cellStyle.xfId;\n return {\n name: \"cellStyle\",\n properties: {\n rawMap: {\n builtinId: builtinId,\n name: name,\n xfId: xfId\n }\n }\n };\n }\n};\nexport default borderFactory;\n","import cellStyleFactory from './cellStyle';\nvar cellStylesFactory = {\n getTemplate: function (cellStyles) {\n return {\n name: \"cellStyles\",\n properties: {\n rawMap: {\n count: cellStyles.length\n }\n },\n children: cellStyles.map(cellStyleFactory.getTemplate)\n };\n }\n};\nexport default cellStylesFactory;\n","var sheetFactory = {\n getTemplate: function (name, idx) {\n var sheetId = (idx + 1).toString();\n return {\n name: \"sheet\",\n properties: {\n rawMap: {\n \"name\": name,\n \"sheetId\": sheetId,\n \"r:id\": \"rId\" + sheetId\n }\n }\n };\n }\n};\nexport default sheetFactory;\n","import sheetFactory from './sheet';\nvar sheetsFactory = {\n getTemplate: function (names) {\n return {\n name: \"sheets\",\n children: names.map(sheetFactory.getTemplate)\n };\n }\n};\nexport default sheetsFactory;\n","import sheetsFactory from './sheets';\nvar workbookFactory = {\n getTemplate: function (names) {\n return {\n name: \"workbook\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n r: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\n },\n }],\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"\n }\n },\n children: [sheetsFactory.getTemplate(names)]\n };\n }\n};\nexport default workbookFactory;\n","// https://docs.microsoft.com/en-us/office/troubleshoot/excel/determine-column-widths\nvar getExcelCellWidth = function (width) { return Math.ceil((width - 12) / 7 + 1); };\nvar columnFactory = {\n getTemplate: function (config) {\n var min = config.min, max = config.max, s = config.s, width = config.width, hidden = config.hidden, bestFit = config.bestFit;\n var excelWidth = 1;\n var customWidth = '0';\n if (width > 1) {\n excelWidth = getExcelCellWidth(width);\n customWidth = '1';\n }\n return {\n name: 'col',\n properties: {\n rawMap: {\n min: min,\n max: max,\n width: excelWidth,\n style: s,\n hidden: hidden ? '1' : '0',\n bestFit: bestFit ? '1' : '0',\n customWidth: customWidth\n }\n }\n };\n }\n};\nexport default columnFactory;\n","import { _ } from '@ag-grid-community/core';\nimport { getStyleId } from './styles/stylesheet';\nvar convertLegacyType = function (type) {\n var t = type.charAt(0).toLowerCase();\n return t === 's' ? 'inlineStr' : t;\n};\nvar cellFactory = {\n getTemplate: function (config) {\n var ref = config.ref, data = config.data, styleId = config.styleId;\n var type = data.type, value = data.value;\n var convertedType = type;\n if (type.charAt(0) === type.charAt(0).toUpperCase()) {\n convertedType = convertLegacyType(type);\n }\n var obj = {\n name: 'c',\n properties: {\n rawMap: {\n r: ref,\n t: convertedType === 'empty' ? undefined : convertedType,\n s: styleId ? getStyleId(styleId) : undefined\n }\n }\n };\n var children;\n if (convertedType === 'inlineStr') {\n children = [{\n name: 'is',\n children: [{\n name: 't',\n textNode: _.escape(_.utf8_encode(value))\n }]\n }];\n }\n else {\n children = [{\n name: 'v',\n textNode: value\n }];\n }\n return _.assign({}, obj, { children: children });\n }\n};\nexport default cellFactory;\n","var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { getExcelColumnName } from './worksheet';\nimport cellFactory from './cell';\nvar addEmptyCells = function (cells, rowIdx) {\n var mergeMap = [];\n var posCounter = 0;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.mergeAcross) {\n mergeMap.push({\n pos: i,\n excelPos: posCounter\n });\n posCounter += cells[i].mergeAcross;\n }\n posCounter++;\n }\n if (mergeMap.length) {\n for (var i = mergeMap.length - 1; i >= 0; i--) {\n var mergedCells = [];\n var cell = cells[mergeMap[i].pos];\n for (var j = 1; j <= cell.mergeAcross; j++) {\n mergedCells.push({\n ref: \"\" + getExcelColumnName(mergeMap[i].excelPos + 1 + j) + (rowIdx + 1),\n styleId: cell.styleId,\n data: { type: 'empty', value: null }\n });\n }\n if (mergedCells.length) {\n cells.splice.apply(cells, __spreadArrays([mergeMap[i].pos + 1, 0], mergedCells));\n }\n }\n }\n};\nvar rowFactory = {\n getTemplate: function (config, idx) {\n var index = config.index, collapsed = config.collapsed, hidden = config.hidden, height = config.height, s = config.s, _a = config.cells, cells = _a === void 0 ? [] : _a;\n addEmptyCells(cells, idx);\n var children = cells.map(cellFactory.getTemplate);\n return {\n name: \"row\",\n properties: {\n rawMap: {\n r: index,\n collapsed: collapsed,\n hidden: hidden ? '1' : '0',\n ht: height,\n customHeight: height != null ? '1' : '0',\n s: s,\n customFormat: s != null ? '1' : '0'\n }\n },\n children: children\n };\n }\n};\nexport default rowFactory;\n","var mergeCell = {\n getTemplate: function (ref) {\n return {\n name: 'mergeCell',\n properties: {\n rawMap: {\n ref: ref\n }\n }\n };\n }\n};\nexport default mergeCell;\n","import columnFactory from './column';\nimport rowFactory from './row';\nimport mergeCell from './mergeCell';\nvar updateColMinMax = function (col, min, range, prevCol) {\n if (!col.min) {\n col.min = min;\n col.max = min + range;\n return;\n }\n var currentMin = min;\n if (prevCol) {\n currentMin = Math.max(currentMin, prevCol.min);\n }\n col.min = Math.max(col.min, currentMin);\n col.max = Math.max(col.max, currentMin + range);\n};\nvar getMergedCells = function (rows, cols) {\n var mergedCells = [];\n rows.forEach(function (currentRow, rowIdx) {\n var cells = currentRow.cells;\n var merges = 0;\n currentRow.index = rowIdx + 1;\n var lastCol;\n cells.forEach(function (currentCell, cellIdx) {\n var min = cellIdx + merges + 1;\n var start = getExcelColumnName(min);\n var outputRow = rowIdx + 1;\n if (currentCell.mergeAcross) {\n merges += currentCell.mergeAcross;\n var end = getExcelColumnName(cellIdx + merges + 1);\n mergedCells.push(\"\" + start + outputRow + \":\" + end + outputRow);\n }\n if (!cols[min - 1]) {\n cols[min - 1] = {};\n }\n updateColMinMax(cols[min - 1], min, merges, lastCol);\n lastCol = cols[min - 1];\n currentCell.ref = \"\" + start + outputRow;\n });\n });\n return mergedCells;\n};\nexport var getExcelColumnName = function (colIdx) {\n var startCode = 65;\n var tableWidth = 26;\n var fromCharCode = String.fromCharCode;\n var pos = Math.floor(colIdx / tableWidth);\n var tableIdx = colIdx % tableWidth;\n if (!pos || colIdx === tableWidth) {\n return fromCharCode(startCode + colIdx - 1);\n }\n if (!tableIdx) {\n return getExcelColumnName(pos - 1) + 'Z';\n }\n if (pos < tableWidth) {\n return fromCharCode(startCode + pos - 1) + fromCharCode(startCode + tableIdx - 1);\n }\n return getExcelColumnName(pos) + fromCharCode(startCode + tableIdx - 1);\n};\nvar worksheetFactory = {\n getTemplate: function (config) {\n var table = config.table;\n var rows = table.rows, columns = table.columns;\n var mergedCells = (columns && columns.length) ? getMergedCells(rows, columns) : [];\n var children = [];\n if (columns.length) {\n children.push({\n name: 'cols',\n children: columns.map(columnFactory.getTemplate)\n });\n }\n if (rows.length) {\n children.push({\n name: 'sheetData',\n children: rows.map(rowFactory.getTemplate)\n });\n }\n if (mergedCells.length) {\n children.push({\n name: 'mergeCells',\n properties: {\n rawMap: {\n count: mergedCells.length\n }\n },\n children: mergedCells.map(mergeCell.getTemplate)\n });\n }\n return {\n name: \"worksheet\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n r: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\n }\n }],\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"\n }\n },\n children: children\n };\n }\n};\nexport default worksheetFactory;\n","var relationshipFactory = {\n getTemplate: function (config) {\n var Id = config.Id, Type = config.Type, Target = config.Target;\n return {\n name: \"Relationship\",\n properties: {\n rawMap: {\n Id: Id,\n Type: Type,\n Target: Target\n }\n }\n };\n }\n};\nexport default relationshipFactory;\n","import relationshipFactory from './relationship';\nvar relationshipsFactory = {\n getTemplate: function (c) {\n var children = c.map(relationshipFactory.getTemplate);\n return {\n name: \"Relationships\",\n properties: {\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/package/2006/relationships\"\n }\n },\n children: children\n };\n }\n};\nexport default relationshipsFactory;\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from '@ag-grid-community/core';\nimport coreFactory from './files/ooxml/core';\nimport contentTypesFactory from './files/ooxml/contentTypes';\nimport officeThemeFactory from './files/ooxml/themes/office';\nimport sharedStringsFactory from './files/ooxml/sharedStrings';\nimport stylesheetFactory, { registerStyles } from './files/ooxml/styles/stylesheet';\nimport workbookFactory from './files/ooxml/workbook';\nimport worksheetFactory from './files/ooxml/worksheet';\nimport relationshipsFactory from './files/ooxml/relationships';\n/**\n * See https://www.ecma-international.org/news/TC45_current_work/OpenXML%20White%20Paper.pdf\n */\nvar ExcelXlsxFactory = /** @class */ (function () {\n function ExcelXlsxFactory() {\n this.sharedStrings = [];\n }\n ExcelXlsxFactory.prototype.createSharedStrings = function () {\n return this.createXmlPart(sharedStringsFactory.getTemplate(this.sharedStrings));\n };\n ExcelXlsxFactory.prototype.createXmlPart = function (body) {\n var header = this.xmlFactory.createHeader({\n encoding: 'UTF-8',\n standalone: 'yes'\n });\n var xmlBody = this.xmlFactory.createXml(body);\n return \"\" + header + xmlBody;\n };\n ExcelXlsxFactory.prototype.createExcel = function (styles, worksheets, sharedStrings) {\n if (sharedStrings === void 0) { sharedStrings = []; }\n this.sharedStrings = sharedStrings;\n this.sheetNames = worksheets.map(function (worksheet) { return worksheet.name; });\n registerStyles(styles);\n return this.createWorksheet(worksheets);\n };\n ExcelXlsxFactory.prototype.createCore = function () {\n return this.createXmlPart(coreFactory.getTemplate());\n };\n ExcelXlsxFactory.prototype.createContentTypes = function () {\n return this.createXmlPart(contentTypesFactory.getTemplate());\n };\n ExcelXlsxFactory.prototype.createRels = function () {\n var rs = relationshipsFactory.getTemplate([{\n Id: 'rId1',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',\n Target: 'xl/workbook.xml'\n }, {\n Id: 'rId2',\n Type: 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',\n Target: 'docProps/core.xml'\n }]);\n return this.createXmlPart(rs);\n };\n ExcelXlsxFactory.prototype.createStylesheet = function () {\n return this.createXmlPart(stylesheetFactory.getTemplate());\n };\n ExcelXlsxFactory.prototype.createTheme = function () {\n return this.createXmlPart(officeThemeFactory.getTemplate());\n };\n ExcelXlsxFactory.prototype.createWorkbook = function () {\n return this.createXmlPart(workbookFactory.getTemplate(this.sheetNames));\n };\n ExcelXlsxFactory.prototype.createWorkbookRels = function () {\n var rs = relationshipsFactory.getTemplate([{\n Id: 'rId1',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet',\n Target: 'worksheets/sheet1.xml'\n }, {\n Id: 'rId2',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',\n Target: 'theme/theme1.xml'\n }, {\n Id: 'rId3',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',\n Target: 'styles.xml'\n }, {\n Id: 'rId4',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings',\n Target: 'sharedStrings.xml'\n }]);\n return this.createXmlPart(rs);\n };\n ExcelXlsxFactory.prototype.createWorksheet = function (worksheets) {\n return this.createXmlPart(worksheetFactory.getTemplate(worksheets[0]));\n };\n __decorate([\n Autowired('xmlFactory')\n ], ExcelXlsxFactory.prototype, \"xmlFactory\", void 0);\n ExcelXlsxFactory = __decorate([\n Bean('excelXlsxFactory')\n ], ExcelXlsxFactory);\n return ExcelXlsxFactory;\n}());\nexport { ExcelXlsxFactory };\n","var workbook = {\n getTemplate: function () {\n return {\n name: \"Workbook\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n o: \"urn:schemas-microsoft-com:office:office\",\n x: \"urn:schemas-microsoft-com:office:excel\",\n ss: \"urn:schemas-microsoft-com:office:spreadsheet\",\n html: \"http://www.w3.org/TR/REC-html40\"\n },\n }],\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:spreadsheet\"\n }\n }\n };\n }\n};\nexport default workbook;\n","var excelWorkbook = {\n getTemplate: function () {\n return {\n name: \"ExcelWorkbook\",\n properties: {\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:excel\"\n }\n },\n children: [{\n name: \"WindowHeight\",\n textNode: \"8130\"\n }, {\n name: \"WindowWidth\",\n textNode: \"15135\"\n }, {\n name: \"WindowHeight\",\n textNode: \"8130\"\n }, {\n name: \"WindowTopX\",\n textNode: \"120\"\n }, {\n name: \"WindowTopY\",\n textNode: \"45\"\n }, {\n name: \"ProtectStructure\",\n textNode: \"False\"\n }, {\n name: \"ProtectWindow\",\n textNode: \"False\"\n }]\n };\n }\n};\nexport default excelWorkbook;\n","var column = {\n getTemplate: function (c) {\n var width = c.width;\n return {\n name: \"Column\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Width: width\n }\n }]\n }\n };\n }\n};\nexport default column;\n","var cell = {\n getTemplate: function (c) {\n var mergeAcross = c.mergeAcross, styleId = c.styleId, data = c.data;\n var properties = {};\n if (mergeAcross) {\n properties.MergeAcross = mergeAcross;\n }\n if (styleId) {\n properties.StyleID = styleId;\n }\n return {\n name: \"Cell\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: properties\n }]\n },\n children: [{\n name: \"Data\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Type: data.type\n }\n }]\n },\n textNode: data.value\n }]\n };\n }\n};\nexport default cell;\n","import cell from './cell';\nvar row = {\n getTemplate: function (r) {\n var cells = r.cells;\n return {\n name: \"Row\",\n children: cells.map(function (it) { return cell.getTemplate(it); })\n };\n }\n};\nexport default row;\n","import column from './column';\nimport row from './row';\nvar worksheet = {\n getTemplate: function (ws) {\n var table = ws.table, name = ws.name;\n var columns = table.columns, rows = table.rows;\n var c = columns.map(function (it) { return column.getTemplate(it); });\n var r = rows.map(function (it) { return row.getTemplate(it); });\n return {\n name: \"Worksheet\",\n children: [{\n name: \"Table\",\n children: c.concat(r)\n }],\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Name: name\n }\n }]\n }\n };\n }\n};\nexport default worksheet;\n","var documentProperties = {\n getTemplate: function () {\n return {\n name: \"DocumentProperties\",\n properties: {\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:office\"\n }\n },\n children: [{\n name: \"Version\",\n textNode: \"12.00\"\n }]\n };\n }\n};\nexport default documentProperties;\n","var alignment = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.alignment, vertical = _a.vertical, horizontal = _a.horizontal, indent = _a.indent, readingOrder = _a.readingOrder, rotate = _a.rotate, shrinkToFit = _a.shrinkToFit, verticalText = _a.verticalText, wrapText = _a.wrapText;\n return {\n name: 'Alignment',\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Vertical: vertical,\n Horizontal: horizontal,\n Indent: indent,\n ReadingOrder: readingOrder,\n Rotate: rotate,\n ShrinkToFit: shrinkToFit,\n VerticalText: verticalText,\n WrapText: wrapText\n }\n }]\n }\n };\n }\n};\nexport default alignment;\n","var borders = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.borders, borderBottom = _a.borderBottom, borderLeft = _a.borderLeft, borderRight = _a.borderRight, borderTop = _a.borderTop;\n return {\n name: 'Borders',\n children: [borderBottom, borderLeft, borderRight, borderTop].map(function (it, index) {\n var current = index == 0 ? \"Bottom\" : index == 1 ? \"Left\" : index == 2 ? \"Right\" : \"Top\";\n return {\n name: 'Border',\n properties: {\n prefixedAttributes: [{\n prefix: 'ss:',\n map: {\n Position: current,\n LineStyle: it.lineStyle,\n Weight: it.weight,\n Color: it.color\n }\n }]\n }\n };\n })\n };\n }\n};\nexport default borders;\n","var font = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.font, bold = _a.bold, fontName = _a.fontName, italic = _a.italic, color = _a.color, outline = _a.outline, shadow = _a.shadow, size = _a.size, strikeThrough = _a.strikeThrough, underline = _a.underline, verticalAlign = _a.verticalAlign, charSet = _a.charSet, family = _a.family;\n return {\n name: \"Font\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Bold: bold,\n FontName: fontName,\n Italic: italic,\n Color: color,\n Outline: outline,\n Shadow: shadow,\n Size: size,\n StrikeThrough: strikeThrough,\n Underline: underline,\n VerticalAlign: verticalAlign\n }\n }, {\n prefix: \"x:\",\n map: {\n CharSet: charSet,\n Family: family\n }\n }]\n }\n };\n }\n};\nexport default font;\n","var interior = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.interior, color = _a.color, pattern = _a.pattern, patternColor = _a.patternColor;\n return {\n name: \"Interior\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Color: color,\n Pattern: pattern,\n PatternColor: patternColor\n }\n }]\n }\n };\n }\n};\nexport default interior;\n","var protection = {\n getTemplate: function (styleProperties) {\n return {\n name: \"Protection\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Protected: styleProperties.protection.protected,\n HideFormula: styleProperties.protection.hideFormula\n }\n }]\n }\n };\n }\n};\nexport default protection;\n","var numberFormat = {\n getTemplate: function (styleProperties) {\n var format = styleProperties.numberFormat.format;\n return {\n name: \"NumberFormat\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Format: format\n }\n }]\n }\n };\n }\n};\nexport default numberFormat;\n","var style = {\n getTemplate: function (styleProperties) {\n var id = styleProperties.id, name = styleProperties.name;\n return {\n name: 'Style',\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n ID: id,\n Name: name ? name : id\n }\n }]\n }\n };\n }\n};\nexport default style;\n","var __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 { _ } from '@ag-grid-community/core';\nimport { Bean, Autowired } from '@ag-grid-community/core';\nimport workbook from './files/xml/workbook';\nimport excelWorkbook from './files/xml/excelWorkbook';\nimport worksheet from './files/xml/worksheet';\nimport documentProperties from './files/xml/documentProperties';\nimport alignment from './files/xml/styles/alignment';\nimport borders from './files/xml/styles/borders';\nimport font from './files/xml/styles/font';\nimport interior from './files/xml/styles/interior';\nimport protection from './files/xml/styles/protection';\nimport numberFormat from './files/xml/styles/numberFormat';\nimport style from './files/xml/styles/style';\n/**\n * See https://msdn.microsoft.com/en-us/library/aa140066(v=office.10).aspx\n */\nvar ExcelXmlFactory = /** @class */ (function () {\n function ExcelXmlFactory() {\n }\n ExcelXmlFactory.prototype.createExcel = function (styles, worksheets, sharedStrings) {\n var header = this.excelXmlHeader();\n var docProps = documentProperties.getTemplate();\n var eWorkbook = excelWorkbook.getTemplate();\n var wb = this.workbook(docProps, eWorkbook, styles, worksheets);\n return \"\" + header + this.xmlFactory.createXml(wb, function (boolean) { return boolean ? '1' : '0'; });\n };\n ExcelXmlFactory.prototype.workbook = function (docProperties, eWorkbook, styles, worksheets) {\n var children = [\n docProperties,\n eWorkbook,\n this.stylesXmlElement(styles)\n ].concat(worksheets.map(function (it) { return worksheet.getTemplate(it); }));\n return _.assign({}, workbook.getTemplate(), { children: children });\n };\n ExcelXmlFactory.prototype.excelXmlHeader = function () {\n return \"\\n \\n \";\n };\n ExcelXmlFactory.prototype.stylesXmlElement = function (styles) {\n var _this = this;\n return {\n name: 'Styles',\n children: styles ? styles.map(function (it) { return _this.styleXmlElement(it); }) : []\n };\n };\n ExcelXmlFactory.prototype.styleXmlElement = function (styleProperties) {\n var children = _.compose(this.addProperty('alignment', styleProperties), this.addProperty('borders', styleProperties), this.addProperty('font', styleProperties), this.addProperty('interior', styleProperties), this.addProperty('protection', styleProperties), this.addProperty('numberFormat', styleProperties))([]);\n return _.assign({}, style.getTemplate(styleProperties), { children: children });\n };\n ExcelXmlFactory.prototype.addProperty = function (property, styleProperties) {\n return function (children) {\n if (!styleProperties[property]) {\n return children;\n }\n var options = {\n alignment: alignment,\n borders: borders,\n font: font,\n interior: interior,\n numberFormat: numberFormat,\n protection: protection\n };\n return children.concat(options[property].getTemplate(styleProperties));\n };\n };\n __decorate([\n Autowired('xmlFactory')\n ], ExcelXmlFactory.prototype, \"xmlFactory\", void 0);\n ExcelXmlFactory = __decorate([\n Bean('excelXmlFactory')\n ], ExcelXmlFactory);\n return ExcelXmlFactory;\n}());\nexport { ExcelXmlFactory };\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 __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { Constants, _ } from '@ag-grid-community/core';\nimport { RowType, BaseGridSerializingSession } from \"@ag-grid-community/csv-export\";\nvar ExcelXmlSerializingSession = /** @class */ (function (_super) {\n __extends(ExcelXmlSerializingSession, _super);\n function ExcelXmlSerializingSession(config) {\n var _this = _super.call(this, config) || this;\n _this.mixedStyles = {};\n _this.mixedStyleCounter = 0;\n _this.rows = [];\n _this.config = _.assign({}, config);\n _this.stylesByIds = {};\n _this.config.baseExcelStyles.forEach(function (style) {\n _this.stylesByIds[style.id] = style;\n });\n _this.excelStyles = __spreadArrays(_this.config.baseExcelStyles);\n return _this;\n }\n ExcelXmlSerializingSession.prototype.addCustomContent = function (customContent) {\n var _this = this;\n customContent.forEach(function (cells) { return _this.rows.push({ cells: cells }); });\n };\n ExcelXmlSerializingSession.prototype.prepare = function (columnsToExport) {\n var _this = this;\n _super.prototype.prepare.call(this, columnsToExport);\n this.cols = columnsToExport.map(function (col, i) { return _this.convertColumnToExcel(col, i); });\n };\n ExcelXmlSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n var _this = this;\n var currentCells = [];\n this.rows.push({\n cells: currentCells,\n height: this.config.headerRowHeight\n });\n return {\n onColumn: function (header, index, span) {\n var styleIds = _this.config.styleLinker(RowType.HEADER_GROUPING, 1, index, \"grouping-\" + header, undefined, undefined);\n currentCells.push(_this.createMergedCell((styleIds && styleIds.length > 0) ? styleIds[0] : undefined, \"String\", header, span));\n }\n };\n };\n ExcelXmlSerializingSession.prototype.onNewHeaderRow = function () {\n return this.onNewRow(this.onNewHeaderColumn, this.config.headerRowHeight);\n };\n ExcelXmlSerializingSession.prototype.onNewBodyRow = function () {\n return this.onNewRow(this.onNewBodyColumn, this.config.rowHeight);\n };\n ExcelXmlSerializingSession.prototype.onNewRow = function (onNewColumnAccumulator, height) {\n var currentCells = [];\n this.rows.push({\n cells: currentCells,\n height: height\n });\n return {\n onColumn: onNewColumnAccumulator.bind(this, this.rows.length, currentCells)()\n };\n };\n ExcelXmlSerializingSession.prototype.onNewHeaderColumn = function (rowIndex, currentCells) {\n var _this = this;\n return function (column, index) {\n var nameForCol = _this.extractHeaderValue(column);\n var styleIds = _this.config.styleLinker(RowType.HEADER, rowIndex, index, nameForCol, column, undefined);\n currentCells.push(_this.createCell((styleIds && styleIds.length > 0) ? styleIds[0] : undefined, 'String', nameForCol));\n };\n };\n ExcelXmlSerializingSession.prototype.parse = function () {\n // adding custom content might have made some rows wider than the grid, so add new columns\n var longestRow = this.rows.reduce(function (a, b) { return Math.max(a, b.cells.length); }, 0);\n while (this.cols.length < longestRow) {\n this.cols.push(this.convertColumnToExcel(null, this.cols.length + 1));\n }\n var data = [{\n name: this.config.sheetName,\n table: {\n columns: this.cols,\n rows: this.rows\n }\n }];\n return this.createExcel(data);\n };\n ExcelXmlSerializingSession.prototype.createExcel = function (data) {\n return this.config.excelFactory.createExcel(this.excelStyles, data, []);\n };\n ExcelXmlSerializingSession.prototype.onNewBodyColumn = function (rowIndex, currentCells) {\n var _this = this;\n return function (column, index, node) {\n var valueForCell = _this.extractRowCellValue(column, index, Constants.EXPORT_TYPE_EXCEL, node);\n var styleIds = _this.config.styleLinker(RowType.BODY, rowIndex, index, valueForCell, column, node);\n var excelStyleId;\n if (styleIds && styleIds.length == 1) {\n excelStyleId = styleIds[0];\n }\n else if (styleIds && styleIds.length > 1) {\n var key = styleIds.join(\"-\");\n if (!_this.mixedStyles[key]) {\n _this.addNewMixedStyle(styleIds);\n }\n excelStyleId = _this.mixedStyles[key].excelID;\n }\n currentCells.push(_this.createCell(excelStyleId, _this.getDataTypeForValue(valueForCell), valueForCell));\n };\n };\n ExcelXmlSerializingSession.prototype.getDataTypeForValue = function (valueForCell) {\n return _.isNumeric(valueForCell) ? 'Number' : 'String';\n };\n ExcelXmlSerializingSession.prototype.addNewMixedStyle = function (styleIds) {\n var _this = this;\n this.mixedStyleCounter += 1;\n var excelId = 'mixedStyle' + this.mixedStyleCounter;\n var resultantStyle = {};\n styleIds.forEach(function (styleId) {\n _this.excelStyles.forEach(function (excelStyle) {\n if (excelStyle.id === styleId) {\n _.mergeDeep(resultantStyle, _.deepCloneObject(excelStyle));\n }\n });\n });\n resultantStyle.id = excelId;\n resultantStyle.name = excelId;\n var key = styleIds.join(\"-\");\n this.mixedStyles[key] = {\n excelID: excelId,\n key: key,\n result: resultantStyle\n };\n this.excelStyles.push(resultantStyle);\n this.stylesByIds[excelId] = resultantStyle;\n };\n ExcelXmlSerializingSession.prototype.styleExists = function (styleId) {\n if (styleId == null) {\n return false;\n }\n return this.stylesByIds[styleId];\n };\n ExcelXmlSerializingSession.prototype.createCell = function (styleId, type, value) {\n var _this = this;\n var actualStyle = styleId && this.stylesByIds[styleId];\n var styleExists = actualStyle !== undefined;\n function getType() {\n if (styleExists &&\n actualStyle.dataType) {\n switch (actualStyle.dataType) {\n case 'string':\n return 'String';\n case 'number':\n return 'Number';\n case 'dateTime':\n return 'DateTime';\n case 'error':\n return 'Error';\n case 'boolean':\n return 'Boolean';\n default:\n console.warn(\"ag-grid: Unrecognized data type for excel export [\" + actualStyle.id + \".dataType=\" + actualStyle.dataType + \"]\");\n }\n }\n return type;\n }\n var typeTransformed = getType();\n var massageText = function (val) {\n if (_this.config.suppressTextAsCDATA) {\n return _.escape(val);\n }\n var cdataStart = '';\n var cdataEndRegex = new RegExp(cdataEnd, \"g\");\n return cdataStart\n // CDATA sections are closed by the character sequence ']]>' and there is no\n // way of escaping this, so if the text contains the offending sequence, emit\n // multiple CDATA sections and split the characters between them.\n + String(val).replace(cdataEndRegex, ']]' + cdataEnd + cdataStart + '>')\n + cdataEnd;\n };\n var convertBoolean = function (val) {\n if (!val || val === '0' || val === 'false') {\n return '0';\n }\n return '1';\n };\n return {\n styleId: styleExists ? styleId : undefined,\n data: {\n type: typeTransformed,\n value: typeTransformed === 'String' ? massageText(value) :\n typeTransformed === 'Number' ? Number(value).valueOf() + '' :\n typeTransformed === 'Boolean' ? convertBoolean(value) :\n value\n }\n };\n };\n ExcelXmlSerializingSession.prototype.createMergedCell = function (styleId, type, value, numOfCells) {\n return {\n styleId: this.styleExists(styleId) ? styleId : undefined,\n data: {\n type: type,\n value: value\n },\n mergeAcross: numOfCells\n };\n };\n ExcelXmlSerializingSession.prototype.convertColumnToExcel = function (column, index) {\n var columnWidth = this.config.columnWidth;\n if (columnWidth) {\n if (typeof columnWidth === 'number') {\n return { width: columnWidth };\n }\n else {\n return { width: columnWidth({ column: column, index: index }) };\n }\n }\n if (column) {\n var smallestUsefulWidth = 75;\n return { width: Math.max(column.getActualWidth(), smallestUsefulWidth) };\n }\n return {};\n };\n return ExcelXmlSerializingSession;\n}(BaseGridSerializingSession));\nexport { ExcelXmlSerializingSession };\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})();\nimport { _ } from '@ag-grid-community/core';\nimport { ExcelXmlSerializingSession } from './excelXmlSerializingSession';\nimport { RowType } from \"@ag-grid-community/csv-export\";\nvar ExcelXlsxSerializingSession = /** @class */ (function (_super) {\n __extends(ExcelXlsxSerializingSession, _super);\n function ExcelXlsxSerializingSession() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stringList = [];\n _this.stringMap = {};\n return _this;\n }\n ExcelXlsxSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n var _this = this;\n var currentCells = [];\n this.rows.push({\n cells: currentCells,\n height: this.config.headerRowHeight\n });\n return {\n onColumn: function (header, index, span) {\n var styleIds = _this.config.styleLinker(RowType.HEADER_GROUPING, 1, index, \"grouping-\" + header, undefined, undefined);\n currentCells.push(_this.createMergedCell((styleIds && styleIds.length > 0) ? styleIds[0] : undefined, 's', header, span));\n }\n };\n };\n ExcelXlsxSerializingSession.prototype.onNewHeaderColumn = function (rowIndex, currentCells) {\n var _this = this;\n return function (column, index, node) {\n var nameForCol = _this.extractHeaderValue(column);\n var styleIds = _this.config.styleLinker(RowType.HEADER, rowIndex, index, nameForCol, column, undefined);\n currentCells.push(_this.createCell((styleIds && styleIds.length > 0) ? styleIds[0] : undefined, 's', nameForCol));\n };\n };\n ExcelXlsxSerializingSession.prototype.createExcel = function (data) {\n return this.config.excelFactory.createExcel(this.excelStyles, data, this.stringList);\n };\n ExcelXlsxSerializingSession.prototype.getDataTypeForValue = function (valueForCell) {\n return _.isNumeric(valueForCell) ? 'n' : 's';\n };\n ExcelXlsxSerializingSession.prototype.getStringPosition = function (val) {\n var pos = this.stringMap[val];\n if (pos === undefined) {\n pos = this.stringMap[val] = this.stringList.length;\n this.stringList.push(val);\n }\n return pos;\n };\n ExcelXlsxSerializingSession.prototype.createCell = function (styleId, type, value) {\n var actualStyle = styleId && this.stylesByIds[styleId];\n var styleExists = actualStyle !== undefined;\n function getType() {\n if (styleExists &&\n actualStyle.dataType) {\n switch (actualStyle.dataType) {\n case 'string':\n return 's';\n case 'number':\n return 'n';\n case 'dateTime':\n return 'd';\n case 'error':\n return 'e';\n case 'boolean':\n return 'b';\n default:\n console.warn(\"ag-grid: Unrecognized data type for excel export [\" + actualStyle.id + \".dataType=\" + actualStyle.dataType + \"]\");\n }\n }\n return type;\n }\n var typeTransformed = getType();\n return {\n styleId: styleExists ? styleId : undefined,\n data: {\n type: typeTransformed,\n value: typeTransformed === 's'\n ? this.getStringPosition(value == null ? '' : value).toString()\n : typeTransformed === 'n'\n ? Number(value).toString()\n : value\n }\n };\n };\n ExcelXlsxSerializingSession.prototype.createMergedCell = function (styleId, type, value, numOfCells) {\n return {\n styleId: this.styleExists(styleId) ? styleId : undefined,\n data: {\n type: type,\n value: type === 's' ? this.getStringPosition(value == null ? '' : value).toString() : value\n },\n mergeAcross: numOfCells\n };\n };\n return ExcelXlsxSerializingSession;\n}(ExcelXmlSerializingSession));\nexport { ExcelXlsxSerializingSession };\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};\nimport { Autowired, Bean, PostConstruct, _ } from '@ag-grid-community/core';\nimport { ExcelXmlSerializingSession } from './excelXmlSerializingSession';\nimport { ExcelXlsxSerializingSession } from './excelXlsxSerializingSession';\nimport { BaseCreator, RowType } from \"@ag-grid-community/csv-export\";\nvar ExcelCreator = /** @class */ (function (_super) {\n __extends(ExcelCreator, _super);\n function ExcelCreator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ExcelCreator.prototype.postConstruct = function () {\n this.setBeans({\n downloader: this.downloader,\n gridSerializer: this.gridSerializer,\n gridOptionsWrapper: this.gridOptionsWrapper\n });\n };\n ExcelCreator.prototype.exportDataAsExcel = function (params) {\n this.setExportMode(params ? params.exportMode : undefined);\n return this.export(params);\n };\n ExcelCreator.prototype.getDataAsExcelXml = function (params) {\n if (params && params.exportMode) {\n delete params.exportMode;\n }\n this.setExportMode('xml');\n return this.getData(params || {});\n };\n ExcelCreator.prototype.getMimeType = function () {\n return this.getExportMode() === 'xml' ? 'application/vnd.ms-excel' : 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n };\n ExcelCreator.prototype.getDefaultFileName = function () {\n return \"export.\" + this.getExportMode();\n };\n ExcelCreator.prototype.getDefaultFileExtension = function () {\n return this.getExportMode();\n };\n ExcelCreator.prototype.createSerializingSession = function (params) {\n var _a = this, columnController = _a.columnController, valueService = _a.valueService, gridOptionsWrapper = _a.gridOptionsWrapper;\n var isXlsx = this.getExportMode() === 'xlsx';\n var excelFactory = isXlsx ? this.xlsxFactory : this.excelXmlFactory;\n var sheetName = 'ag-grid';\n if (_.exists(params.sheetName)) {\n sheetName = _.utf8_encode(params.sheetName.toString().substr(0, 31));\n }\n var config = __assign(__assign({}, params), { columnController: columnController,\n valueService: valueService,\n gridOptionsWrapper: gridOptionsWrapper, headerRowHeight: params.headerRowHeight || params.rowHeight, sheetName: sheetName,\n excelFactory: excelFactory, baseExcelStyles: this.gridOptions.excelStyles || [], styleLinker: this.styleLinker.bind(this) });\n return new (isXlsx ? ExcelXlsxSerializingSession : ExcelXmlSerializingSession)((config));\n };\n ExcelCreator.prototype.styleLinker = function (rowType, rowIndex, colIndex, value, column, node) {\n if ((rowType === RowType.HEADER) || (rowType === RowType.HEADER_GROUPING)) {\n return [\"header\"];\n }\n var styles = this.gridOptions.excelStyles;\n if (!styles || !styles.length) {\n return null;\n }\n var styleIds = styles.map(function (it) {\n return it.id;\n });\n var applicableStyles = [];\n this.stylingService.processAllCellClasses(column.getColDef(), {\n value: value,\n data: node.data,\n node: node,\n colDef: column.getColDef(),\n rowIndex: rowIndex,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n $scope: null,\n context: this.gridOptionsWrapper.getContext()\n }, function (className) {\n if (styleIds.indexOf(className) > -1) {\n applicableStyles.push(className);\n }\n });\n return applicableStyles.sort(function (left, right) {\n return (styleIds.indexOf(left) < styleIds.indexOf(right)) ? -1 : 1;\n });\n };\n ExcelCreator.prototype.isExportSuppressed = function () {\n return this.gridOptionsWrapper.isSuppressExcelExport();\n };\n ExcelCreator.prototype.setExportMode = function (exportMode) {\n this.exportMode = exportMode;\n };\n ExcelCreator.prototype.getExportMode = function () {\n return this.exportMode || 'xlsx';\n };\n ExcelCreator.prototype.packageFile = function (data) {\n if (this.getExportMode() === 'xml') {\n return _super.prototype.packageFile.call(this, data);\n }\n var _a = this, zipContainer = _a.zipContainer, xlsxFactory = _a.xlsxFactory;\n zipContainer.addFolders([\n 'xl/worksheets/',\n 'xl/',\n 'xl/theme/',\n 'xl/_rels/',\n 'docProps/',\n '_rels/'\n ]);\n zipContainer.addFile('xl/worksheets/sheet1.xml', data);\n zipContainer.addFile('xl/workbook.xml', xlsxFactory.createWorkbook());\n zipContainer.addFile('xl/styles.xml', xlsxFactory.createStylesheet());\n zipContainer.addFile('xl/sharedStrings.xml', xlsxFactory.createSharedStrings());\n zipContainer.addFile('xl/theme/theme1.xml', xlsxFactory.createTheme());\n zipContainer.addFile('xl/_rels/workbook.xml.rels', xlsxFactory.createWorkbookRels());\n zipContainer.addFile('docProps/core.xml', xlsxFactory.createCore());\n zipContainer.addFile('[Content_Types].xml', xlsxFactory.createContentTypes());\n zipContainer.addFile('_rels/.rels', xlsxFactory.createRels());\n return zipContainer.getContent('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n };\n __decorate([\n Autowired('excelXmlFactory')\n ], ExcelCreator.prototype, \"excelXmlFactory\", void 0);\n __decorate([\n Autowired('excelXlsxFactory')\n ], ExcelCreator.prototype, \"xlsxFactory\", void 0);\n __decorate([\n Autowired('columnController')\n ], ExcelCreator.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('valueService')\n ], ExcelCreator.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('gridOptions')\n ], ExcelCreator.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('stylingService')\n ], ExcelCreator.prototype, \"stylingService\", void 0);\n __decorate([\n Autowired('downloader')\n ], ExcelCreator.prototype, \"downloader\", void 0);\n __decorate([\n Autowired('gridSerializer')\n ], ExcelCreator.prototype, \"gridSerializer\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ExcelCreator.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('zipContainer')\n ], ExcelCreator.prototype, \"zipContainer\", void 0);\n __decorate([\n PostConstruct\n ], ExcelCreator.prototype, \"postConstruct\", null);\n ExcelCreator = __decorate([\n Bean('excelCreator')\n ], ExcelCreator);\n return ExcelCreator;\n}(BaseCreator));\nexport { ExcelCreator };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { ExcelXlsxFactory } from \"./excelExport/excelXlsxFactory\";\nimport { ExcelXmlFactory } from \"./excelExport/excelXmlFactory\";\nimport { ExcelCreator } from \"./excelExport/excelCreator\";\nimport { CsvCreator, Downloader, GridSerializer, XmlFactory, ZipContainer } from \"@ag-grid-community/csv-export\";\nimport { CsvExportModule } from \"@ag-grid-community/csv-export\";\nexport var ExcelExportModule = {\n moduleName: ModuleNames.ExcelExportModule,\n beans: [\n // beans in this module\n ExcelCreator, ExcelXmlFactory, ExcelXlsxFactory,\n // these beans are part of CSV Export module\n GridSerializer, ZipContainer, XmlFactory, Downloader, CsvCreator\n ],\n dependantModules: [\n CsvExportModule,\n EnterpriseCoreModule\n ]\n};\n","export { ExcelExportModule } from \"./excelExportModule\";\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, Events, PostConstruct, PreConstruct, RefSelector } from \"@ag-grid-community/core\";\nexport var EXPAND_STATE;\n(function (EXPAND_STATE) {\n EXPAND_STATE[EXPAND_STATE[\"EXPANDED\"] = 0] = \"EXPANDED\";\n EXPAND_STATE[EXPAND_STATE[\"COLLAPSED\"] = 1] = \"COLLAPSED\";\n EXPAND_STATE[EXPAND_STATE[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n})(EXPAND_STATE || (EXPAND_STATE = {}));\nvar FiltersToolPanelHeaderPanel = /** @class */ (function (_super) {\n __extends(FiltersToolPanelHeaderPanel, _super);\n function FiltersToolPanelHeaderPanel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FiltersToolPanelHeaderPanel.prototype.preConstruct = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.setTemplate(\"
\\n
\\n
\\n \\n
\\n
\");\n };\n FiltersToolPanelHeaderPanel.prototype.postConstruct = function () {\n this.createExpandIcons();\n this.setExpandState(EXPAND_STATE.EXPANDED);\n this.addDestroyableEventListener(this.eExpand, 'click', this.onExpandClicked.bind(this));\n this.addDestroyableEventListener(this.eSearchTextField, 'input', this.onSearchTextChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideOptions.bind(this));\n };\n FiltersToolPanelHeaderPanel.prototype.init = function (params) {\n this.params = params;\n if (this.columnController.isReady()) {\n this.showOrHideOptions();\n }\n };\n FiltersToolPanelHeaderPanel.prototype.createExpandIcons = function () {\n this.eExpand.appendChild(this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsWrapper));\n this.eExpand.appendChild(this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsWrapper));\n this.eExpand.appendChild(this.eExpandIndeterminate = _.createIconNoSpan('columnSelectIndeterminate', this.gridOptionsWrapper));\n };\n // we only show expand / collapse if we are showing filters\n FiltersToolPanelHeaderPanel.prototype.showOrHideOptions = function () {\n var showFilterSearch = !this.params.suppressFilterSearch;\n var showExpand = !this.params.suppressExpandAll;\n var isFilterGroupPresent = function (col) { return col.getOriginalParent() && col.isFilterAllowed(); };\n var filterGroupsPresent = this.columnController.getAllGridColumns().some(isFilterGroupPresent);\n _.setDisplayed(this.eFilterWrapper, showFilterSearch);\n _.setDisplayed(this.eExpand, showExpand && filterGroupsPresent);\n };\n FiltersToolPanelHeaderPanel.prototype.onSearchTextChanged = function () {\n var _this = this;\n if (!this.onSearchTextChangedDebounced) {\n this.onSearchTextChangedDebounced = _.debounce(function () {\n _this.dispatchEvent({ type: 'searchChanged', searchText: _this.eSearchTextField.value });\n }, 300);\n }\n this.onSearchTextChangedDebounced();\n };\n FiltersToolPanelHeaderPanel.prototype.onExpandClicked = function () {\n var event = this.currentExpandState === EXPAND_STATE.EXPANDED ? { type: 'collapseAll' } : { type: 'expandAll' };\n this.dispatchEvent(event);\n };\n FiltersToolPanelHeaderPanel.prototype.setExpandState = function (state) {\n this.currentExpandState = state;\n _.setDisplayed(this.eExpandChecked, this.currentExpandState === EXPAND_STATE.EXPANDED);\n _.setDisplayed(this.eExpandUnchecked, this.currentExpandState === EXPAND_STATE.COLLAPSED);\n _.setDisplayed(this.eExpandIndeterminate, this.currentExpandState === EXPAND_STATE.INDETERMINATE);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], FiltersToolPanelHeaderPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], FiltersToolPanelHeaderPanel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], FiltersToolPanelHeaderPanel.prototype, \"eventService\", void 0);\n __decorate([\n RefSelector('eExpand')\n ], FiltersToolPanelHeaderPanel.prototype, \"eExpand\", void 0);\n __decorate([\n RefSelector('eFilterWrapper')\n ], FiltersToolPanelHeaderPanel.prototype, \"eFilterWrapper\", void 0);\n __decorate([\n RefSelector('eFilterTextField')\n ], FiltersToolPanelHeaderPanel.prototype, \"eSearchTextField\", void 0);\n __decorate([\n PreConstruct\n ], FiltersToolPanelHeaderPanel.prototype, \"preConstruct\", null);\n __decorate([\n PostConstruct\n ], FiltersToolPanelHeaderPanel.prototype, \"postConstruct\", null);\n return FiltersToolPanelHeaderPanel;\n}(Component));\nexport { FiltersToolPanelHeaderPanel };\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, Column, Component, Events, RefSelector, PostConstruct, _ } from \"@ag-grid-community/core\";\nvar ToolPanelFilterComp = /** @class */ (function (_super) {\n __extends(ToolPanelFilterComp, _super);\n function ToolPanelFilterComp(hideHeader) {\n if (hideHeader === void 0) { hideHeader = false; }\n var _this = _super.call(this, ToolPanelFilterComp.TEMPLATE) || this;\n _this.expanded = false;\n _this.hideHeader = hideHeader;\n return _this;\n }\n ToolPanelFilterComp.prototype.postConstruct = function () {\n this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsWrapper);\n this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsWrapper);\n this.eExpand.appendChild(this.eExpandChecked);\n this.eExpand.appendChild(this.eExpandUnchecked);\n };\n ToolPanelFilterComp.prototype.setColumn = function (column) {\n this.column = column;\n this.eFilterName.innerText = this.columnController.getDisplayNameForColumn(this.column, 'header', false);\n this.addDestroyableEventListener(this.eFilterToolPanelHeader, 'click', this.toggleExpanded.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_FILTER_OPENED, this.onFilterOpened.bind(this));\n this.addInIcon('filter', this.eFilterIcon, this.column);\n _.addOrRemoveCssClass(this.eFilterIcon, 'ag-hidden', !this.isFilterActive());\n _.addCssClass(this.eExpandChecked, 'ag-hidden');\n if (this.hideHeader) {\n _.addOrRemoveCssClass(this.eFilterToolPanelHeader, 'ag-hidden', true);\n }\n this.addDestroyableEventListener(this.column, Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n };\n ToolPanelFilterComp.prototype.getColumn = function () {\n return this.column;\n };\n ToolPanelFilterComp.prototype.getColumnFilterName = function () {\n return this.columnController.getDisplayNameForColumn(this.column, 'header', false);\n };\n ToolPanelFilterComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = _.createIconNoSpan(iconName, this.gridOptionsWrapper, column);\n eParent.appendChild(eIcon);\n };\n ToolPanelFilterComp.prototype.isFilterActive = function () {\n return this.filterManager.isFilterActive(this.column);\n };\n ToolPanelFilterComp.prototype.onFilterChanged = function () {\n _.addOrRemoveCssClass(this.eFilterIcon, 'ag-hidden', !this.isFilterActive());\n this.dispatchEvent({ type: Column.EVENT_FILTER_CHANGED });\n };\n ToolPanelFilterComp.prototype.toggleExpanded = function () {\n this.expanded ? this.collapse() : this.expand();\n };\n ToolPanelFilterComp.prototype.expand = function () {\n var _this = this;\n if (this.expanded)\n return;\n this.expanded = true;\n var container = _.loadTemplate(\"
\");\n var filterPromise = this.filterManager.getOrCreateFilterWrapper(this.column, 'TOOLBAR').filterPromise;\n if (filterPromise) {\n filterPromise.then(function (filter) {\n _this.underlyingFilter = filter;\n container.appendChild(filter.getGui());\n _this.agFilterToolPanelBody.appendChild(container);\n if (filter.afterGuiAttached) {\n filter.afterGuiAttached({});\n }\n });\n }\n _.setDisplayed(this.eExpandChecked, true);\n _.setDisplayed(this.eExpandUnchecked, false);\n };\n ToolPanelFilterComp.prototype.collapse = function () {\n if (!this.expanded)\n return;\n this.expanded = false;\n this.agFilterToolPanelBody.removeChild(this.agFilterToolPanelBody.children[0]);\n _.setDisplayed(this.eExpandChecked, false);\n _.setDisplayed(this.eExpandUnchecked, true);\n };\n ToolPanelFilterComp.prototype.refreshFilter = function () {\n var filter = this.underlyingFilter;\n if (!filter)\n return;\n // set filters should be updated when the filter has been changed elsewhere, i.e. via api. Note that we can't\n // use 'afterGuiAttached' to refresh the virtual list as it also focuses on the mini filter which changes the\n // scroll position in the filter list panel\n var isSetFilter = filter.refreshVirtualList;\n if (isSetFilter) {\n filter.refreshVirtualList();\n }\n };\n ToolPanelFilterComp.prototype.onFilterOpened = function (event) {\n if (event.source !== 'COLUMN_MENU') {\n return;\n }\n if (event.column !== this.column) {\n return;\n }\n if (!this.expanded) {\n return;\n }\n this.collapse();\n };\n ToolPanelFilterComp.TEMPLATE = \"
\\n
\\n
\\n \\n \\n
\\n
\";\n __decorate([\n RefSelector('eFilterToolPanelHeader')\n ], ToolPanelFilterComp.prototype, \"eFilterToolPanelHeader\", void 0);\n __decorate([\n RefSelector('eFilterName')\n ], ToolPanelFilterComp.prototype, \"eFilterName\", void 0);\n __decorate([\n RefSelector('agFilterToolPanelBody')\n ], ToolPanelFilterComp.prototype, \"agFilterToolPanelBody\", void 0);\n __decorate([\n RefSelector('eFilterIcon')\n ], ToolPanelFilterComp.prototype, \"eFilterIcon\", void 0);\n __decorate([\n RefSelector('eExpand')\n ], ToolPanelFilterComp.prototype, \"eExpand\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ToolPanelFilterComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('filterManager')\n ], ToolPanelFilterComp.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('eventService')\n ], ToolPanelFilterComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ToolPanelFilterComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], ToolPanelFilterComp.prototype, \"columnController\", void 0);\n __decorate([\n PostConstruct\n ], ToolPanelFilterComp.prototype, \"postConstruct\", null);\n return ToolPanelFilterComp;\n}(Component));\nexport { ToolPanelFilterComp };\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, Column, Component, Events, OriginalColumnGroup, PostConstruct, PreConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { ToolPanelFilterComp } from \"./toolPanelFilterComp\";\nvar ToolPanelFilterGroupComp = /** @class */ (function (_super) {\n __extends(ToolPanelFilterGroupComp, _super);\n function ToolPanelFilterGroupComp(columnGroup, childFilterComps, expandedCallback, depth) {\n var _this = _super.call(this) || this;\n _this.columnGroup = columnGroup;\n _this.childFilterComps = childFilterComps;\n _this.depth = depth;\n _this.expandedCallback = expandedCallback;\n return _this;\n }\n ToolPanelFilterGroupComp.prototype.preConstruct = function () {\n this.setTemplate(ToolPanelFilterGroupComp.TEMPLATE);\n };\n ToolPanelFilterGroupComp.prototype.init = function () {\n var _this = this;\n this.setGroupTitle();\n this.filterGroupComp.setAlignItems('stretch');\n _.addCssClass(this.filterGroupComp.getGui(), \"ag-level-\" + this.depth);\n this.childFilterComps.forEach(function (filterComp) { return _this.filterGroupComp.addItem(filterComp); });\n if (!this.isColumnGroup()) {\n this.addTopLevelColumnGroupExpandListener();\n }\n else {\n this.addDestroyableEventListener(this.filterGroupComp, 'expanded', function () {\n _this.expandedCallback();\n });\n this.addDestroyableEventListener(this.filterGroupComp, 'collapsed', function () {\n _this.expandedCallback();\n });\n }\n this.addFilterChangedListeners();\n };\n ToolPanelFilterGroupComp.prototype.refreshFilters = function () {\n this.childFilterComps.forEach(function (filterComp) {\n if (filterComp instanceof ToolPanelFilterGroupComp) {\n filterComp.refreshFilters();\n }\n else {\n filterComp.refreshFilter();\n }\n });\n };\n ToolPanelFilterGroupComp.prototype.isColumnGroup = function () {\n return this.columnGroup instanceof OriginalColumnGroup;\n };\n ToolPanelFilterGroupComp.prototype.isExpanded = function () {\n return this.filterGroupComp.isExpanded();\n };\n ToolPanelFilterGroupComp.prototype.getChildren = function () {\n return this.childFilterComps;\n };\n ToolPanelFilterGroupComp.prototype.getFilterGroupName = function () {\n return this.filterGroupName ? this.filterGroupName : '';\n };\n ToolPanelFilterGroupComp.prototype.getFilterGroupId = function () {\n return this.columnGroup.getId();\n };\n ToolPanelFilterGroupComp.prototype.hideGroupItem = function (hide, index) {\n this.filterGroupComp.hideItem(hide, index);\n };\n ToolPanelFilterGroupComp.prototype.hideGroup = function (hide) {\n _.addOrRemoveCssClass(this.getGui(), 'ag-hidden', hide);\n };\n ToolPanelFilterGroupComp.prototype.addTopLevelColumnGroupExpandListener = function () {\n var _this = this;\n this.addDestroyableEventListener(this.filterGroupComp, 'expanded', function () {\n _this.childFilterComps.forEach(function (filterComp) {\n // also need to refresh the virtual list on set filters as the filter may have been updated elsewhere\n if (filterComp instanceof ToolPanelFilterComp) {\n filterComp.expand();\n filterComp.refreshFilter();\n }\n else {\n filterComp.refreshFilters();\n }\n });\n });\n };\n ToolPanelFilterGroupComp.prototype.addFilterChangedListeners = function () {\n var _this = this;\n if (this.columnGroup instanceof OriginalColumnGroup) {\n var group_1 = this.columnGroup;\n var anyChildFiltersActive_1 = function () { return group_1.getLeafColumns().some(function (col) { return col.isFilterActive(); }); };\n group_1.getLeafColumns().forEach(function (column) {\n _this.addDestroyableEventListener(column, Column.EVENT_FILTER_CHANGED, function () {\n _.addOrRemoveCssClass(_this.filterGroupComp.getGui(), 'ag-has-filter', anyChildFiltersActive_1());\n });\n });\n }\n else {\n var column_1 = this.columnGroup;\n this.addDestroyableEventListener(this.eventService, Events.EVENT_FILTER_OPENED, this.onFilterOpened.bind(this));\n this.addDestroyableEventListener(column_1, Column.EVENT_FILTER_CHANGED, function () {\n _.addOrRemoveCssClass(_this.filterGroupComp.getGui(), 'ag-has-filter', column_1.isFilterActive());\n });\n }\n };\n ToolPanelFilterGroupComp.prototype.onFilterOpened = function (event) {\n // when a filter is opened elsewhere, i.e. column menu we close the filter comp so we also need to collapse\n // the column group. This approach means we don't need to try and sync filter models on the same column.\n if (event.source !== 'COLUMN_MENU') {\n return;\n }\n if (event.column !== this.columnGroup) {\n return;\n }\n if (!this.isExpanded()) {\n return;\n }\n this.collapse();\n };\n ToolPanelFilterGroupComp.prototype.expand = function () {\n this.filterGroupComp.toggleGroupExpand(true);\n };\n ToolPanelFilterGroupComp.prototype.collapse = function () {\n this.filterGroupComp.toggleGroupExpand(false);\n };\n ToolPanelFilterGroupComp.prototype.setGroupTitle = function () {\n this.filterGroupName = (this.columnGroup instanceof OriginalColumnGroup) ?\n this.getColumnGroupName(this.columnGroup) : this.getColumnName(this.columnGroup);\n this.filterGroupComp.setTitle(this.filterGroupName);\n };\n ToolPanelFilterGroupComp.prototype.getColumnGroupName = function (columnGroup) {\n return this.columnController.getDisplayNameForOriginalColumnGroup(null, columnGroup, 'toolPanel');\n };\n ToolPanelFilterGroupComp.prototype.getColumnName = function (column) {\n return this.columnController.getDisplayNameForColumn(column, 'header', false);\n };\n ToolPanelFilterGroupComp.prototype.destroyFilters = function () {\n this.childFilterComps.forEach(function (filterComp) { return filterComp.destroy(); });\n this.childFilterComps.length = 0;\n _.clearElement(this.getGui());\n };\n ToolPanelFilterGroupComp.prototype.destroy = function () {\n this.destroyFilters();\n _super.prototype.destroy.call(this);\n };\n ToolPanelFilterGroupComp.TEMPLATE = \"
\\n \\n
\";\n __decorate([\n RefSelector('filterGroupComp')\n ], ToolPanelFilterGroupComp.prototype, \"filterGroupComp\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ToolPanelFilterGroupComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('filterManager')\n ], ToolPanelFilterGroupComp.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('eventService')\n ], ToolPanelFilterGroupComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ToolPanelFilterGroupComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], ToolPanelFilterGroupComp.prototype, \"columnController\", void 0);\n __decorate([\n PreConstruct\n ], ToolPanelFilterGroupComp.prototype, \"preConstruct\", null);\n __decorate([\n PostConstruct\n ], ToolPanelFilterGroupComp.prototype, \"init\", null);\n return ToolPanelFilterGroupComp;\n}(Component));\nexport { ToolPanelFilterGroupComp };\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, Events, OriginalColumnGroup } from \"@ag-grid-community/core\";\nimport { ToolPanelFilterComp } from \"./toolPanelFilterComp\";\nimport { ToolPanelFilterGroupComp } from \"./toolPanelFilterGroupComp\";\nimport { EXPAND_STATE } from \"./filtersToolPanelHeaderPanel\";\nvar FiltersToolPanelListPanel = /** @class */ (function (_super) {\n __extends(FiltersToolPanelListPanel, _super);\n function FiltersToolPanelListPanel() {\n var _this = _super.call(this, FiltersToolPanelListPanel.TEMPLATE) || this;\n _this.initialised = false;\n _this.filterGroupComps = [];\n return _this;\n }\n FiltersToolPanelListPanel.prototype.init = function (params) {\n var _this = this;\n this.initialised = true;\n var defaultParams = {\n suppressExpandAll: false,\n suppressFilterSearch: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi\n };\n _.mergeDeep(defaultParams, params);\n this.params = defaultParams;\n if (!this.params.suppressSyncLayoutWithGrid) {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_MOVED, function () { return _this.onColumnsChanged(); });\n }\n this.addDestroyableEventListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, function () { return _this.onColumnsChanged(); });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED, function (event) {\n // when re-entering the filters tool panel we need to refresh the virtual lists in the set filters in case\n // filters have been changed elsewhere, i.e. via an api call.\n if (event.source === 'filters') {\n _this.refreshFilters();\n }\n });\n if (this.columnController.isReady()) {\n this.onColumnsChanged();\n }\n };\n FiltersToolPanelListPanel.prototype.onColumnsChanged = function () {\n var pivotModeActive = this.columnController.isPivotMode();\n var shouldSyncColumnLayoutWithGrid = !this.params.suppressSyncLayoutWithGrid && !pivotModeActive;\n shouldSyncColumnLayoutWithGrid ? this.syncFilterLayout() : this.buildTreeFromProvidedColumnDefs();\n };\n FiltersToolPanelListPanel.prototype.syncFilterLayout = function () {\n this.toolPanelColDefService.syncLayoutWithGrid(this.setFiltersLayout.bind(this));\n };\n FiltersToolPanelListPanel.prototype.buildTreeFromProvidedColumnDefs = function () {\n var _this = this;\n this.destroyFilters();\n var columnTree = this.columnController.getPrimaryColumnTree();\n this.filterGroupComps = this.recursivelyAddComps(columnTree, 0);\n var len = this.filterGroupComps.length;\n if (len) {\n this.filterGroupComps.forEach(function (comp) { return _this.appendChild(comp); });\n this.setFirstAndLastVisible(0, len - 1);\n }\n // perform search if searchFilterText exists\n if (_.exists(this.searchFilterText)) {\n this.searchFilters(this.searchFilterText);\n }\n // notify header of expand\n this.fireExpandedEvent();\n };\n FiltersToolPanelListPanel.prototype.setFiltersLayout = function (colDefs) {\n var _this = this;\n this.destroyFilters();\n var columnTree = this.toolPanelColDefService.createColumnTree(colDefs);\n this.filterGroupComps = this.recursivelyAddComps(columnTree, 0);\n var len = this.filterGroupComps.length;\n if (len) {\n this.filterGroupComps.forEach(function (comp) { return _this.appendChild(comp); });\n this.setFirstAndLastVisible(0, len - 1);\n }\n // perform search if searchFilterText exists\n if (_.exists(this.searchFilterText)) {\n this.searchFilters(this.searchFilterText);\n }\n // notify header of expand\n this.fireExpandedEvent();\n };\n FiltersToolPanelListPanel.prototype.recursivelyAddComps = function (tree, depth) {\n var _this = this;\n return _.flatten(tree.map(function (child) {\n if (child instanceof OriginalColumnGroup) {\n return _.flatten(_this.recursivelyAddFilterGroupComps(child, depth));\n }\n var column = child;\n if (!_this.shouldDisplayFilter(column)) {\n return [];\n }\n ;\n var hideFilterCompHeader = depth === 0;\n var filterComp = new ToolPanelFilterComp(hideFilterCompHeader);\n _this.getContext().wireBean(filterComp);\n filterComp.setColumn(column);\n if (depth > 0) {\n return filterComp;\n }\n var filterGroupComp = new ToolPanelFilterGroupComp(column, [filterComp], _this.onGroupExpanded.bind(_this), depth);\n _this.getContext().wireBean(filterGroupComp);\n filterGroupComp.collapse();\n return filterGroupComp;\n }));\n };\n FiltersToolPanelListPanel.prototype.recursivelyAddFilterGroupComps = function (columnGroup, depth) {\n if (!this.filtersExistInChildren(columnGroup.getChildren()))\n return;\n if (columnGroup.getColGroupDef() && columnGroup.getColGroupDef().suppressFiltersToolPanel) {\n return [];\n }\n var newDepth = columnGroup.isPadding() ? depth : depth + 1;\n var childFilterComps = _.flatten(this.recursivelyAddComps(columnGroup.getChildren(), newDepth));\n if (columnGroup.isPadding())\n return childFilterComps;\n var filterGroupComp = new ToolPanelFilterGroupComp(columnGroup, childFilterComps, this.onGroupExpanded.bind(this), depth);\n this.getContext().wireBean(filterGroupComp);\n return [filterGroupComp];\n };\n FiltersToolPanelListPanel.prototype.filtersExistInChildren = function (tree) {\n var _this = this;\n return tree.some(function (child) {\n if (child instanceof OriginalColumnGroup) {\n return _this.filtersExistInChildren(child.getChildren());\n }\n return _this.shouldDisplayFilter(child);\n });\n };\n FiltersToolPanelListPanel.prototype.shouldDisplayFilter = function (column) {\n var suppressFiltersToolPanel = column.getColDef() && column.getColDef().suppressFiltersToolPanel;\n return column.isFilterAllowed() && !suppressFiltersToolPanel;\n };\n // we don't support refreshing, but must implement because it's on the tool panel interface\n FiltersToolPanelListPanel.prototype.refresh = function () { };\n // lazy initialise the panel\n FiltersToolPanelListPanel.prototype.setVisible = function (visible) {\n _super.prototype.setDisplayed.call(this, visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n };\n FiltersToolPanelListPanel.prototype.expandFilterGroups = function (expand, groupIds) {\n var updatedGroupIds = [];\n var updateGroupExpandState = function (filterGroup) {\n var groupId = filterGroup.getFilterGroupId();\n var shouldExpandOrCollapse = !groupIds || _.includes(groupIds, groupId);\n if (shouldExpandOrCollapse) {\n // don't expand 'column groups', i.e. top level columns wrapped in a group\n if (expand && filterGroup.isColumnGroup()) {\n filterGroup.expand();\n }\n else {\n filterGroup.collapse();\n }\n updatedGroupIds.push(groupId);\n }\n // recursively look for more groups to expand / collapse\n filterGroup.getChildren().forEach(function (child) {\n if (child instanceof ToolPanelFilterGroupComp) {\n updateGroupExpandState(child);\n }\n });\n };\n this.filterGroupComps.forEach(updateGroupExpandState);\n // update header expand / collapse icon\n this.onGroupExpanded();\n if (groupIds) {\n var unrecognisedGroupIds = groupIds.filter(function (groupId) { return updatedGroupIds.indexOf(groupId) < 0; });\n if (unrecognisedGroupIds.length > 0) {\n console.warn('ag-Grid: unable to find groups for these supplied groupIds:', unrecognisedGroupIds);\n }\n }\n };\n FiltersToolPanelListPanel.prototype.expandFilters = function (expand, colIds) {\n var updatedColIds = [];\n var updateGroupExpandState = function (filterComp) {\n if (filterComp instanceof ToolPanelFilterGroupComp) {\n var anyChildrenChanged_1 = false;\n filterComp.getChildren().forEach(function (child) {\n var childUpdated = updateGroupExpandState(child);\n if (childUpdated) {\n if (expand) {\n filterComp.expand();\n anyChildrenChanged_1 = true;\n }\n else if (!filterComp.isColumnGroup()) {\n // we only collapse columns wrapped in groups\n filterComp.collapse();\n }\n }\n });\n return anyChildrenChanged_1;\n }\n var colId = filterComp.getColumn().getColId();\n var updateFilterExpandState = !colIds || _.includes(colIds, colId);\n if (updateFilterExpandState) {\n expand ? filterComp.expand() : filterComp.collapse();\n updatedColIds.push(colId);\n }\n return updateFilterExpandState;\n };\n this.filterGroupComps.forEach(updateGroupExpandState);\n // update header expand / collapse icon\n this.onGroupExpanded();\n if (colIds) {\n var unrecognisedColIds = colIds.filter(function (colId) { return updatedColIds.indexOf(colId) < 0; });\n if (unrecognisedColIds.length > 0) {\n console.warn('ag-Grid: unable to find columns for these supplied colIds:', unrecognisedColIds);\n }\n }\n };\n FiltersToolPanelListPanel.prototype.onGroupExpanded = function () {\n this.fireExpandedEvent();\n };\n FiltersToolPanelListPanel.prototype.fireExpandedEvent = function () {\n var expandedCount = 0;\n var notExpandedCount = 0;\n var updateExpandCounts = function (filterGroup) {\n if (!filterGroup.isColumnGroup())\n return;\n filterGroup.isExpanded() ? expandedCount++ : notExpandedCount++;\n filterGroup.getChildren().forEach(function (child) {\n if (child instanceof ToolPanelFilterGroupComp) {\n updateExpandCounts(child);\n }\n });\n };\n this.filterGroupComps.forEach(updateExpandCounts);\n var state;\n if (expandedCount > 0 && notExpandedCount > 0) {\n state = EXPAND_STATE.INDETERMINATE;\n }\n else if (notExpandedCount > 0) {\n state = EXPAND_STATE.COLLAPSED;\n }\n else {\n state = EXPAND_STATE.EXPANDED;\n }\n this.dispatchEvent({ type: 'groupExpanded', state: state });\n };\n FiltersToolPanelListPanel.prototype.performFilterSearch = function (searchText) {\n this.searchFilterText = searchText;\n this.searchFilters(searchText);\n };\n FiltersToolPanelListPanel.prototype.searchFilters = function (searchFilter) {\n var passesFilter = function (groupName) {\n return !_.exists(searchFilter) || groupName.toLowerCase().indexOf(searchFilter) !== -1;\n };\n var recursivelySearch = function (filterItem, parentPasses) {\n if (!(filterItem instanceof ToolPanelFilterGroupComp)) {\n return passesFilter(filterItem.getColumnFilterName());\n }\n var children = filterItem.getChildren();\n var groupNamePasses = passesFilter(filterItem.getFilterGroupName());\n // if group or parent already passed - ensure this group and all children are visible\n var alreadyPassed = parentPasses || groupNamePasses;\n if (alreadyPassed) {\n // ensure group visible\n filterItem.hideGroup(false);\n // ensure all children are visible\n for (var i = 0; i < children.length; i++) {\n recursivelySearch(children[i], alreadyPassed);\n filterItem.hideGroupItem(false, i);\n }\n return true;\n }\n // hide group item filters\n var anyChildPasses = false;\n children.forEach(function (child, index) {\n var childPasses = recursivelySearch(child, parentPasses);\n filterItem.hideGroupItem(!childPasses, index);\n if (childPasses)\n anyChildPasses = true;\n });\n // hide group if no children pass\n filterItem.hideGroup(!anyChildPasses);\n return anyChildPasses;\n };\n var firstVisible;\n var lastVisible;\n this.filterGroupComps.forEach(function (filterGroup, idx) {\n recursivelySearch(filterGroup, false);\n if (firstVisible === undefined) {\n if (!_.containsClass(filterGroup.getGui(), 'ag-hidden')) {\n firstVisible = idx;\n lastVisible = idx;\n }\n }\n else if (!_.containsClass(filterGroup.getGui(), 'ag-hidden') && lastVisible !== idx) {\n lastVisible = idx;\n }\n });\n this.setFirstAndLastVisible(firstVisible, lastVisible);\n };\n FiltersToolPanelListPanel.prototype.setFirstAndLastVisible = function (firstIdx, lastIdx) {\n this.filterGroupComps.forEach(function (filterGroup, idx) {\n _.removeCssClass(filterGroup.getGui(), 'ag-first-group-visible');\n _.removeCssClass(filterGroup.getGui(), 'ag-last-group-visible');\n if (idx === firstIdx) {\n _.addCssClass(filterGroup.getGui(), 'ag-first-group-visible');\n }\n if (idx === lastIdx) {\n _.addCssClass(filterGroup.getGui(), 'ag-last-group-visible');\n }\n });\n };\n FiltersToolPanelListPanel.prototype.refreshFilters = function () {\n this.filterGroupComps.forEach(function (filterGroupComp) { return filterGroupComp.refreshFilters(); });\n };\n FiltersToolPanelListPanel.prototype.destroyFilters = function () {\n this.filterGroupComps.forEach(function (filterComp) { return filterComp.destroy(); });\n this.filterGroupComps.length = 0;\n _.clearElement(this.getGui());\n };\n FiltersToolPanelListPanel.prototype.destroy = function () {\n this.destroyFilters();\n _super.prototype.destroy.call(this);\n };\n FiltersToolPanelListPanel.TEMPLATE = \"
\";\n __decorate([\n Autowired(\"gridApi\")\n ], FiltersToolPanelListPanel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired(\"eventService\")\n ], FiltersToolPanelListPanel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('toolPanelColDefService')\n ], FiltersToolPanelListPanel.prototype, \"toolPanelColDefService\", void 0);\n __decorate([\n Autowired('columnController')\n ], FiltersToolPanelListPanel.prototype, \"columnController\", void 0);\n return FiltersToolPanelListPanel;\n}(Component));\nexport { FiltersToolPanelListPanel };\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, RefSelector } from \"@ag-grid-community/core\";\nvar FiltersToolPanel = /** @class */ (function (_super) {\n __extends(FiltersToolPanel, _super);\n function FiltersToolPanel() {\n var _this = _super.call(this, FiltersToolPanel.TEMPLATE) || this;\n _this.initialised = false;\n return _this;\n }\n FiltersToolPanel.prototype.init = function (params) {\n this.initialised = true;\n var defaultParams = {\n suppressExpandAll: false,\n suppressFilterSearch: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi\n };\n _.mergeDeep(defaultParams, params);\n this.params = defaultParams;\n this.filtersToolPanelHeaderPanel.init(this.params);\n this.filtersToolPanelListPanel.init(this.params);\n var hideExpand = this.params.suppressExpandAll;\n var hideSearch = this.params.suppressFilterSearch;\n if (hideExpand && hideSearch) {\n this.filtersToolPanelHeaderPanel.setDisplayed(false);\n }\n this.addDestroyableEventListener(this.filtersToolPanelHeaderPanel, 'expandAll', this.onExpandAll.bind(this));\n this.addDestroyableEventListener(this.filtersToolPanelHeaderPanel, 'collapseAll', this.onCollapseAll.bind(this));\n this.addDestroyableEventListener(this.filtersToolPanelHeaderPanel, 'searchChanged', this.onSearchChanged.bind(this));\n this.addDestroyableEventListener(this.filtersToolPanelListPanel, 'groupExpanded', this.onGroupExpanded.bind(this));\n };\n // lazy initialise the panel\n FiltersToolPanel.prototype.setVisible = function (visible) {\n _super.prototype.setDisplayed.call(this, visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n };\n FiltersToolPanel.prototype.onExpandAll = function () {\n this.filtersToolPanelListPanel.expandFilterGroups(true);\n };\n FiltersToolPanel.prototype.onCollapseAll = function () {\n this.filtersToolPanelListPanel.expandFilterGroups(false);\n };\n FiltersToolPanel.prototype.onSearchChanged = function (event) {\n this.filtersToolPanelListPanel.performFilterSearch(event.searchText);\n };\n FiltersToolPanel.prototype.setFilterLayout = function (colDefs) {\n this.filtersToolPanelListPanel.setFiltersLayout(colDefs);\n };\n FiltersToolPanel.prototype.onGroupExpanded = function (event) {\n this.filtersToolPanelHeaderPanel.setExpandState(event.state);\n };\n FiltersToolPanel.prototype.expandFilterGroups = function (groupIds) {\n this.filtersToolPanelListPanel.expandFilterGroups(true, groupIds);\n };\n FiltersToolPanel.prototype.collapseFilterGroups = function (groupIds) {\n this.filtersToolPanelListPanel.expandFilterGroups(false, groupIds);\n };\n FiltersToolPanel.prototype.expandFilters = function (colIds) {\n this.filtersToolPanelListPanel.expandFilters(true, colIds);\n };\n FiltersToolPanel.prototype.collapseFilters = function (colIds) {\n this.filtersToolPanelListPanel.expandFilters(false, colIds);\n };\n FiltersToolPanel.prototype.syncLayoutWithGrid = function () {\n this.filtersToolPanelListPanel.syncFilterLayout();\n };\n FiltersToolPanel.prototype.refresh = function () {\n this.init(this.params);\n };\n FiltersToolPanel.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n FiltersToolPanel.TEMPLATE = \"
\\n \\n \\n
\";\n __decorate([\n RefSelector('filtersToolPanelHeaderPanel')\n ], FiltersToolPanel.prototype, \"filtersToolPanelHeaderPanel\", void 0);\n __decorate([\n RefSelector('filtersToolPanelListPanel')\n ], FiltersToolPanel.prototype, \"filtersToolPanelListPanel\", void 0);\n __decorate([\n Autowired(\"gridApi\")\n ], FiltersToolPanel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired(\"eventService\")\n ], FiltersToolPanel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnController')\n ], FiltersToolPanel.prototype, \"columnController\", void 0);\n return FiltersToolPanel;\n}(Component));\nexport { FiltersToolPanel };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { FiltersToolPanelHeaderPanel } from \"./filterToolPanel/filtersToolPanelHeaderPanel\";\nimport { FiltersToolPanelListPanel } from \"./filterToolPanel/filtersToolPanelListPanel\";\nimport { FiltersToolPanel } from \"./filterToolPanel/filtersToolPanel\";\nimport { SideBarModule } from \"@ag-grid-enterprise/side-bar\";\nexport var FiltersToolPanelModule = {\n moduleName: ModuleNames.FiltersToolPanelModule,\n beans: [],\n agStackComponents: [\n { componentName: 'AgFiltersToolPanelHeader', componentClass: FiltersToolPanelHeaderPanel },\n { componentName: 'AgFiltersToolPanelList', componentClass: FiltersToolPanelListPanel }\n ],\n userComponents: [\n { componentName: 'agFiltersToolPanel', componentClass: FiltersToolPanel },\n ],\n dependantModules: [\n SideBarModule,\n EnterpriseCoreModule\n ]\n};\n","export { FiltersToolPanelModule } from \"./filtersToolPanelModule\";\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, PostConstruct, _, RefSelector } from \"@ag-grid-community/core\";\nvar MenuItemComponent = /** @class */ (function (_super) {\n __extends(MenuItemComponent, _super);\n function MenuItemComponent(params) {\n var _this = _super.call(this, MenuItemComponent.TEMPLATE) || this;\n _this.params = params;\n return _this;\n }\n MenuItemComponent.prototype.init = function () {\n var _this = this;\n if (this.params.checked) {\n this.eIcon.appendChild(_.createIconNoSpan('check', this.gridOptionsWrapper));\n }\n else if (this.params.icon) {\n if (_.isNodeOrElement(this.params.icon)) {\n this.eIcon.appendChild(this.params.icon);\n }\n else if (typeof this.params.icon === 'string') {\n this.eIcon.innerHTML = this.params.icon;\n }\n else {\n console.warn('ag-Grid: menu item icon must be DOM node or string');\n }\n }\n else {\n // if i didn't put space here, the alignment was messed up, probably\n // fixable with CSS but i was spending to much time trying to figure\n // it out.\n this.eIcon.innerHTML = ' ';\n }\n if (this.params.tooltip) {\n this.tooltip = this.params.tooltip;\n if (this.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.getGui().setAttribute('title', this.tooltip);\n }\n else {\n this.tooltipManager.registerTooltip(this);\n }\n }\n if (this.params.shortcut) {\n this.eShortcut.innerHTML = this.params.shortcut;\n }\n if (this.params.subMenu) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, we show arrow going left\n this.ePopupPointer.appendChild(_.createIconNoSpan('smallLeft', this.gridOptionsWrapper));\n }\n else {\n // for normal, we show arrow going right\n this.ePopupPointer.appendChild(_.createIconNoSpan('smallRight', this.gridOptionsWrapper));\n }\n }\n else {\n this.ePopupPointer.innerHTML = ' ';\n }\n this.eName.innerHTML = this.params.name;\n if (this.params.disabled) {\n _.addCssClass(this.getGui(), 'ag-menu-option-disabled');\n }\n else {\n this.addGuiEventListener('click', this.onOptionSelected.bind(this));\n }\n if (this.params.cssClasses) {\n this.params.cssClasses.forEach(function (it) { return _.addCssClass(_this.getGui(), it); });\n }\n };\n MenuItemComponent.prototype.getTooltipText = function () {\n return this.tooltip;\n };\n MenuItemComponent.prototype.getComponentHolder = function () {\n return undefined;\n };\n MenuItemComponent.prototype.onOptionSelected = function (mouseEvent) {\n var event = {\n type: MenuItemComponent.EVENT_ITEM_SELECTED,\n action: this.params.action,\n checked: this.params.checked,\n cssClasses: this.params.cssClasses,\n disabled: this.params.disabled,\n icon: this.params.icon,\n name: this.params.name,\n shortcut: this.params.shortcut,\n subMenu: this.params.subMenu,\n tooltip: this.params.tooltip,\n mouseEvent: mouseEvent\n };\n this.dispatchEvent(event);\n if (this.params.action) {\n this.params.action();\n }\n };\n MenuItemComponent.prototype.destroy = function () {\n // console.log('MenuItemComponent->destroy() ' + this.instance);\n _super.prototype.destroy.call(this);\n };\n // private instance = Math.random();\n MenuItemComponent.TEMPLATE = \"
\\n \\n \\n \\n \\n
\";\n MenuItemComponent.EVENT_ITEM_SELECTED = 'itemSelected';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], MenuItemComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('tooltipManager')\n ], MenuItemComponent.prototype, \"tooltipManager\", void 0);\n __decorate([\n RefSelector('eIcon')\n ], MenuItemComponent.prototype, \"eIcon\", void 0);\n __decorate([\n RefSelector('eName')\n ], MenuItemComponent.prototype, \"eName\", void 0);\n __decorate([\n RefSelector('eShortcut')\n ], MenuItemComponent.prototype, \"eShortcut\", void 0);\n __decorate([\n RefSelector('ePopupPointer')\n ], MenuItemComponent.prototype, \"ePopupPointer\", void 0);\n __decorate([\n PostConstruct\n ], MenuItemComponent.prototype, \"init\", null);\n return MenuItemComponent;\n}(Component));\nexport { MenuItemComponent };\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, _ } from \"@ag-grid-community/core\";\nimport { MenuItemComponent } from \"./menuItemComponent\";\nvar MenuList = /** @class */ (function (_super) {\n __extends(MenuList, _super);\n function MenuList() {\n var _this = _super.call(this, MenuList.TEMPLATE) || this;\n _this.timerCount = 0;\n _this.removeChildFuncs = [];\n return _this;\n }\n MenuList.prototype.clearActiveItem = function () {\n this.removeActiveItem();\n this.removeChildPopup();\n };\n MenuList.prototype.addMenuItems = function (menuItems) {\n var _this = this;\n if (!menuItems || _.missing(menuItems)) {\n return;\n }\n menuItems.forEach(function (menuItemOrString) {\n if (menuItemOrString === 'separator') {\n _this.addSeparator();\n }\n else if (typeof menuItemOrString === 'string') {\n console.warn(\"ag-Grid: unrecognised menu item \" + menuItemOrString);\n }\n else {\n var menuItem = menuItemOrString;\n _this.addItem(menuItem);\n }\n });\n };\n MenuList.prototype.addItem = function (menuItemDef) {\n var _this = this;\n var cMenuItem = new MenuItemComponent(menuItemDef);\n this.getContext().wireBean(cMenuItem);\n this.getGui().appendChild(cMenuItem.getGui());\n this.addDestroyFunc(function () { return cMenuItem.destroy(); });\n cMenuItem.addEventListener(MenuItemComponent.EVENT_ITEM_SELECTED, function (event) {\n if (menuItemDef.subMenu && !menuItemDef.action) {\n _this.showChildMenu(menuItemDef, cMenuItem, event.mouseEvent);\n }\n else {\n _this.dispatchEvent(event);\n }\n });\n cMenuItem.addGuiEventListener('mouseenter', this.mouseEnterItem.bind(this, menuItemDef, cMenuItem));\n cMenuItem.addGuiEventListener('mouseleave', this.mouseLeaveItem.bind(this));\n };\n MenuList.prototype.mouseEnterItem = function (menuItemParams, menuItem) {\n if (menuItemParams.disabled) {\n return;\n }\n if (this.activeMenuItemParams !== menuItemParams) {\n this.removeChildPopup();\n }\n this.removeActiveItem();\n this.activeMenuItemParams = menuItemParams;\n this.activeMenuItem = menuItem;\n _.addCssClass(this.activeMenuItem.getGui(), 'ag-menu-option-active');\n if (menuItemParams.subMenu) {\n this.addHoverForChildPopup(menuItemParams, menuItem);\n }\n };\n MenuList.prototype.mouseLeaveItem = function () {\n this.timerCount++;\n this.removeActiveItem();\n };\n MenuList.prototype.removeActiveItem = function () {\n if (this.activeMenuItem) {\n _.removeCssClass(this.activeMenuItem.getGui(), 'ag-menu-option-active');\n this.activeMenuItem = null;\n this.activeMenuItemParams = null;\n }\n };\n MenuList.prototype.addHoverForChildPopup = function (menuItemDef, menuItemComp) {\n var _this = this;\n var timerCountCopy = this.timerCount;\n window.setTimeout(function () {\n var shouldShow = timerCountCopy === _this.timerCount;\n var showingThisMenu = _this.subMenuParentDef === menuItemDef;\n if (shouldShow && !showingThisMenu) {\n _this.showChildMenu(menuItemDef, menuItemComp, null);\n }\n }, 300);\n };\n MenuList.prototype.addSeparator = function () {\n this.getGui().appendChild(_.loadTemplate(MenuList.SEPARATOR_TEMPLATE));\n };\n MenuList.prototype.showChildMenu = function (menuItemDef, menuItemComp, mouseEvent) {\n var _this = this;\n this.removeChildPopup();\n var childMenu = new MenuList();\n this.getContext().wireBean(childMenu);\n childMenu.addMenuItems(menuItemDef.subMenu);\n var ePopup = _.loadTemplate('
');\n ePopup.appendChild(childMenu.getGui());\n var hidePopupFunc = this.popupService.addAsModalPopup(ePopup, true, undefined, mouseEvent);\n this.popupService.positionPopupForMenu({\n eventSource: menuItemComp.getGui(),\n ePopup: ePopup\n });\n this.subMenuParentDef = menuItemDef;\n var selectedListener = function (event) {\n _this.dispatchEvent(event);\n };\n childMenu.addEventListener(MenuItemComponent.EVENT_ITEM_SELECTED, selectedListener);\n this.removeChildFuncs.push(function () {\n childMenu.clearActiveItem();\n childMenu.destroy();\n _this.subMenuParentDef = null;\n childMenu.removeEventListener(MenuItemComponent.EVENT_ITEM_SELECTED, selectedListener);\n hidePopupFunc();\n });\n };\n MenuList.prototype.removeChildPopup = function () {\n this.removeChildFuncs.forEach(function (func) { return func(); });\n this.removeChildFuncs = [];\n };\n MenuList.prototype.destroy = function () {\n this.removeChildPopup();\n _super.prototype.destroy.call(this);\n };\n MenuList.TEMPLATE = '
';\n MenuList.SEPARATOR_TEMPLATE = \"
\\n \\n \\n \\n \\n
\";\n __decorate([\n Autowired('popupService')\n ], MenuList.prototype, \"popupService\", void 0);\n return MenuList;\n}(Component));\nexport { MenuList };\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, Constants, Events, ModuleNames, ModuleRegistry, PostConstruct, Promise, TabbedLayout } from \"@ag-grid-community/core\";\nimport { MenuList } from \"./menuList\";\nimport { MenuItemComponent } from \"./menuItemComponent\";\nvar EnterpriseMenuFactory = /** @class */ (function () {\n function EnterpriseMenuFactory() {\n }\n EnterpriseMenuFactory.prototype.hideActiveMenu = function () {\n if (this.activeMenu) {\n this.activeMenu.destroy();\n }\n };\n EnterpriseMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent, defaultTab) {\n var _this = this;\n this.showMenu(column, function (menu) {\n _this.popupService.positionPopupUnderMouseEvent({\n column: column,\n type: 'columnMenu',\n mouseEvent: mouseEvent,\n ePopup: menu.getGui()\n });\n if (defaultTab) {\n menu.showTab(defaultTab);\n }\n }, defaultTab);\n };\n EnterpriseMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource, defaultTab, restrictToTabs) {\n var _this = this;\n var multiplier = -1;\n var alignSide = 'left';\n if (this.gridOptionsWrapper.isEnableRtl()) {\n multiplier = 1;\n alignSide = 'right';\n }\n this.showMenu(column, function (menu) {\n var minDims = menu.getMinDimensions();\n _this.popupService.positionPopupUnderComponent({\n column: column,\n type: 'columnMenu',\n eventSource: eventSource,\n ePopup: menu.getGui(),\n nudgeX: 9 * multiplier,\n nudgeY: -23,\n minWidth: minDims.width,\n minHeight: minDims.height,\n alignSide: alignSide,\n keepWithinBounds: true\n });\n if (defaultTab) {\n menu.showTab(defaultTab);\n }\n }, defaultTab, restrictToTabs);\n };\n EnterpriseMenuFactory.prototype.showMenu = function (column, positionCallback, defaultTab, restrictToTabs) {\n var _this = this;\n var menu = new EnterpriseMenu(column, this.lastSelectedTab, restrictToTabs);\n this.context.wireBean(menu);\n var eMenuGui = menu.getGui();\n // need to show filter before positioning, as only after filter\n // is visible can we find out what the width of it is\n var hidePopup = this.popupService.addAsModalPopup(eMenuGui, true, function () {\n menu.destroy();\n column.setMenuVisible(false, \"contextMenu\");\n });\n menu.afterGuiAttached({\n hidePopup: hidePopup\n });\n positionCallback(menu);\n if (!defaultTab) {\n menu.showTabBasedOnPreviousSelection();\n }\n menu.addEventListener(EnterpriseMenu.EVENT_TAB_SELECTED, function (event) {\n _this.lastSelectedTab = event.key;\n });\n column.setMenuVisible(true, \"contextMenu\");\n this.activeMenu = menu;\n menu.addEventListener(BeanStub.EVENT_DESTROYED, function () {\n if (_this.activeMenu === menu) {\n _this.activeMenu = null;\n }\n });\n };\n EnterpriseMenuFactory.prototype.isMenuEnabled = function (column) {\n return column.getMenuTabs(EnterpriseMenu.TABS_DEFAULT).length > 0;\n };\n __decorate([\n Autowired('context')\n ], EnterpriseMenuFactory.prototype, \"context\", void 0);\n __decorate([\n Autowired('popupService')\n ], EnterpriseMenuFactory.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], EnterpriseMenuFactory.prototype, \"gridOptionsWrapper\", void 0);\n EnterpriseMenuFactory = __decorate([\n Bean('menuFactory')\n ], EnterpriseMenuFactory);\n return EnterpriseMenuFactory;\n}());\nexport { EnterpriseMenuFactory };\nvar EnterpriseMenu = /** @class */ (function (_super) {\n __extends(EnterpriseMenu, _super);\n function EnterpriseMenu(column, initialSelection, restrictTo) {\n var _this = _super.call(this) || this;\n _this.tabFactories = {};\n _this.includeChecks = {};\n _this.timeOfLastColumnChange = Date.now();\n _this.column = column;\n _this.initialSelection = initialSelection;\n _this.tabFactories[EnterpriseMenu.TAB_GENERAL] = _this.createMainPanel.bind(_this);\n _this.tabFactories[EnterpriseMenu.TAB_FILTER] = _this.createFilterPanel.bind(_this);\n _this.tabFactories[EnterpriseMenu.TAB_COLUMNS] = _this.createColumnsPanel.bind(_this);\n _this.includeChecks[EnterpriseMenu.TAB_GENERAL] = function () { return true; };\n _this.includeChecks[EnterpriseMenu.TAB_FILTER] = function () { return column.isFilterAllowed(); };\n _this.includeChecks[EnterpriseMenu.TAB_COLUMNS] = function () { return true; };\n _this.restrictTo = restrictTo;\n return _this;\n }\n EnterpriseMenu.prototype.getMinDimensions = function () {\n return this.tabbedLayout.getMinDimensions();\n };\n EnterpriseMenu.prototype.init = function () {\n var _this = this;\n var tabs = this.getTabsToCreate()\n .map(function (menuTabName) { return _this.createTab(menuTabName); });\n this.tabbedLayout = new TabbedLayout({\n items: tabs,\n cssClass: 'ag-menu',\n onActiveItemClicked: this.onHidePopup.bind(this),\n onItemClicked: this.onTabItemClicked.bind(this)\n });\n this.eventService.addEventListener(Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n };\n EnterpriseMenu.prototype.getTabsToCreate = function () {\n var _this = this;\n if (this.restrictTo) {\n return this.restrictTo;\n }\n return this.column.getMenuTabs(EnterpriseMenu.TABS_DEFAULT)\n .filter(function (tabName) { return _this.isValidMenuTabItem(tabName); })\n .filter(function (tabName) { return _this.isNotSuppressed(tabName); })\n .filter(function (tabName) { return _this.isModuleLoaded(tabName); });\n };\n EnterpriseMenu.prototype.isModuleLoaded = function (menuTabName) {\n if (menuTabName === EnterpriseMenu.TAB_COLUMNS) {\n return ModuleRegistry.isRegistered(ModuleNames.ColumnToolPanelModule);\n }\n else {\n return true;\n }\n };\n EnterpriseMenu.prototype.isValidMenuTabItem = function (menuTabName) {\n var isValid = true;\n var itemsToConsider = EnterpriseMenu.TABS_DEFAULT;\n if (this.restrictTo != null) {\n isValid = this.restrictTo.indexOf(menuTabName) > -1;\n itemsToConsider = this.restrictTo;\n }\n isValid = isValid && EnterpriseMenu.TABS_DEFAULT.indexOf(menuTabName) > -1;\n if (!isValid) {\n console.warn(\"Trying to render an invalid menu item '\" + menuTabName + \"'. Check that your 'menuTabs' contains one of [\" + itemsToConsider + \"]\");\n }\n return isValid;\n };\n EnterpriseMenu.prototype.isNotSuppressed = function (menuTabName) {\n return this.includeChecks[menuTabName]();\n };\n EnterpriseMenu.prototype.createTab = function (name) {\n return this.tabFactories[name]();\n };\n EnterpriseMenu.prototype.showTabBasedOnPreviousSelection = function () {\n // show the tab the user was on last time they had a menu open\n this.showTab(this.initialSelection);\n };\n EnterpriseMenu.prototype.showTab = function (toShow) {\n if (this.tabItemColumns && toShow === EnterpriseMenu.TAB_COLUMNS) {\n this.tabbedLayout.showItem(this.tabItemColumns);\n }\n else if (this.tabItemFilter && toShow === EnterpriseMenu.TAB_FILTER) {\n this.tabbedLayout.showItem(this.tabItemFilter);\n }\n else if (this.tabItemGeneral && toShow === EnterpriseMenu.TAB_GENERAL) {\n this.tabbedLayout.showItem(this.tabItemGeneral);\n }\n else {\n this.tabbedLayout.showFirstItem();\n }\n };\n EnterpriseMenu.prototype.onTabItemClicked = function (event) {\n var key = null;\n switch (event.item) {\n case this.tabItemColumns:\n key = EnterpriseMenu.TAB_COLUMNS;\n break;\n case this.tabItemFilter:\n key = EnterpriseMenu.TAB_FILTER;\n break;\n case this.tabItemGeneral:\n key = EnterpriseMenu.TAB_GENERAL;\n break;\n }\n if (key) {\n var ev = {\n type: EnterpriseMenu.EVENT_TAB_SELECTED,\n key: key\n };\n this.dispatchEvent(ev);\n }\n };\n EnterpriseMenu.prototype.destroy = function () {\n if (this.columnSelectPanel) {\n this.columnSelectPanel.destroy();\n }\n if (this.mainMenuList) {\n this.mainMenuList.destroy();\n }\n _super.prototype.destroy.call(this);\n };\n EnterpriseMenu.prototype.getMenuItems = function () {\n var defaultMenuOptions = this.getDefaultMenuOptions();\n var result;\n var userFunc = this.gridOptionsWrapper.getMainMenuItemsFunc();\n if (userFunc) {\n var userOptions = userFunc({\n column: this.column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n defaultItems: defaultMenuOptions\n });\n result = userOptions;\n }\n else {\n result = defaultMenuOptions;\n }\n // GUI looks weird when two separators are side by side. this can happen accidentally\n // if we remove items from the menu then two separators can edit up adjacent.\n _.removeRepeatsFromArray(result, EnterpriseMenu.MENU_ITEM_SEPARATOR);\n return result;\n };\n EnterpriseMenu.prototype.getDefaultMenuOptions = function () {\n var result = [];\n var allowPinning = !this.column.getColDef().lockPinned;\n var rowGroupCount = this.columnController.getRowGroupColumns().length;\n var doingGrouping = rowGroupCount > 0;\n var groupedByThisColumn = this.columnController.getRowGroupColumns().indexOf(this.column) >= 0;\n var allowValue = this.column.isAllowValue();\n var allowRowGroup = this.column.isAllowRowGroup();\n var isPrimary = this.column.isPrimary();\n var pivotModeOn = this.columnController.isPivotMode();\n var isInMemoryRowModel = this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n var allowValueAgg = \n // if primary, then only allow aggValue if grouping and it's a value columns\n (isPrimary && doingGrouping && allowValue)\n // secondary columns can always have aggValue, as it means it's a pivot value column\n || !isPrimary;\n if (allowPinning) {\n result.push('pinSubMenu');\n }\n if (allowValueAgg) {\n result.push('valueAggSubMenu');\n }\n if (allowPinning || allowValueAgg) {\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n }\n result.push('autoSizeThis');\n result.push('autoSizeAll');\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n if (allowRowGroup && this.column.isPrimary()) {\n if (groupedByThisColumn) {\n result.push('rowUnGroup');\n }\n else {\n result.push('rowGroup');\n }\n }\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n result.push('resetColumns');\n // only add grouping expand/collapse if grouping in the InMemoryRowModel\n // if pivoting, we only have expandable groups if grouping by 2 or more columns\n // as the lowest level group is not expandable while pivoting.\n // if not pivoting, then any active row group can be expanded.\n var allowExpandAndContract = false;\n if (isInMemoryRowModel) {\n if (usingTreeData) {\n allowExpandAndContract = true;\n }\n else {\n allowExpandAndContract = pivotModeOn ? rowGroupCount > 1 : rowGroupCount > 0;\n }\n }\n if (allowExpandAndContract) {\n result.push('expandAll');\n result.push('contractAll');\n }\n return result;\n };\n EnterpriseMenu.prototype.createMainPanel = function () {\n this.mainMenuList = new MenuList();\n this.getContext().wireBean(this.mainMenuList);\n var menuItems = this.getMenuItems();\n var menuItemsMapped = this.menuItemMapper.mapWithStockItems(menuItems, this.column);\n this.mainMenuList.addMenuItems(menuItemsMapped);\n this.mainMenuList.addEventListener(MenuItemComponent.EVENT_ITEM_SELECTED, this.onHidePopup.bind(this));\n this.tabItemGeneral = {\n title: _.createIconNoSpan('menu', this.gridOptionsWrapper, this.column),\n bodyPromise: Promise.resolve(this.mainMenuList.getGui()),\n name: EnterpriseMenu.TAB_GENERAL\n };\n return this.tabItemGeneral;\n };\n EnterpriseMenu.prototype.onHidePopup = function () {\n this.hidePopupFunc();\n };\n EnterpriseMenu.prototype.createFilterPanel = function () {\n var filterWrapper = this.filterManager.getOrCreateFilterWrapper(this.column, 'COLUMN_MENU');\n var afterFilterAttachedCallback = null;\n // slightly odd block this - this promise will always have been resolved by the time it gets here, so won't be\n // async (_unless_ in react or similar, but if so why not encountered before now?).\n // I'd suggest a future improvement would be to remove/replace this promise as this block just wont work if it is\n // async and is confusing if you don't have this context\n if (filterWrapper.filterPromise) {\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.afterGuiAttached) {\n afterFilterAttachedCallback = filter.afterGuiAttached.bind(filter);\n }\n });\n }\n this.tabItemFilter = {\n title: _.createIconNoSpan('filter', this.gridOptionsWrapper, this.column),\n bodyPromise: filterWrapper.guiPromise.promise,\n afterAttachedCallback: afterFilterAttachedCallback,\n name: EnterpriseMenu.TAB_FILTER\n };\n return this.tabItemFilter;\n };\n EnterpriseMenu.prototype.createColumnsPanel = function () {\n var eWrapperDiv = document.createElement('div');\n _.addCssClass(eWrapperDiv, 'ag-menu-column-select-wrapper');\n this.columnSelectPanel = this.getContext().createComponent('AG-PRIMARY-COLS');\n this.columnSelectPanel.init(false, {\n suppressValues: false,\n suppressPivots: false,\n suppressRowGroups: false,\n suppressPivotMode: false,\n contractColumnSelection: false,\n suppressColumnExpandAll: false,\n suppressColumnFilter: false,\n suppressColumnSelectAll: false,\n suppressSideButtons: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi\n });\n eWrapperDiv.appendChild(this.columnSelectPanel.getGui());\n this.tabItemColumns = {\n title: _.createIconNoSpan('columns', this.gridOptionsWrapper, this.column),\n bodyPromise: Promise.resolve(eWrapperDiv),\n name: EnterpriseMenu.TAB_COLUMNS\n };\n return this.tabItemColumns;\n };\n EnterpriseMenu.prototype.afterGuiAttached = function (params) {\n var _this = this;\n this.tabbedLayout.setAfterAttachedParams({ hidePopup: params.hidePopup });\n this.hidePopupFunc = params.hidePopup;\n var initialScroll = this.gridApi.getHorizontalPixelRange().left;\n // if the user scrolls the grid horizontally, we want to hide the menu, as the menu will not appear in the right location anymore\n var onBodyScroll = function (event) {\n // If the user hides columns using the columns tab in this menu, it will change the size of the\n // grid content and lead to a bodyScroll event. But we don't want to hide the menu for that kind\n // of indirect scrolling. Assume that any bodyScroll that happens right after a column change is\n // caused by that change, and ignore it.\n var msSinceLastColumnChange = Date.now() - _this.timeOfLastColumnChange;\n if (msSinceLastColumnChange < 500) {\n return;\n }\n // if h scroll, popup is no longer over the column\n if (event.direction === 'horizontal') {\n var newScroll = _this.gridApi.getHorizontalPixelRange().left;\n if (Math.abs(newScroll - initialScroll) > _this.gridOptionsWrapper.getScrollbarWidth()) {\n params.hidePopup();\n }\n }\n };\n this.addDestroyFunc(params.hidePopup);\n this.addDestroyableEventListener(this.eventService, 'bodyScroll', onBodyScroll);\n };\n EnterpriseMenu.prototype.getGui = function () {\n return this.tabbedLayout.getGui();\n };\n EnterpriseMenu.prototype.onDisplayedColumnsChanged = function () {\n this.timeOfLastColumnChange = Date.now();\n };\n EnterpriseMenu.EVENT_TAB_SELECTED = 'tabSelected';\n EnterpriseMenu.TAB_FILTER = 'filterMenuTab';\n EnterpriseMenu.TAB_GENERAL = 'generalMenuTab';\n EnterpriseMenu.TAB_COLUMNS = 'columnsMenuTab';\n EnterpriseMenu.TABS_DEFAULT = [EnterpriseMenu.TAB_GENERAL, EnterpriseMenu.TAB_FILTER, EnterpriseMenu.TAB_COLUMNS];\n EnterpriseMenu.MENU_ITEM_SEPARATOR = 'separator';\n __decorate([\n Autowired('columnController')\n ], EnterpriseMenu.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('filterManager')\n ], EnterpriseMenu.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('gridApi')\n ], EnterpriseMenu.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], EnterpriseMenu.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], EnterpriseMenu.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('menuItemMapper')\n ], EnterpriseMenu.prototype, \"menuItemMapper\", void 0);\n __decorate([\n Autowired('rowModel')\n ], EnterpriseMenu.prototype, \"rowModel\", void 0);\n __decorate([\n PostConstruct\n ], EnterpriseMenu.prototype, \"init\", null);\n return EnterpriseMenu;\n}(BeanStub));\nexport { EnterpriseMenu };\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, Component, ModuleNames, PostConstruct, Optional, ModuleRegistry } from \"@ag-grid-community/core\";\nimport { MenuItemComponent } from \"./menuItemComponent\";\nimport { MenuList } from \"./menuList\";\nvar ContextMenuFactory = /** @class */ (function () {\n function ContextMenuFactory() {\n }\n ContextMenuFactory.prototype.init = function () {\n };\n ContextMenuFactory.prototype.hideActiveMenu = function () {\n if (!this.activeMenu) {\n return;\n }\n this.activeMenu.destroy();\n };\n ContextMenuFactory.prototype.getMenuItems = function (node, column, value) {\n var defaultMenuOptions = [];\n if (_.exists(node) && ModuleRegistry.isRegistered(ModuleNames.ClipboardModule)) {\n if (column) {\n // only makes sense if column exists, could have originated from a row\n defaultMenuOptions.push('copy', 'copyWithHeaders', 'paste', 'separator');\n }\n }\n else {\n // if user clicks outside of a cell (eg below the rows, or not rows present)\n // nothing to show, perhaps tool panels???\n }\n if (this.gridOptionsWrapper.isEnableCharts() &&\n ModuleRegistry.isRegistered(ModuleNames.RangeSelectionModule) &&\n ModuleRegistry.isRegistered(ModuleNames.GridChartsModule)) {\n if (this.columnController.isPivotMode()) {\n defaultMenuOptions.push('pivotChart');\n }\n if (this.rangeController && !this.rangeController.isEmpty()) {\n defaultMenuOptions.push('chartRange');\n }\n }\n if (_.exists(node)) {\n // if user clicks a cell\n var csvModuleMissing = !ModuleRegistry.isRegistered(ModuleNames.CsvExportModule);\n var excelModuleMissing = !ModuleRegistry.isRegistered(ModuleNames.ExcelExportModule);\n var suppressExcel = this.gridOptionsWrapper.isSuppressExcelExport() || excelModuleMissing;\n var suppressCsv = this.gridOptionsWrapper.isSuppressCsvExport() || csvModuleMissing;\n var onIPad = _.isIOSUserAgent();\n var anyExport = !onIPad && (!suppressExcel || !suppressCsv);\n if (anyExport) {\n defaultMenuOptions.push('export');\n }\n }\n if (this.gridOptionsWrapper.getContextMenuItemsFunc()) {\n var userFunc = this.gridOptionsWrapper.getContextMenuItemsFunc();\n var params = {\n node: node,\n column: column,\n value: value,\n defaultItems: defaultMenuOptions.length ? defaultMenuOptions : undefined,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n return userFunc ? userFunc(params) : undefined;\n }\n return defaultMenuOptions;\n };\n ContextMenuFactory.prototype.showMenu = function (node, column, value, mouseEvent) {\n var _this = this;\n var menuItems = this.getMenuItems(node, column, value);\n if (menuItems === undefined || _.missingOrEmpty(menuItems)) {\n return;\n }\n var menu = new ContextMenu(menuItems);\n this.context.wireBean(menu);\n var eMenuGui = menu.getGui();\n // need to show filter before positioning, as only after filter\n // is visible can we find out what the width of it is\n var hidePopup = this.popupService.addAsModalPopup(eMenuGui, true, function () { return menu.destroy(); }, mouseEvent);\n this.popupService.positionPopupUnderMouseEvent({\n column: column,\n rowNode: node,\n type: 'contextMenu',\n mouseEvent: mouseEvent,\n ePopup: eMenuGui\n });\n menu.afterGuiAttached({\n hidePopup: hidePopup\n });\n this.activeMenu = menu;\n menu.addEventListener(BeanStub.EVENT_DESTROYED, function () {\n if (_this.activeMenu === menu) {\n _this.activeMenu = null;\n }\n });\n };\n __decorate([\n Autowired('context')\n ], ContextMenuFactory.prototype, \"context\", void 0);\n __decorate([\n Autowired('popupService')\n ], ContextMenuFactory.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ContextMenuFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('rowModel')\n ], ContextMenuFactory.prototype, \"rowModel\", void 0);\n __decorate([\n Optional('rangeController')\n ], ContextMenuFactory.prototype, \"rangeController\", void 0);\n __decorate([\n Autowired('columnController')\n ], ContextMenuFactory.prototype, \"columnController\", void 0);\n __decorate([\n PostConstruct\n ], ContextMenuFactory.prototype, \"init\", null);\n ContextMenuFactory = __decorate([\n Bean('contextMenuFactory')\n ], ContextMenuFactory);\n return ContextMenuFactory;\n}());\nexport { ContextMenuFactory };\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n function ContextMenu(menuItems) {\n var _this = _super.call(this, '
') || this;\n _this.menuItems = menuItems;\n return _this;\n }\n ContextMenu.prototype.addMenuItems = function () {\n var menuList = new MenuList();\n this.getContext().wireBean(menuList);\n var menuItemsMapped = this.menuItemMapper.mapWithStockItems(this.menuItems, null);\n menuList.addMenuItems(menuItemsMapped);\n this.appendChild(menuList);\n menuList.addEventListener(MenuItemComponent.EVENT_ITEM_SELECTED, this.destroy.bind(this));\n };\n ContextMenu.prototype.afterGuiAttached = function (params) {\n if (params.hidePopup) {\n this.addDestroyFunc(params.hidePopup);\n }\n // if the body scrolls, we want to hide the menu, as the menu will not appear in the right location anymore\n this.addDestroyableEventListener(this.eventService, 'bodyScroll', this.destroy.bind(this));\n };\n __decorate([\n Autowired('eventService')\n ], ContextMenu.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('menuItemMapper')\n ], ContextMenu.prototype, \"menuItemMapper\", void 0);\n __decorate([\n PostConstruct\n ], ContextMenu.prototype, \"addMenuItems\", null);\n return ContextMenu;\n}(Component));\n","var __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, ChartType, Constants, ModuleNames, ModuleRegistry, Optional } from '@ag-grid-community/core';\nvar MenuItemMapper = /** @class */ (function () {\n function MenuItemMapper() {\n }\n MenuItemMapper.prototype.mapWithStockItems = function (originalList, column) {\n var _this = this;\n if (!originalList) {\n return [];\n }\n var resultList = [];\n originalList.forEach(function (menuItemOrString) {\n var result;\n if (typeof menuItemOrString === 'string') {\n result = _this.getStockMenuItem(menuItemOrString, column);\n }\n else {\n result = menuItemOrString;\n }\n // if no mapping, can happen when module is not loaded but user tries to use module anyway\n if (!result) {\n return;\n }\n if (result.subMenu) {\n var resultDef = result;\n resultDef.subMenu = _this.mapWithStockItems(resultDef.subMenu, column);\n }\n if (result != null) {\n resultList.push(result);\n }\n });\n return resultList;\n };\n MenuItemMapper.prototype.getStockMenuItem = function (key, column) {\n var _this = this;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var skipHeaderOnAutoSize = this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n switch (key) {\n case 'pinSubMenu':\n return {\n name: localeTextFunc('pinColumn', 'Pin Column'),\n icon: _.createIconNoSpan('menuPin', this.gridOptionsWrapper, null),\n subMenu: ['pinLeft', 'pinRight', 'clearPinned']\n };\n case 'pinLeft':\n return {\n name: localeTextFunc('pinLeft', 'Pin Left'),\n action: function () { return _this.columnController.setColumnPinned(column, Constants.PINNED_LEFT, \"contextMenu\"); },\n checked: column.isPinnedLeft()\n };\n case 'pinRight':\n return {\n name: localeTextFunc('pinRight', 'Pin Right'),\n action: function () { return _this.columnController.setColumnPinned(column, Constants.PINNED_RIGHT, \"contextMenu\"); },\n checked: column.isPinnedRight()\n };\n case 'clearPinned':\n return {\n name: localeTextFunc('noPin', 'No Pin'),\n action: function () { return _this.columnController.setColumnPinned(column, null, \"contextMenu\"); },\n checked: !column.isPinned()\n };\n case 'valueAggSubMenu':\n if (ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Aggregation from Menu')) {\n return {\n name: localeTextFunc('valueAggregation', 'Value Aggregation'),\n icon: _.createIconNoSpan('menuValue', this.gridOptionsWrapper, null),\n subMenu: this.createAggregationSubMenu(column)\n };\n }\n else {\n return null;\n }\n case 'autoSizeThis':\n return {\n name: localeTextFunc('autosizeThiscolumn', 'Autosize This Column'),\n action: function () { return _this.columnController.autoSizeColumn(column, skipHeaderOnAutoSize, \"contextMenu\"); }\n };\n case 'autoSizeAll':\n return {\n name: localeTextFunc('autosizeAllColumns', 'Autosize All Columns'),\n action: function () { return _this.columnController.autoSizeAllColumns(skipHeaderOnAutoSize, \"contextMenu\"); }\n };\n case 'rowGroup':\n return {\n name: localeTextFunc('groupBy', 'Group by') + ' ' + _.escape(this.columnController.getDisplayNameForColumn(column, 'header')),\n action: function () { return _this.columnController.addRowGroupColumn(column, \"contextMenu\"); },\n icon: _.createIconNoSpan('menuAddRowGroup', this.gridOptionsWrapper, null)\n };\n case 'rowUnGroup':\n return {\n name: localeTextFunc('ungroupBy', 'Un-Group by') + ' ' + _.escape(this.columnController.getDisplayNameForColumn(column, 'header')),\n action: function () { return _this.columnController.removeRowGroupColumn(column, \"contextMenu\"); },\n icon: _.createIconNoSpan('menuRemoveRowGroup', this.gridOptionsWrapper, null)\n };\n case 'resetColumns':\n return {\n name: localeTextFunc('resetColumns', 'Reset Columns'),\n action: function () { return _this.columnController.resetColumnState(false, \"contextMenu\"); }\n };\n case 'expandAll':\n return {\n name: localeTextFunc('expandAll', 'Expand All'),\n action: function () { return _this.gridApi.expandAll(); }\n };\n case 'contractAll':\n return {\n name: localeTextFunc('collapseAll', 'Collapse All'),\n action: function () { return _this.gridApi.collapseAll(); }\n };\n case 'copy':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy from Menu')) {\n return {\n name: localeTextFunc('copy', 'Copy'),\n shortcut: localeTextFunc('ctrlC', 'Ctrl+C'),\n icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsWrapper, null),\n action: function () { return _this.clipboardService.copyToClipboard(false); }\n };\n }\n else {\n return null;\n }\n case 'copyWithHeaders':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy with Headers from Menu')) {\n return {\n name: localeTextFunc('copyWithHeaders', 'Copy with Headers'),\n // shortcut: localeTextFunc('ctrlC','Ctrl+C'),\n icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsWrapper, null),\n action: function () { return _this.clipboardService.copyToClipboard(true); }\n };\n }\n else {\n return null;\n }\n case 'paste':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy with Headers from Menu')) {\n return {\n name: localeTextFunc('paste', 'Paste'),\n shortcut: localeTextFunc('ctrlV', 'Ctrl+V'),\n disabled: true,\n icon: _.createIconNoSpan('clipboardPaste', this.gridOptionsWrapper, null),\n action: function () { return _this.clipboardService.pasteFromClipboard(); }\n };\n }\n else {\n return null;\n }\n case 'export':\n var exportSubMenuItems = [];\n var csvModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.CsvExportModule);\n var excelModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.ExcelExportModule);\n if (!this.gridOptionsWrapper.isSuppressCsvExport() && csvModuleLoaded) {\n exportSubMenuItems.push('csvExport');\n }\n if (!this.gridOptionsWrapper.isSuppressExcelExport() && excelModuleLoaded) {\n exportSubMenuItems.push('excelExport');\n exportSubMenuItems.push('excelXmlExport');\n }\n return {\n name: localeTextFunc('export', 'Export'),\n subMenu: exportSubMenuItems,\n icon: _.createIconNoSpan('save', this.gridOptionsWrapper, null),\n };\n case 'csvExport':\n return {\n name: localeTextFunc('csvExport', 'CSV Export'),\n action: function () { return _this.gridApi.exportDataAsCsv({}); }\n };\n case 'excelExport':\n return {\n name: localeTextFunc('excelExport', 'Excel Export (.xlsx)‎'),\n action: function () { return _this.gridApi.exportDataAsExcel({\n exportMode: 'xlsx'\n }); }\n };\n case 'excelXmlExport':\n return {\n name: localeTextFunc('excelXmlExport', 'Excel Export (.xml)‎'),\n action: function () { return _this.gridApi.exportDataAsExcel({\n exportMode: 'xml'\n }); }\n };\n case 'separator':\n return 'separator';\n default:\n var chartMenuItem = this.getChartItems(key);\n if (chartMenuItem) {\n return chartMenuItem;\n }\n else {\n console.warn(\"ag-Grid: unknown menu item type \" + key);\n return null;\n }\n }\n };\n MenuItemMapper.prototype.getChartItems = function (key) {\n var _this = this;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var pivotChartMenuItem = function (localeKey, defaultText, chartType) {\n return {\n name: localeTextFunc(localeKey, defaultText),\n action: function () { return _this.chartService.createPivotChart({ chartType: chartType }); }\n };\n };\n var rangeChartMenuItem = function (localeKey, defaultText, chartType) {\n return {\n name: localeTextFunc(localeKey, defaultText),\n action: function () { return _this.chartService.createChartFromCurrentRange(chartType); }\n };\n };\n switch (key) {\n // case 'pivotChartAndPivotMode':\n // return {\n // name: localeTextFunc('pivotChartAndPivotMode', 'Pivot Chart & Pivot Mode‎'),\n // action: () => this.chartService.pivotChart(ChartType.GroupedColumn),\n // icon: _.createIconNoSpan('chart', this.gridOptionsWrapper, null)\n // };\n case 'pivotChart':\n return {\n name: localeTextFunc('pivotChart', 'Pivot Chart'),\n subMenu: [\n 'pivotColumnChart',\n 'pivotBarChart',\n 'pivotPieChart',\n 'pivotLineChart',\n 'pivotXYChart',\n 'pivotAreaChart'\n ],\n icon: _.createIconNoSpan('chart', this.gridOptionsWrapper, null),\n };\n case 'chartRange':\n return {\n name: localeTextFunc('chartRange', 'Chart Range'),\n subMenu: [\n 'rangeColumnChart',\n 'rangeBarChart',\n 'rangePieChart',\n 'rangeLineChart',\n 'rangeXYChart',\n 'rangeAreaChart'\n ],\n icon: _.createIconNoSpan('chart', this.gridOptionsWrapper, null),\n };\n case 'pivotColumnChart':\n return {\n name: localeTextFunc('columnChart', 'Column'),\n subMenu: ['pivotGroupedColumn', 'pivotStackedColumn', 'pivotNormalizedColumn']\n };\n case 'pivotGroupedColumn':\n return pivotChartMenuItem('groupedColumn', 'Grouped‎', ChartType.GroupedColumn);\n case 'pivotStackedColumn':\n return pivotChartMenuItem('stackedColumn', 'Stacked‎', ChartType.StackedColumn);\n case 'pivotNormalizedColumn':\n return pivotChartMenuItem('normalizedColumn', '100% Stacked‎', ChartType.NormalizedColumn);\n case 'rangeColumnChart':\n return {\n name: localeTextFunc('columnChart', 'Column'),\n subMenu: ['rangeGroupedColumn', 'rangeStackedColumn', 'rangeNormalizedColumn']\n };\n case 'rangeGroupedColumn':\n return rangeChartMenuItem('groupedColumn', 'Grouped‎', ChartType.GroupedColumn);\n case 'rangeStackedColumn':\n return rangeChartMenuItem('stackedColumn', 'Stacked‎', ChartType.StackedColumn);\n case 'rangeNormalizedColumn':\n return rangeChartMenuItem('normalizedColumn', '100% Stacked‎', ChartType.NormalizedColumn);\n case 'pivotBarChart':\n return {\n name: localeTextFunc('barChart', 'Bar'),\n subMenu: ['pivotGroupedBar', 'pivotStackedBar', 'pivotNormalizedBar']\n };\n case 'pivotGroupedBar':\n return pivotChartMenuItem('groupedBar', 'Grouped‎', ChartType.GroupedBar);\n case 'pivotStackedBar':\n return pivotChartMenuItem('stackedBar', 'Stacked‎', ChartType.StackedBar);\n case 'pivotNormalizedBar':\n return pivotChartMenuItem('normalizedBar', '100% Stacked‎', ChartType.NormalizedBar);\n case 'rangeBarChart':\n return {\n name: localeTextFunc('barChart', 'Bar'),\n subMenu: ['rangeGroupedBar', 'rangeStackedBar', 'rangeNormalizedBar']\n };\n case 'rangeGroupedBar':\n return rangeChartMenuItem('groupedBar', 'Grouped‎', ChartType.GroupedBar);\n case 'rangeStackedBar':\n return rangeChartMenuItem('stackedBar', 'Stacked‎', ChartType.StackedBar);\n case 'rangeNormalizedBar':\n return rangeChartMenuItem('normalizedBar', '100% Stacked‎', ChartType.NormalizedBar);\n case 'pivotPieChart':\n return {\n name: localeTextFunc('pieChart', 'Pie'),\n subMenu: ['pivotPie', 'pivotDoughnut']\n };\n case 'pivotPie':\n return pivotChartMenuItem('pie', 'Pie‎', ChartType.Pie);\n case 'pivotDoughnut':\n return pivotChartMenuItem('doughnut', 'Doughnut‎', ChartType.Doughnut);\n case 'rangePieChart':\n return {\n name: localeTextFunc('pieChart', 'Pie'),\n subMenu: ['rangePie', 'rangeDoughnut']\n };\n case 'rangePie':\n return rangeChartMenuItem('pie', 'Pie‎', ChartType.Pie);\n case 'rangeDoughnut':\n return rangeChartMenuItem('doughnut', 'Doughnut‎', ChartType.Doughnut);\n case 'pivotLineChart':\n return pivotChartMenuItem('line', 'Line‎', ChartType.Line);\n case 'rangeLineChart':\n return rangeChartMenuItem('line', 'Line‎', ChartType.Line);\n case 'pivotXYChart':\n return {\n name: localeTextFunc('xyChart', 'X Y (Scatter)'),\n subMenu: ['pivotScatter', 'pivotBubble']\n };\n case 'pivotScatter':\n return pivotChartMenuItem('scatter', 'Scatter‎', ChartType.Scatter);\n case 'pivotBubble':\n return pivotChartMenuItem('bubble', 'Bubble‎', ChartType.Bubble);\n case 'rangeXYChart':\n return {\n name: localeTextFunc('xyChart', 'X Y (Scatter)'),\n subMenu: ['rangeScatter', 'rangeBubble']\n };\n case 'rangeScatter':\n return rangeChartMenuItem('scatter', 'Scatter‎', ChartType.Scatter);\n case 'rangeBubble':\n return rangeChartMenuItem('bubble', 'Bubble‎', ChartType.Bubble);\n case 'pivotAreaChart':\n return {\n name: localeTextFunc('areaChart', 'Area'),\n subMenu: ['pivotArea', 'pivotStackedArea', 'pivotNormalizedArea']\n };\n case 'pivotArea':\n return pivotChartMenuItem('area', 'Area‎', ChartType.Area);\n case 'pivotStackedArea':\n return pivotChartMenuItem('stackedArea', 'Stacked‎', ChartType.StackedArea);\n case 'pivotNormalizedArea':\n return pivotChartMenuItem('normalizedArea', '100% Stacked‎', ChartType.NormalizedArea);\n case 'rangeAreaChart':\n return {\n name: localeTextFunc('areaChart', 'Area'),\n subMenu: ['rangeArea', 'rangeStackedArea', 'rangeNormalizedArea']\n };\n case 'rangeArea':\n return rangeChartMenuItem('area', 'Area‎', ChartType.Area);\n case 'rangeStackedArea':\n return rangeChartMenuItem('stackedArea', 'Stacked‎', ChartType.StackedArea);\n case 'rangeNormalizedArea':\n return rangeChartMenuItem('normalizedArea', '100% Stacked‎', ChartType.NormalizedArea);\n default:\n return null;\n }\n };\n MenuItemMapper.prototype.createAggregationSubMenu = function (column) {\n var _this = this;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var columnIsAlreadyAggValue = column.isValueActive();\n var funcNames = this.aggFuncService.getFuncNames(column);\n var columnToUse;\n if (column.isPrimary()) {\n columnToUse = column;\n }\n else {\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n columnToUse = _.exists(pivotValueColumn) ? pivotValueColumn : undefined;\n }\n var result = [];\n funcNames.forEach(function (funcName) {\n result.push({\n name: localeTextFunc(funcName, funcName),\n action: function () {\n _this.columnController.setColumnAggFunc(columnToUse, funcName, \"contextMenu\");\n _this.columnController.addValueColumn(columnToUse, \"contextMenu\");\n },\n checked: columnIsAlreadyAggValue && columnToUse.getAggFunc() === funcName\n });\n });\n return result;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], MenuItemMapper.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], MenuItemMapper.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('gridApi')\n ], MenuItemMapper.prototype, \"gridApi\", void 0);\n __decorate([\n Optional('clipboardService')\n ], MenuItemMapper.prototype, \"clipboardService\", void 0);\n __decorate([\n Optional('aggFuncService')\n ], MenuItemMapper.prototype, \"aggFuncService\", void 0);\n __decorate([\n Optional('chartService')\n ], MenuItemMapper.prototype, \"chartService\", void 0);\n __decorate([\n Optional('context')\n ], MenuItemMapper.prototype, \"context\", void 0);\n MenuItemMapper = __decorate([\n Bean('menuItemMapper')\n ], MenuItemMapper);\n return MenuItemMapper;\n}());\nexport { MenuItemMapper };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { EnterpriseMenuFactory } from \"./menu/enterpriseMenu\";\nimport { ContextMenuFactory } from \"./menu/contextMenu\";\nimport { MenuItemMapper } from \"./menu/menuItemMapper\";\nexport var MenuModule = {\n moduleName: ModuleNames.MenuModule,\n beans: [EnterpriseMenuFactory, ContextMenuFactory, MenuItemMapper],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","export { MenuModule } from \"./menuModule\";\n","import { Constants, Promise, TextFilter, _ } from \"@ag-grid-community/core\";\n// we cannot have 'null' as a key in a JavaScript map,\n// it needs to be a string. so we use this string for\n// storing null values.\nvar NULL_VALUE = '___NULL___';\nexport var SetFilterModelValuesType;\n(function (SetFilterModelValuesType) {\n SetFilterModelValuesType[SetFilterModelValuesType[\"PROVIDED_LIST\"] = 0] = \"PROVIDED_LIST\";\n SetFilterModelValuesType[SetFilterModelValuesType[\"PROVIDED_CB\"] = 1] = \"PROVIDED_CB\";\n SetFilterModelValuesType[SetFilterModelValuesType[\"NOT_PROVIDED\"] = 2] = \"NOT_PROVIDED\";\n})(SetFilterModelValuesType || (SetFilterModelValuesType = {}));\nvar SetValueModel = /** @class */ (function () {\n function SetValueModel(colDef, rowModel, valueGetter, doesRowPassOtherFilters, suppressSorting, modelUpdatedFunc, isLoadingFunc, valueFormatterService, column) {\n this.suppressSorting = suppressSorting;\n this.colDef = colDef;\n this.valueGetter = valueGetter;\n this.doesRowPassOtherFilters = doesRowPassOtherFilters;\n this.modelUpdatedFunc = modelUpdatedFunc;\n this.isLoadingFunc = isLoadingFunc;\n this.valueFormatterService = valueFormatterService;\n this.column = column;\n if (rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = rowModel;\n }\n this.filterParams = this.colDef.filterParams ? this.colDef.filterParams : {};\n if (_.exists(this.filterParams) && _.exists(this.filterParams.values)) {\n this.valuesType = Array.isArray(this.filterParams.values) ?\n SetFilterModelValuesType.PROVIDED_LIST :\n SetFilterModelValuesType.PROVIDED_CB;\n this.showingAvailableOnly = this.filterParams.suppressRemoveEntries !== true;\n }\n else {\n this.valuesType = SetFilterModelValuesType.NOT_PROVIDED;\n this.showingAvailableOnly = true;\n }\n this.createAllUniqueValues();\n this.createAvailableUniqueValues();\n // by default, no filter, so we display everything\n this.displayedValues = this.availableUniqueValues;\n this.miniFilter = null;\n // we use a map rather than an array for the selected values as the lookup\n // for a map is much faster than the lookup for an array, especially when\n // the length of the array is thousands of records long\n this.selectedValuesMap = {};\n this.selectAllUsingMiniFilter();\n this.formatter = this.filterParams.textFormatter ? this.filterParams.textFormatter : TextFilter.DEFAULT_FORMATTER;\n }\n // if keepSelection not set will always select all filters\n // if keepSelection set will keep current state of selected filters\n // unless selectAll chosen in which case will select all\n SetValueModel.prototype.refreshAfterNewRowsLoaded = function (keepSelection, everythingSelected) {\n this.createAllUniqueValues();\n this.refreshSelection(keepSelection, everythingSelected);\n };\n // if keepSelection not set will always select all filters\n // if keepSelection set will keep current state of selected filters\n // unless selectAll chosen in which case will select all\n SetValueModel.prototype.refreshValues = function (valuesToUse, keepSelection, isSelectAll) {\n this.setValues(valuesToUse);\n this.refreshSelection(keepSelection, isSelectAll);\n };\n SetValueModel.prototype.refreshSelection = function (keepSelection, isSelectAll) {\n this.createAvailableUniqueValues();\n var oldModel = Object.keys(this.selectedValuesMap);\n this.selectedValuesMap = {};\n this.processMiniFilter();\n if (keepSelection) {\n this.setModel(oldModel, isSelectAll);\n }\n else {\n this.selectAllUsingMiniFilter();\n }\n };\n SetValueModel.prototype.refreshAfterAnyFilterChanged = function () {\n if (this.showingAvailableOnly) {\n this.createAvailableUniqueValues();\n this.processMiniFilter();\n }\n };\n SetValueModel.prototype.createAllUniqueValues = function () {\n if (this.areValuesSync()) {\n var valuesToUse = this.extractSyncValuesToUse();\n this.setValues(valuesToUse);\n this.filterValuesPromise = Promise.resolve([]);\n }\n else {\n this.filterValuesExternalPromise = Promise.external();\n this.filterValuesPromise = this.filterValuesExternalPromise.promise;\n this.isLoadingFunc(true);\n this.setValues([]);\n var callback_1 = this.filterParams.values;\n var params_1 = {\n success: this.onAsyncValuesLoaded.bind(this),\n colDef: this.colDef\n };\n window.setTimeout(function () { return callback_1(params_1); }, 0);\n }\n };\n SetValueModel.prototype.onAsyncValuesLoaded = function (values) {\n this.modelUpdatedFunc(values);\n this.isLoadingFunc(false);\n this.filterValuesExternalPromise.resolve(values);\n };\n SetValueModel.prototype.areValuesSync = function () {\n return this.valuesType == SetFilterModelValuesType.PROVIDED_LIST || this.valuesType == SetFilterModelValuesType.NOT_PROVIDED;\n };\n SetValueModel.prototype.setValuesType = function (value) {\n this.valuesType = value;\n };\n SetValueModel.prototype.getValuesType = function () {\n return this.valuesType;\n };\n SetValueModel.prototype.setValues = function (valuesToUse) {\n this.allUniqueValues = valuesToUse;\n if (!this.suppressSorting) {\n this.sortValues(this.allUniqueValues);\n }\n };\n SetValueModel.prototype.extractSyncValuesToUse = function () {\n var valuesToUse;\n if (this.valuesType == SetFilterModelValuesType.PROVIDED_LIST) {\n if (Array.isArray(this.filterParams.values)) {\n valuesToUse = _.toStrings(this.filterParams.values);\n }\n else {\n // In this case the values are async but have already been resolved, so we can reuse them\n valuesToUse = this.allUniqueValues;\n }\n }\n else if (this.valuesType == SetFilterModelValuesType.PROVIDED_CB) {\n throw Error(\"ag-grid: Error extracting values to use. We should not extract the values synchronously when using a callback for the filterParams.values\");\n }\n else {\n var uniqueValuesAsAnyObjects = this.getUniqueValues(false);\n valuesToUse = _.toStrings(uniqueValuesAsAnyObjects);\n }\n return valuesToUse;\n };\n SetValueModel.prototype.createAvailableUniqueValues = function () {\n var dontCheckAvailableValues = !this.showingAvailableOnly || this.valuesType == SetFilterModelValuesType.PROVIDED_LIST || this.valuesType == SetFilterModelValuesType.PROVIDED_CB;\n if (dontCheckAvailableValues) {\n this.availableUniqueValues = this.allUniqueValues;\n return;\n }\n var uniqueValuesAsAnyObjects = this.getUniqueValues(true);\n this.availableUniqueValues = _.toStrings(uniqueValuesAsAnyObjects);\n this.sortValues(this.availableUniqueValues);\n };\n SetValueModel.prototype.sortValues = function (values) {\n if (this.filterParams && this.filterParams.comparator) {\n values.sort(this.filterParams.comparator);\n }\n else if (this.colDef.comparator) {\n values.sort(this.colDef.comparator);\n }\n else {\n values.sort(_.defaultComparator);\n }\n };\n SetValueModel.prototype.getUniqueValues = function (filterOutNotAvailable) {\n var _this = this;\n var uniqueCheck = {};\n var result = [];\n if (!this.clientSideRowModel) {\n console.error('ag-Grid: Set Filter cannot initialise because you are using a row model that does not contain all rows in the browser. Either use a different filter type, or configure Set Filter such that you provide it with values');\n return [];\n }\n this.clientSideRowModel.forEachLeafNode(function (node) {\n // only pull values from rows that have data. this means we skip filler group nodes.\n if (!node.data) {\n return;\n }\n var value = _this.valueGetter(node);\n if (_this.colDef.keyCreator) {\n value = _this.colDef.keyCreator({ value: value });\n }\n if (value === \"\" || value === undefined) {\n value = null;\n }\n if (filterOutNotAvailable) {\n if (!_this.doesRowPassOtherFilters(node)) {\n return;\n }\n }\n if (value != null && Array.isArray(value)) {\n for (var j = 0; j < value.length; j++) {\n addUniqueValueIfMissing(value[j]);\n }\n }\n else {\n addUniqueValueIfMissing(value);\n }\n });\n function addUniqueValueIfMissing(value) {\n if (!uniqueCheck.hasOwnProperty(value)) {\n result.push(value);\n uniqueCheck[value] = 1;\n }\n }\n return result;\n };\n //sets mini filter. returns true if it changed from last value, otherwise false\n SetValueModel.prototype.setMiniFilter = function (newMiniFilter) {\n newMiniFilter = _.makeNull(newMiniFilter);\n if (this.miniFilter === newMiniFilter) {\n //do nothing if filter has not changed\n return false;\n }\n this.miniFilter = newMiniFilter;\n this.processMiniFilter();\n return true;\n };\n SetValueModel.prototype.getMiniFilter = function () {\n return this.miniFilter;\n };\n SetValueModel.prototype.processMiniFilter = function () {\n // if no filter, just use the unique values\n if (this.miniFilter === null) {\n this.displayedValues = this.availableUniqueValues;\n return;\n }\n // if filter present, we filter down the list\n this.displayedValues = [];\n var miniFilter = this.formatter(this.miniFilter);\n // make upper case to have search case insensitive\n var miniFilterUpperCase = miniFilter.toUpperCase();\n //This function encapsulates the logic to check if a string matches the mini filter\n var matchesFn = function (valueToCheck) {\n if (valueToCheck == null) {\n return false;\n }\n // allow for case insensitive searches, make both filter and value uppercase\n var valueUpperCase = valueToCheck.toUpperCase();\n return valueUpperCase.indexOf(miniFilterUpperCase) >= 0;\n };\n for (var i = 0, l = this.availableUniqueValues.length; i < l; i++) {\n var value = this.availableUniqueValues[i];\n if (value) {\n var displayedValue = this.formatter(value.toString());\n var formattedValue = this.valueFormatterService.formatValue(this.column, null, null, displayedValue);\n if (matchesFn(displayedValue) || matchesFn(formattedValue)) {\n this.displayedValues.push(value);\n }\n }\n }\n };\n SetValueModel.prototype.getDisplayedValueCount = function () {\n return this.displayedValues.length;\n };\n SetValueModel.prototype.getDisplayedValue = function (index) {\n return this.displayedValues[index];\n };\n SetValueModel.prototype.selectAllUsingMiniFilter = function () {\n if (this.miniFilter) {\n this.selectOn(this.displayedValues);\n }\n else {\n this.selectOn(this.allUniqueValues);\n }\n };\n SetValueModel.prototype.selectOn = function (toSelectOn) {\n var count = toSelectOn.length;\n for (var i = 0; i < count; i++) {\n var key = toSelectOn[i];\n var safeKey = this.valueToKey(key);\n this.selectedValuesMap[safeKey] = null;\n }\n this.selectedValuesCount = Object.keys(this.selectedValuesMap).length;\n };\n SetValueModel.prototype.valueToKey = function (key) {\n if (key === null) {\n return NULL_VALUE;\n }\n else {\n return key;\n }\n };\n SetValueModel.prototype.keyToValue = function (value) {\n if (value === NULL_VALUE) {\n return null;\n }\n else {\n return value;\n }\n };\n SetValueModel.prototype.isFilterActive = function () {\n return this.allUniqueValues.length !== this.selectedValuesCount;\n };\n SetValueModel.prototype.selectNothingUsingMiniFilter = function () {\n var _this = this;\n if (this.miniFilter) {\n this.displayedValues.forEach(function (it) { return _this.unselectValue(it); });\n }\n else {\n this.selectNothing();\n }\n };\n SetValueModel.prototype.selectNothing = function () {\n this.selectedValuesMap = {};\n this.selectedValuesCount = 0;\n };\n SetValueModel.prototype.getUniqueValueCount = function () {\n return this.allUniqueValues.length;\n };\n SetValueModel.prototype.getUniqueValue = function (index) {\n return this.allUniqueValues[index];\n };\n SetValueModel.prototype.unselectValue = function (value) {\n var safeKey = this.valueToKey(value);\n if (this.selectedValuesMap[safeKey] !== undefined) {\n delete this.selectedValuesMap[safeKey];\n this.selectedValuesCount--;\n }\n };\n SetValueModel.prototype.selectAllFromMiniFilter = function () {\n this.selectNothing();\n this.selectAllUsingMiniFilter();\n };\n SetValueModel.prototype.selectValue = function (value) {\n var safeKey = this.valueToKey(value);\n if (this.selectedValuesMap[safeKey] === undefined) {\n this.selectedValuesMap[safeKey] = null;\n this.selectedValuesCount++;\n }\n };\n SetValueModel.prototype.isValueSelected = function (value) {\n var safeKey = this.valueToKey(value);\n return this.selectedValuesMap[safeKey] !== undefined;\n };\n SetValueModel.prototype.isEverythingSelected = function () {\n var _this = this;\n if (this.miniFilter) {\n return this.displayedValues.filter(function (it) { return _this.isValueSelected(it); }).length === this.displayedValues.length;\n }\n else {\n return this.allUniqueValues.length === this.selectedValuesCount;\n }\n };\n SetValueModel.prototype.isNothingSelected = function () {\n var _this = this;\n if (this.miniFilter) {\n return this.displayedValues.filter(function (it) { return _this.isValueSelected(it); }).length === 0;\n }\n else {\n return this.selectedValuesCount === 0;\n }\n };\n SetValueModel.prototype.getModel = function () {\n var _this = this;\n if (!this.isFilterActive()) {\n return null;\n }\n var selectedValues = [];\n _.iterateObject(this.selectedValuesMap, function (key) {\n var value = _this.keyToValue(key);\n selectedValues.push(value);\n });\n return selectedValues;\n };\n SetValueModel.prototype.setModel = function (model, isSelectAll) {\n var _this = this;\n if (isSelectAll === void 0) { isSelectAll = false; }\n if (this.areValuesSync()) {\n this.setSyncModel(model, isSelectAll);\n }\n else {\n this.filterValuesExternalPromise.promise.then(function (values) {\n _this.setSyncModel(model, isSelectAll);\n _this.modelUpdatedFunc(values, model);\n });\n }\n };\n SetValueModel.prototype.setSyncModel = function (model, isSelectAll) {\n if (isSelectAll === void 0) { isSelectAll = false; }\n if (model && !isSelectAll) {\n this.selectNothingUsingMiniFilter();\n for (var i = 0; i < model.length; i++) {\n var rawValue = model[i];\n var value = this.keyToValue(rawValue);\n if (this.allUniqueValues.indexOf(value) >= 0) {\n this.selectValue(value);\n }\n }\n }\n else {\n this.selectAllUsingMiniFilter();\n }\n };\n SetValueModel.prototype.onFilterValuesReady = function (callback) {\n //This guarantees that if the user is racing to set values async into the set filter, only the first instance\n //will be used\n // ie Values are async and the user manually wants to override them before the retrieval of values is triggered\n // (set filter values in the following example)\n // http://plnkr.co/edit/eFka7ynvPj68tL3VJFWf?p=preview\n this.filterValuesPromise.firstOneOnly(callback);\n };\n return SetValueModel;\n}());\nexport { SetValueModel };\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, Constants, Events, ProvidedFilter, RefSelector, VirtualList } from \"@ag-grid-community/core\";\nimport { SetFilterModelValuesType, SetValueModel } from \"./setValueModel\";\nimport { SetFilterListItem } from \"./setFilterListItem\";\nvar CheckboxState;\n(function (CheckboxState) {\n CheckboxState[CheckboxState[\"CHECKED\"] = 0] = \"CHECKED\";\n CheckboxState[CheckboxState[\"UNCHECKED\"] = 1] = \"UNCHECKED\";\n CheckboxState[CheckboxState[\"INTERMEDIATE\"] = 2] = \"INTERMEDIATE\";\n})(CheckboxState || (CheckboxState = {}));\nvar SetFilter = /** @class */ (function (_super) {\n __extends(SetFilter, _super);\n function SetFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // unlike the simple filter's, nothing in the set filter UI shows/hides.\n // maybe this method belongs in abstractSimpleFilter???\n SetFilter.prototype.updateUiVisibility = function () { };\n SetFilter.prototype.createBodyTemplate = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n return \"
\" + translate('loadingOoo', 'Loading...') + \"
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\";\n };\n SetFilter.prototype.resetUiToDefaults = function () {\n this.setMiniFilter(null);\n this.valueModel.setModel(null, true);\n this.selectEverything();\n };\n SetFilter.prototype.setModelIntoUi = function (model) {\n this.resetUiToDefaults();\n if (model) {\n if (model instanceof Array) {\n var message_1 = 'ag-Grid: The Set Filter Model is no longer an array and models as arrays are ' +\n 'deprecated. Please check the docs on what the set filter model looks like. Future versions of ' +\n 'ag-Grid will have the array version of the model removed.';\n _.doOnce(function () { return console.warn(message_1); }, 'setFilter.modelAsArray');\n }\n // also supporting old filter model for backwards compatibility\n var newValues = (model instanceof Array) ? model : model.values;\n this.valueModel.setModel(newValues);\n this.updateSelectAll();\n this.virtualList.refresh();\n }\n };\n SetFilter.prototype.getModelFromUi = function () {\n var values = this.valueModel.getModel();\n if (!values) {\n return null;\n }\n if (this.gridOptionsWrapper.isEnableOldSetFilterModel()) {\n // this is a hack, it breaks casting rules, to apply with old model\n return values;\n }\n else {\n return {\n values: values,\n filterType: 'set'\n };\n }\n };\n SetFilter.prototype.areModelsEqual = function (a, b) {\n return false;\n };\n SetFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.checkSetFilterDeprecatedParams(params);\n this.setFilterParams = params;\n this.eCheckedIcon = _.createIconNoSpan('checkboxChecked', this.gridOptionsWrapper, this.setFilterParams.column);\n this.eUncheckedIcon = _.createIconNoSpan('checkboxUnchecked', this.gridOptionsWrapper, this.setFilterParams.column);\n this.eIndeterminateCheckedIcon = _.createIconNoSpan('checkboxIndeterminate', this.gridOptionsWrapper, this.setFilterParams.column);\n if (this.gridOptionsWrapper.useNativeCheckboxes()) {\n this.eSelectAllCheckbox = document.createElement(\"input\");\n this.eSelectAllCheckbox.type = \"checkbox\";\n this.eSelectAllCheckbox.className = \"ag-native-checkbox\";\n this.eSelectAll.appendChild(this.eSelectAllCheckbox);\n }\n this.initialiseFilterBodyUi();\n var syncValuesAfterDataChange = !params.suppressSyncValuesAfterDataChange\n // sync values only with CSRM\n && this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE\n // sync only needed if user not providing values\n && !params.values;\n if (syncValuesAfterDataChange) {\n this.setupSyncValuesAfterDataChange();\n }\n };\n SetFilter.prototype.checkSetFilterDeprecatedParams = function (params) {\n if (params.syncValuesLikeExcel) {\n var message_2 = 'ag-Grid: since version 22.x, the Set Filter param syncValuesLikeExcel is no longer' +\n ' used as this is the default behaviour. To turn this default behaviour off, use the' +\n ' param suppressSyncValuesAfterDataChange';\n _.doOnce(function () { return console.warn(message_2); }, 'syncValuesLikeExcel deprecated');\n }\n if (params.selectAllOnMiniFilter) {\n var message_3 = 'ag-Grid: since version 22.x, the Set Filter param selectAllOnMiniFilter is no longer' +\n ' used as this is the default behaviour.';\n _.doOnce(function () { return console.warn(message_3); }, 'selectAllOnMiniFilter deprecated');\n }\n };\n SetFilter.prototype.resetFilterValuesAndReapplyModel = function () {\n var modelBeforeUpdate = this.getModel();\n this.resetFilterValues();\n if (modelBeforeUpdate) {\n this.setModel(modelBeforeUpdate);\n }\n };\n SetFilter.prototype.setupSyncValuesAfterDataChange = function () {\n var _this = this;\n var col = this.setFilterParams.column;\n var rowDataUpdatedListener = function () {\n _this.resetFilterValuesAndReapplyModel();\n };\n var cellValueChangedListener = function (event) {\n // only interested in changes to do with this column\n if (event.column !== col) {\n return;\n }\n _this.resetFilterValuesAndReapplyModel();\n };\n this.addDestroyableEventListener(this.eventService, Events.EVENT_ROW_DATA_UPDATED, rowDataUpdatedListener);\n this.addDestroyableEventListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, cellValueChangedListener);\n };\n SetFilter.prototype.updateCheckboxIcon = function () {\n if (this.gridOptionsWrapper.useNativeCheckboxes()) {\n this.eSelectAllCheckbox.checked = this.selectAllState === CheckboxState.CHECKED;\n this.eSelectAllCheckbox.indeterminate = this.selectAllState === CheckboxState.INTERMEDIATE;\n }\n else {\n _.clearElement(this.eSelectAll);\n var icon = void 0;\n switch (this.selectAllState) {\n case CheckboxState.INTERMEDIATE:\n icon = this.eIndeterminateCheckedIcon;\n break;\n case CheckboxState.CHECKED:\n icon = this.eCheckedIcon;\n break;\n case CheckboxState.UNCHECKED:\n icon = this.eUncheckedIcon;\n break;\n default: // default happens when initialising for first time\n icon = this.eCheckedIcon;\n break;\n }\n this.eSelectAll.appendChild(icon);\n }\n };\n SetFilter.prototype.setLoading = function (loading) {\n _.setDisplayed(this.eFilterLoading, loading);\n };\n SetFilter.prototype.initialiseFilterBodyUi = function () {\n var _this = this;\n this.virtualList = new VirtualList();\n this.getContext().wireBean(this.virtualList);\n var eSetFilterList = this.getRefElement('eSetFilterList');\n if (eSetFilterList) {\n eSetFilterList.appendChild(this.virtualList.getGui());\n }\n this.virtualList.setComponentCreator(this.createSetListItem.bind(this));\n this.valueModel = new SetValueModel(this.setFilterParams.colDef, this.setFilterParams.rowModel, this.setFilterParams.valueGetter, this.setFilterParams.doesRowPassOtherFilter, this.setFilterParams.suppressSorting, function (values, toSelect) { return _this.setFilterValues(values, toSelect ? false : true, toSelect ? true : false, toSelect); }, this.setLoading.bind(this), this.valueFormatterService, this.setFilterParams.column);\n this.virtualList.setModel(new ModelWrapper(this.valueModel));\n _.setDisplayed(this.getGui().querySelector('#ag-mini-filter'), !this.setFilterParams.suppressMiniFilter);\n this.eMiniFilter.value = this.valueModel.getMiniFilter();\n this.addDestroyableEventListener(this.eMiniFilter, 'input', this.onMiniFilterInput.bind(this));\n this.addDestroyableEventListener(this.eMiniFilter, 'keypress', this.onMiniFilterKeyPress.bind(this));\n this.updateCheckboxIcon();\n this.addDestroyableEventListener(this.eSelectAllContainer, 'click', this.onSelectAll.bind(this));\n this.updateSelectAll();\n if (this.setFilterParams.suppressSelectAll) {\n _.setDisplayed(this.eSelectAllContainer, false);\n }\n this.virtualList.refresh();\n };\n SetFilter.prototype.createSetListItem = function (value) {\n var _this = this;\n var listItem = new SetFilterListItem(value, this.setFilterParams.column);\n this.getContext().wireBean(listItem);\n listItem.setSelected(this.valueModel.isValueSelected(value));\n listItem.addEventListener(SetFilterListItem.EVENT_SELECTED, function () {\n _this.onItemSelected(value, listItem.isSelected());\n });\n return listItem;\n };\n // we need to have the gui attached before we can draw the virtual rows, as the\n // virtual row logic needs info about the gui state\n SetFilter.prototype.afterGuiAttached = function (params) {\n this.virtualList.refresh();\n this.eMiniFilter.focus();\n };\n SetFilter.prototype.refreshVirtualList = function () {\n this.virtualList.refresh();\n };\n SetFilter.prototype.applyModel = function () {\n var _this = this;\n var res = _super.prototype.applyModel.call(this);\n // keep the appliedModelValuesMapped in sync with the applied model\n var appliedModel = this.getModel();\n if (appliedModel) {\n this.appliedModelValuesMapped = {};\n appliedModel.values.forEach(function (value) { return _this.appliedModelValuesMapped[value] = true; });\n }\n else {\n this.appliedModelValuesMapped = undefined;\n }\n return res;\n };\n SetFilter.prototype.doesFilterPass = function (params) {\n // should never happen, if filter model not set, then this method should never be called\n if (!this.appliedModelValuesMapped) {\n return true;\n }\n var value = this.setFilterParams.valueGetter(params.node);\n if (this.setFilterParams.colDef.keyCreator) {\n value = this.setFilterParams.colDef.keyCreator({ value: value });\n }\n value = _.makeNull(value);\n if (Array.isArray(value)) {\n for (var i = 0; i < value.length; i++) {\n var valueExistsInMap = !!this.appliedModelValuesMapped[value[i]];\n if (valueExistsInMap) {\n return true;\n }\n }\n return false;\n }\n return !!this.appliedModelValuesMapped[value];\n };\n SetFilter.prototype.onNewRowsLoaded = function () {\n var valuesType = this.valueModel.getValuesType();\n var valuesTypeProvided = valuesType === SetFilterModelValuesType.PROVIDED_CB\n || valuesType === SetFilterModelValuesType.PROVIDED_LIST;\n // if the user is providing values, and we are keeping the previous selection, then\n // loading new rows into the grid should have no impact.\n var newRowsActionKeep = this.isNewRowsActionKeep();\n if (newRowsActionKeep && valuesTypeProvided) {\n return;\n }\n var everythingSelected = !this.getModel();\n // default is reset\n this.valueModel.refreshAfterNewRowsLoaded(newRowsActionKeep, everythingSelected);\n this.updateSelectAll();\n this.virtualList.refresh();\n this.applyModel();\n };\n //noinspection JSUnusedGlobalSymbols\n /**\n * Public method provided so the user can change the value of the filter once\n * the filter has been already started\n * @param options The options to use.\n * @param selectAll If by default all the values should be selected.\n * @param notify If we should let know the model that the values of the filter have changed\n * @param toSelect The subset of options to subselect\n */\n SetFilter.prototype.setFilterValues = function (options, selectAll, notify, toSelect) {\n var _this = this;\n if (selectAll === void 0) { selectAll = false; }\n if (notify === void 0) { notify = true; }\n this.valueModel.onFilterValuesReady(function () {\n var keepSelection = _this.setFilterParams && _this.setFilterParams.newRowsAction === 'keep';\n _this.valueModel.setValuesType(SetFilterModelValuesType.PROVIDED_LIST);\n _this.valueModel.refreshValues(options, keepSelection, selectAll);\n _this.updateSelectAll();\n var actualToSelect = toSelect ? toSelect : options;\n actualToSelect.forEach(function (option) { return _this.valueModel.selectValue(option); });\n _this.virtualList.refresh();\n if (notify) {\n // this.onUiChangedListener(true);\n _this.onUiChanged();\n }\n });\n };\n //noinspection JSUnusedGlobalSymbols\n /**\n * Public method provided so the user can reset the values of the filter once that it has started\n * @param options The options to use.\n */\n SetFilter.prototype.resetFilterValues = function () {\n this.valueModel.setValuesType(SetFilterModelValuesType.NOT_PROVIDED);\n this.onNewRowsLoaded();\n };\n SetFilter.prototype.onAnyFilterChanged = function () {\n this.valueModel.refreshAfterAnyFilterChanged();\n this.virtualList.refresh();\n };\n SetFilter.prototype.updateSelectAll = function () {\n if (this.valueModel.isEverythingSelected()) {\n this.selectAllState = CheckboxState.CHECKED;\n }\n else if (this.valueModel.isNothingSelected()) {\n this.selectAllState = CheckboxState.UNCHECKED;\n }\n else {\n this.selectAllState = CheckboxState.INTERMEDIATE;\n }\n this.updateCheckboxIcon();\n };\n SetFilter.prototype.onMiniFilterKeyPress = function (e) {\n if (_.isKeyPressed(e, Constants.KEY_ENTER)) {\n this.onEnterKeyOnMiniFilter();\n }\n };\n SetFilter.prototype.onEnterKeyOnMiniFilter = function () {\n this.valueModel.selectAllFromMiniFilter();\n this.virtualList.refresh();\n this.updateSelectAll();\n this.onUiChanged();\n };\n SetFilter.prototype.onMiniFilterInput = function () {\n var miniFilterChanged = this.valueModel.setMiniFilter(this.eMiniFilter.value);\n if (miniFilterChanged) {\n this.virtualList.refresh();\n }\n this.updateSelectAll();\n };\n SetFilter.prototype.onSelectAll = function (event) {\n event.preventDefault();\n _.addAgGridEventPath(event);\n if (this.selectAllState === CheckboxState.CHECKED) {\n this.selectAllState = CheckboxState.UNCHECKED;\n }\n else {\n this.selectAllState = CheckboxState.CHECKED;\n }\n this.doSelectAll();\n };\n SetFilter.prototype.doSelectAll = function () {\n var checked = this.selectAllState === CheckboxState.CHECKED;\n if (checked) {\n this.valueModel.selectAllUsingMiniFilter();\n }\n else {\n this.valueModel.selectNothingUsingMiniFilter();\n }\n this.virtualList.refresh();\n this.onUiChanged();\n this.updateSelectAll();\n };\n SetFilter.prototype.onItemSelected = function (value, selected) {\n if (selected) {\n this.valueModel.selectValue(value);\n }\n else {\n this.valueModel.unselectValue(value);\n }\n this.updateSelectAll();\n this.onUiChanged();\n };\n SetFilter.prototype.setMiniFilter = function (newMiniFilter) {\n this.valueModel.setMiniFilter(newMiniFilter);\n this.eMiniFilter.value = this.valueModel.getMiniFilter();\n };\n SetFilter.prototype.getMiniFilter = function () {\n return this.valueModel.getMiniFilter();\n };\n SetFilter.prototype.selectEverything = function () {\n this.valueModel.selectAllUsingMiniFilter();\n this.updateSelectAll();\n this.virtualList.refresh();\n };\n SetFilter.prototype.selectNothing = function () {\n this.valueModel.selectNothingUsingMiniFilter();\n this.updateSelectAll();\n this.virtualList.refresh();\n };\n SetFilter.prototype.unselectValue = function (value) {\n this.valueModel.unselectValue(value);\n this.updateSelectAll();\n this.virtualList.refresh();\n };\n SetFilter.prototype.selectValue = function (value) {\n this.valueModel.selectValue(value);\n this.updateSelectAll();\n this.virtualList.refresh();\n };\n SetFilter.prototype.isValueSelected = function (value) {\n return this.valueModel.isValueSelected(value);\n };\n SetFilter.prototype.isEverythingSelected = function () {\n return this.valueModel.isEverythingSelected();\n };\n SetFilter.prototype.isNothingSelected = function () {\n return this.valueModel.isNothingSelected();\n };\n SetFilter.prototype.getUniqueValueCount = function () {\n return this.valueModel.getUniqueValueCount();\n };\n SetFilter.prototype.getUniqueValue = function (index) {\n return this.valueModel.getUniqueValue(index);\n };\n __decorate([\n RefSelector('eSelectAll')\n ], SetFilter.prototype, \"eSelectAll\", void 0);\n __decorate([\n RefSelector('eSelectAllContainer')\n ], SetFilter.prototype, \"eSelectAllContainer\", void 0);\n __decorate([\n RefSelector('eMiniFilter')\n ], SetFilter.prototype, \"eMiniFilter\", void 0);\n __decorate([\n RefSelector('ag-filter-loading')\n ], SetFilter.prototype, \"eFilterLoading\", void 0);\n __decorate([\n Autowired('valueFormatterService')\n ], SetFilter.prototype, \"valueFormatterService\", void 0);\n __decorate([\n Autowired('eventService')\n ], SetFilter.prototype, \"eventService\", void 0);\n return SetFilter;\n}(ProvidedFilter));\nexport { SetFilter };\nvar ModelWrapper = /** @class */ (function () {\n function ModelWrapper(model) {\n this.model = model;\n }\n ModelWrapper.prototype.getRowCount = function () {\n return this.model.getDisplayedValueCount();\n };\n ModelWrapper.prototype.getRow = function (index) {\n return this.model.getDisplayedValue(index);\n };\n return ModelWrapper;\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 { _, Autowired, Component, PostConstruct } from \"@ag-grid-community/core\";\nvar SetFilterListItem = /** @class */ (function (_super) {\n __extends(SetFilterListItem, _super);\n function SetFilterListItem(value, column) {\n var _this = _super.call(this, SetFilterListItem.TEMPLATE) || this;\n _this.selected = true;\n _this.value = value;\n _this.column = column;\n return _this;\n }\n SetFilterListItem.prototype.useCellRenderer = function (target, eTarget, params) {\n var cellRendererPromise = this.userComponentFactory.newCellRenderer(target.filterParams, params);\n if (cellRendererPromise != null) {\n _.bindCellRendererToHtmlElement(cellRendererPromise, eTarget);\n }\n else {\n if (params.valueFormatted == null && params.value == null) {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n eTarget.innerText = '(' + localeTextFunc('blanks', 'Blanks') + ')';\n }\n else {\n eTarget.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n }\n return cellRendererPromise;\n };\n SetFilterListItem.prototype.init = function () {\n var _this = this;\n this.eCheckedIcon = _.createIconNoSpan('checkboxChecked', this.gridOptionsWrapper, this.column);\n this.eUncheckedIcon = _.createIconNoSpan('checkboxUnchecked', this.gridOptionsWrapper, this.column);\n this.eCheckbox = this.queryForHtmlElement('.ag-filter-checkbox');\n if (this.gridOptionsWrapper.useNativeCheckboxes()) {\n this.eNativeCheckbox = document.createElement('input');\n this.eNativeCheckbox.type = 'checkbox';\n this.eNativeCheckbox.className = 'ag-native-checkbox';\n this.eCheckbox.appendChild(this.eNativeCheckbox);\n }\n this.eClickableArea = this.getGui();\n this.updateCheckboxIcon();\n this.render();\n var listener = function (mouseEvent) {\n mouseEvent.preventDefault();\n _.addAgGridEventPath(mouseEvent);\n _this.selected = !_this.selected;\n _this.updateCheckboxIcon();\n var event = {\n type: SetFilterListItem.EVENT_SELECTED\n };\n return _this.dispatchEvent(event);\n };\n this.addDestroyableEventListener(this.eClickableArea, 'click', listener);\n };\n SetFilterListItem.prototype.isSelected = function () {\n return this.selected;\n };\n SetFilterListItem.prototype.setSelected = function (selected) {\n this.selected = selected;\n this.updateCheckboxIcon();\n };\n SetFilterListItem.prototype.updateCheckboxIcon = function () {\n if (this.gridOptionsWrapper.useNativeCheckboxes()) {\n this.eNativeCheckbox.checked = this.isSelected();\n }\n else {\n _.clearElement(this.eCheckbox);\n if (this.isSelected()) {\n this.eCheckbox.appendChild(this.eCheckedIcon);\n }\n else {\n this.eCheckbox.appendChild(this.eUncheckedIcon);\n }\n }\n };\n SetFilterListItem.prototype.render = function () {\n var _this = this;\n var valueElement = this.queryForHtmlElement('.ag-filter-value');\n var valueFormatted = this.valueFormatterService.formatValue(this.column, null, null, this.value);\n var colDef = this.column.getColDef();\n var params = {\n value: this.value,\n valueFormatted: valueFormatted,\n api: this.gridOptionsWrapper.getApi()\n };\n var componentPromise = this.useCellRenderer(colDef, valueElement, params);\n if (!componentPromise) {\n return;\n }\n componentPromise.then(function (component) {\n if (component && component.destroy) {\n _this.addDestroyFunc(component.destroy.bind(component));\n }\n });\n };\n SetFilterListItem.EVENT_SELECTED = 'selected';\n SetFilterListItem.TEMPLATE = \"\";\n __decorate([\n Autowired('gridOptionsWrapper')\n ], SetFilterListItem.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('valueFormatterService')\n ], SetFilterListItem.prototype, \"valueFormatterService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], SetFilterListItem.prototype, \"userComponentFactory\", void 0);\n __decorate([\n PostConstruct\n ], SetFilterListItem.prototype, \"init\", null);\n return SetFilterListItem;\n}(Component));\nexport { SetFilterListItem };\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, RefSelector } from \"@ag-grid-community/core\";\nvar SetFloatingFilterComp = /** @class */ (function (_super) {\n __extends(SetFloatingFilterComp, _super);\n function SetFloatingFilterComp() {\n return _super.call(this, \"
\") || this;\n }\n SetFloatingFilterComp.prototype.init = function (params) {\n this.eFloatingFilterText.disabled = true;\n this.column = params.column;\n };\n SetFloatingFilterComp.prototype.onParentModelChanged = function (parentModel) {\n var _this = this;\n if (!parentModel) {\n this.eFloatingFilterText.value = '';\n return;\n }\n // also supporting old filter model for backwards compatibility\n var values = (parentModel instanceof Array) ? parentModel : parentModel.values;\n if (!values || values.length === 0) {\n this.eFloatingFilterText.value = '';\n return;\n }\n // format all the values, if a formatter is provided\n var formattedValues = values.map(function (value) {\n var formattedValue = _this.valueFormatterService.formatValue(_this.column, null, null, value);\n return formattedValue != null ? formattedValue : value;\n });\n var arrayToDisplay = formattedValues.length > 10 ? formattedValues.slice(0, 10).concat('...') : formattedValues;\n var valuesString = \"(\" + values.length + \") \" + arrayToDisplay.join(\",\");\n this.eFloatingFilterText.value = valuesString;\n };\n __decorate([\n RefSelector('eFloatingFilterText')\n ], SetFloatingFilterComp.prototype, \"eFloatingFilterText\", void 0);\n __decorate([\n Autowired('valueFormatterService')\n ], SetFloatingFilterComp.prototype, \"valueFormatterService\", void 0);\n return SetFloatingFilterComp;\n}(Component));\nexport { SetFloatingFilterComp };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { SetFilter } from \"./setFilter/setFilter\";\nimport { SetFloatingFilterComp } from \"./setFilter/setFloatingFilter\";\nexport var SetFilterModule = {\n moduleName: ModuleNames.SetFilterModule,\n beans: [],\n userComponents: [\n { componentName: 'agSetColumnFilter', componentClass: SetFilter },\n { componentName: 'agSetColumnFloatingFilter', componentClass: SetFloatingFilterComp },\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","export { SetFilterModule } from \"./setFilterModule\";\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 __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Autowired, PostConstruct, Qualifier, _, RowNodeBlock } from \"@ag-grid-community/core\";\nvar ServerSideBlock = /** @class */ (function (_super) {\n __extends(ServerSideBlock, _super);\n function ServerSideBlock(pageNumber, parentRowNode, params, parentCache) {\n var _this = _super.call(this, pageNumber, params) || this;\n _this.params = params;\n _this.parentRowNode = parentRowNode;\n _this.parentCache = parentCache;\n _this.level = parentRowNode.level + 1;\n _this.groupLevel = params.rowGroupCols ? _this.level < params.rowGroupCols.length : undefined;\n _this.leafGroup = params.rowGroupCols ? _this.level === params.rowGroupCols.length - 1 : false;\n return _this;\n }\n ServerSideBlock.prototype.init = function () {\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n this.usingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n if (!this.usingTreeData && this.groupLevel) {\n var groupColVo = this.params.rowGroupCols[this.level];\n this.groupField = groupColVo.field;\n this.rowGroupColumn = this.columnController.getRowGroupColumns()[this.level];\n }\n this.createNodeIdPrefix();\n _super.prototype.init.call(this, {\n context: this.getContext(),\n rowRenderer: this.rowRenderer\n });\n };\n ServerSideBlock.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ServerSideBlock');\n };\n ServerSideBlock.prototype.createNodeIdPrefix = function () {\n var parts = [];\n var rowNode = this.parentRowNode;\n // pull keys from all parent nodes, but do not include the root node\n while (rowNode && rowNode.level >= 0) {\n parts.push(rowNode.key);\n rowNode = rowNode.parent;\n }\n if (parts.length > 0) {\n this.nodeIdPrefix = parts.reverse().join('-') + '-';\n }\n };\n ServerSideBlock.prototype.createIdForIndex = function (index) {\n if (_.exists(this.nodeIdPrefix)) {\n return this.nodeIdPrefix + index.toString();\n }\n else {\n return index.toString();\n }\n };\n ServerSideBlock.prototype.getNodeIdPrefix = function () {\n return this.nodeIdPrefix;\n };\n ServerSideBlock.prototype.getRow = function (displayRowIndex) {\n var bottomPointer = this.getStartRow();\n // the end row depends on whether all this block is used or not. if the virtual row count\n // is before the end, then not all the row is used\n var virtualRowCount = this.parentCache.getVirtualRowCount();\n var endRow = this.getEndRow();\n var actualEnd = (virtualRowCount < endRow) ? virtualRowCount : endRow;\n var topPointer = actualEnd - 1;\n if (_.missing(topPointer) || _.missing(bottomPointer)) {\n console.warn(\"ag-grid: error: topPointer = \" + topPointer + \", bottomPointer = \" + bottomPointer);\n return null;\n }\n while (true) {\n var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n var currentRowNode = _super.prototype.getRowUsingLocalIndex.call(this, midPointer);\n // first check current row for index\n if (currentRowNode.rowIndex === displayRowIndex) {\n return currentRowNode;\n }\n // then check if current row contains a detail row with the index\n var expandedMasterRow = currentRowNode.master && currentRowNode.expanded;\n if (expandedMasterRow && currentRowNode.detailNode.rowIndex === displayRowIndex) {\n return currentRowNode.detailNode;\n }\n // then check if child cache contains index\n var childrenCache = currentRowNode.childrenCache;\n if (currentRowNode.expanded && childrenCache && childrenCache.isDisplayIndexInCache(displayRowIndex)) {\n return childrenCache.getRow(displayRowIndex);\n }\n // otherwise adjust pointers to continue searching for index\n if (currentRowNode.rowIndex < displayRowIndex) {\n bottomPointer = midPointer + 1;\n }\n else if (currentRowNode.rowIndex > displayRowIndex) {\n topPointer = midPointer - 1;\n }\n else {\n console.warn(\"ag-Grid: error: unable to locate rowIndex = \" + displayRowIndex + \" in cache\");\n return null;\n }\n }\n };\n ServerSideBlock.prototype.setDataAndId = function (rowNode, data, index) {\n var _this = this;\n rowNode.stub = false;\n if (_.exists(data)) {\n // if the user is not providing id's, then we build an id based on the index.\n // for infinite scrolling, the index is used on it's own. for Server Side Row Model,\n // we combine the index with the level and group key, so that the id is\n // unique across the set.\n //\n // unique id is needed for selection (so selection can be maintained when\n // doing server side sorting / filtering) - if user is not providing id's\n // (and we use the indexes) then selection will not work between sorting &\n // filtering.\n //\n // id's are also used by the row renderer for updating the dom as it identifies\n // rowNodes by id\n var idToUse = this.createIdForIndex(index);\n rowNode.setDataAndId(data, idToUse);\n rowNode.setRowHeight(this.gridOptionsWrapper.getRowHeightForNode(rowNode).height);\n if (this.usingTreeData) {\n var getServerSideGroupKey = this.gridOptionsWrapper.getServerSideGroupKeyFunc();\n if (_.exists(getServerSideGroupKey) && getServerSideGroupKey) {\n rowNode.key = getServerSideGroupKey(rowNode.data);\n }\n var isServerSideGroup = this.gridOptionsWrapper.getIsServerSideGroupFunc();\n if (_.exists(isServerSideGroup) && isServerSideGroup) {\n rowNode.group = isServerSideGroup(rowNode.data);\n }\n }\n else if (rowNode.group) {\n rowNode.key = this.valueService.getValue(this.rowGroupColumn, rowNode);\n if (rowNode.key === null || rowNode.key === undefined) {\n _.doOnce(function () {\n console.warn(\"null and undefined values are not allowed for server side row model keys\");\n if (_this.rowGroupColumn) {\n console.warn(\"column = \" + _this.rowGroupColumn.getId());\n }\n console.warn(\"data is \", rowNode.data);\n }, 'ServerSideBlock-CannotHaveNullOrUndefinedForKey');\n }\n }\n else if (this.usingMasterDetail) {\n var isRowMasterFunc = this.gridOptionsWrapper.getIsRowMasterFunc();\n if (_.exists(isRowMasterFunc) && isRowMasterFunc) {\n rowNode.master = isRowMasterFunc(rowNode.data);\n }\n else {\n rowNode.master = true;\n }\n }\n }\n else {\n rowNode.setDataAndId(undefined, undefined);\n rowNode.key = null;\n }\n if (this.usingTreeData || this.groupLevel) {\n this.setGroupDataIntoRowNode(rowNode);\n this.setChildCountIntoRowNode(rowNode);\n }\n };\n ServerSideBlock.prototype.setChildCountIntoRowNode = function (rowNode) {\n var getChildCount = this.gridOptionsWrapper.getChildCountFunc();\n if (getChildCount) {\n rowNode.allChildrenCount = getChildCount(rowNode.data);\n }\n };\n ServerSideBlock.prototype.setGroupDataIntoRowNode = function (rowNode) {\n var _this = this;\n var groupDisplayCols = this.columnController.getGroupDisplayColumns();\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n groupDisplayCols.forEach(function (col) {\n if (usingTreeData) {\n if (_.missing(rowNode.groupData)) {\n rowNode.groupData = {};\n }\n rowNode.groupData[col.getColId()] = rowNode.key;\n }\n else if (col.isRowGroupDisplayed(_this.rowGroupColumn.getId())) {\n var groupValue = _this.valueService.getValue(_this.rowGroupColumn, rowNode);\n if (_.missing(rowNode.groupData)) {\n rowNode.groupData = {};\n }\n rowNode.groupData[col.getColId()] = groupValue;\n }\n });\n };\n ServerSideBlock.prototype.loadFromDatasource = function () {\n var _this = this;\n var params = this.createLoadParams();\n window.setTimeout(function () {\n if (_this.params.datasource) {\n _this.params.datasource.getRows(params);\n }\n }, 0);\n };\n ServerSideBlock.prototype.createBlankRowNode = function (rowIndex) {\n var rowNode = _super.prototype.createBlankRowNode.call(this, rowIndex);\n rowNode.group = this.groupLevel;\n rowNode.leafGroup = this.leafGroup;\n rowNode.level = this.level;\n rowNode.uiLevel = this.level;\n rowNode.parent = this.parentRowNode;\n // stub gets set to true here, and then false when this rowNode gets it's data\n rowNode.stub = true;\n if (rowNode.group) {\n rowNode.expanded = false;\n rowNode.field = this.groupField;\n rowNode.rowGroupColumn = this.rowGroupColumn;\n }\n return rowNode;\n };\n ServerSideBlock.prototype.createGroupKeys = function (groupNode) {\n var keys = [];\n var pointer = groupNode;\n while (pointer && pointer.level >= 0) {\n keys.push(pointer.key);\n pointer = pointer.parent;\n }\n keys.reverse();\n return keys;\n };\n ServerSideBlock.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.blockTop && pixel < (this.blockTop + this.blockHeight);\n };\n ServerSideBlock.prototype.getRowBounds = function (index, virtualRowCount) {\n var start = this.getStartRow();\n var end = this.getEndRow();\n var extractRowBounds = function (rowNode) {\n return {\n rowHeight: rowNode.rowHeight,\n rowTop: rowNode.rowTop\n };\n };\n for (var i = start; i <= end; i++) {\n // the blocks can have extra rows in them, if they are the last block\n // in the cache and the virtual row count doesn't divide evenly by the\n if (i >= virtualRowCount) {\n continue;\n }\n var rowNode = this.getRowUsingLocalIndex(i);\n if (rowNode) {\n if (rowNode.rowIndex === index) {\n return extractRowBounds(rowNode);\n }\n if (rowNode.group && rowNode.expanded && _.exists(rowNode.childrenCache)) {\n var serverSideCache = rowNode.childrenCache;\n if (serverSideCache.isDisplayIndexInCache(index)) {\n return serverSideCache.getRowBounds(index);\n }\n }\n else if (rowNode.master && rowNode.expanded && _.exists(rowNode.detailNode)) {\n if (rowNode.detailNode.rowIndex === index) {\n return extractRowBounds(rowNode.detailNode);\n }\n }\n }\n }\n console.error(\" ag-Grid: looking for invalid row index in Server Side Row Model, index=\" + index);\n return null;\n };\n ServerSideBlock.prototype.getRowIndexAtPixel = function (pixel, virtualRowCount) {\n var start = this.getStartRow();\n var end = this.getEndRow();\n for (var i = start; i <= end; i++) {\n // the blocks can have extra rows in them, if they are the last block\n // in the cache and the virtual row count doesn't divide evenly by the\n if (i >= virtualRowCount) {\n continue;\n }\n var rowNode = this.getRowUsingLocalIndex(i);\n if (rowNode) {\n // first check if pixel is in range of current row\n if (rowNode.isPixelInRange(pixel)) {\n return rowNode.rowIndex;\n }\n // then check if current row contains a detail row with pixel in range\n var expandedMasterRow = rowNode.master && rowNode.expanded;\n if (expandedMasterRow && rowNode.detailNode.isPixelInRange(pixel)) {\n return rowNode.detailNode.rowIndex;\n }\n // then check if it's a group row with a child cache with pixel in range\n if (rowNode.group && rowNode.expanded && _.exists(rowNode.childrenCache)) {\n var serverSideCache = rowNode.childrenCache;\n if (serverSideCache.isPixelInRange(pixel)) {\n return serverSideCache.getRowIndexAtPixel(pixel);\n }\n }\n }\n }\n console.warn(\"ag-Grid: invalid pixel range for server side block \" + pixel);\n return 0;\n };\n ServerSideBlock.prototype.clearRowTops = function (virtualRowCount) {\n this.forEachRowNode(virtualRowCount, function (rowNode) {\n rowNode.clearRowTop();\n var hasChildCache = rowNode.group && _.exists(rowNode.childrenCache);\n if (hasChildCache) {\n var serverSideCache = rowNode.childrenCache;\n serverSideCache.clearRowTops();\n }\n });\n };\n ServerSideBlock.prototype.setDisplayIndexes = function (displayIndexSeq, virtualRowCount, nextRowTop) {\n this.displayIndexStart = displayIndexSeq.peek();\n this.blockTop = nextRowTop.value;\n this.forEachRowNode(virtualRowCount, function (rowNode) {\n rowNode.setRowIndex(displayIndexSeq.next());\n rowNode.setRowTop(nextRowTop.value);\n nextRowTop.value += rowNode.rowHeight;\n var hasDetailRow = rowNode.master && rowNode.expanded;\n if (hasDetailRow) {\n rowNode.detailNode.setRowIndex(displayIndexSeq.next());\n rowNode.detailNode.setRowTop(nextRowTop.value);\n nextRowTop.value += rowNode.detailNode.rowHeight;\n }\n var hasChildCache = rowNode.group && _.exists(rowNode.childrenCache);\n if (hasChildCache) {\n var serverSideCache = rowNode.childrenCache;\n if (rowNode.expanded) {\n serverSideCache.setDisplayIndexes(displayIndexSeq, nextRowTop);\n }\n else {\n // we need to clear the row tops, as the row renderer depends on\n // this to know if the row should be faded out\n serverSideCache.clearRowTops();\n }\n }\n });\n this.displayIndexEnd = displayIndexSeq.peek();\n this.blockHeight = nextRowTop.value - this.blockTop;\n };\n ServerSideBlock.prototype.forEachRowNode = function (virtualRowCount, callback) {\n var start = this.getStartRow();\n var end = this.getEndRow();\n for (var i = start; i <= end; i++) {\n // the blocks can have extra rows in them, if they are the last block\n // in the cache and the virtual row count doesn't divide evenly by the\n if (i >= virtualRowCount) {\n continue;\n }\n var rowNode = this.getRowUsingLocalIndex(i);\n if (rowNode) {\n callback(rowNode);\n }\n }\n };\n ServerSideBlock.prototype.createLoadParams = function () {\n var groupKeys = this.createGroupKeys(this.parentRowNode);\n var request = {\n startRow: this.getStartRow(),\n endRow: this.getEndRow(),\n rowGroupCols: this.params.rowGroupCols,\n valueCols: this.params.valueCols,\n pivotCols: this.params.pivotCols,\n pivotMode: this.params.pivotMode,\n groupKeys: groupKeys,\n filterModel: this.params.filterModel,\n sortModel: this.params.sortModel\n };\n var params = {\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this),\n request: request,\n parentNode: this.parentRowNode\n };\n return params;\n };\n ServerSideBlock.prototype.isDisplayIndexInBlock = function (displayIndex) {\n return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n };\n ServerSideBlock.prototype.isBlockBefore = function (displayIndex) {\n return displayIndex >= this.displayIndexEnd;\n };\n ServerSideBlock.prototype.getDisplayIndexStart = function () {\n return this.displayIndexStart;\n };\n ServerSideBlock.prototype.getDisplayIndexEnd = function () {\n return this.displayIndexEnd;\n };\n ServerSideBlock.prototype.getBlockHeight = function () {\n return this.blockHeight;\n };\n ServerSideBlock.prototype.getBlockTop = function () {\n return this.blockTop;\n };\n ServerSideBlock.prototype.isGroupLevel = function () {\n return this.groupLevel;\n };\n ServerSideBlock.prototype.getGroupField = function () {\n return this.groupField;\n };\n ServerSideBlock.DefaultBlockSize = 100;\n __decorate([\n Autowired('rowRenderer')\n ], ServerSideBlock.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('columnController')\n ], ServerSideBlock.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('valueService')\n ], ServerSideBlock.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ServerSideBlock.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], ServerSideBlock.prototype, \"init\", null);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], ServerSideBlock.prototype, \"setBeans\", null);\n return ServerSideBlock;\n}(RowNodeBlock));\nexport { ServerSideBlock };\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 __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { _, Autowired, NumberSequence, PostConstruct, Qualifier, RowNodeCache } from \"@ag-grid-community/core\";\nimport { ServerSideBlock } from \"./serverSideBlock\";\nvar ServerSideCache = /** @class */ (function (_super) {\n __extends(ServerSideCache, _super);\n function ServerSideCache(cacheParams, parentRowNode) {\n var _this = _super.call(this, cacheParams) || this;\n // this will always be zero for the top level cache only,\n // all the other ones change as the groups open and close\n _this.displayIndexStart = 0;\n _this.displayIndexEnd = 0; // not sure if setting this one to zero is necessary\n _this.cacheTop = 0;\n _this.blockHeights = {};\n _this.parentRowNode = parentRowNode;\n return _this;\n }\n ServerSideCache.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ServerSideCache');\n };\n ServerSideCache.prototype.init = function () {\n _super.prototype.init.call(this);\n };\n ServerSideCache.prototype.getRowBounds = function (index) {\n var _this = this;\n this.logger.log(\"getRowBounds(\" + index + \")\");\n // we return null if row not found\n // note - cast to \"any\" due to https://github.com/Microsoft/TypeScript/issues/11498\n // should be RowBounds\n var result;\n var blockFound = false;\n // note - cast to \"any\" due to https://github.com/Microsoft/TypeScript/issues/11498\n // should be ServerSideBlock\n var lastBlock = null;\n this.forEachBlockInOrder(function (block) {\n if (blockFound) {\n return;\n }\n if (block.isDisplayIndexInBlock(index)) {\n result = block.getRowBounds(index, _this.getVirtualRowCount());\n blockFound = true;\n }\n else if (block.isBlockBefore(index)) {\n lastBlock = block;\n }\n });\n if (!blockFound) {\n var nextRowTop = void 0;\n var nextRowIndex = void 0;\n if (lastBlock !== null) {\n nextRowTop = lastBlock.getBlockTop() + lastBlock.getBlockHeight();\n nextRowIndex = lastBlock.getDisplayIndexEnd();\n }\n else {\n nextRowTop = this.cacheTop;\n nextRowIndex = this.displayIndexStart;\n }\n var rowsBetween = index - nextRowIndex;\n result = {\n rowHeight: this.cacheParams.rowHeight,\n rowTop: nextRowTop + rowsBetween * this.cacheParams.rowHeight\n };\n }\n // NOTE: what about purged blocks\n this.logger.log(\"getRowBounds(\" + index + \"), result = \" + result);\n return result;\n };\n ServerSideCache.prototype.destroyBlock = function (block) {\n _super.prototype.destroyBlock.call(this, block);\n };\n ServerSideCache.prototype.getRowIndexAtPixel = function (pixel) {\n var _this = this;\n this.logger.log(\"getRowIndexAtPixel(\" + pixel + \")\");\n // we return null if row not found\n // note - cast to \"any\" due to https://github.com/Microsoft/TypeScript/issues/11498\n // should be number\n var result;\n var blockFound = false;\n // note - cast to \"any\" due to https://github.com/Microsoft/TypeScript/issues/11498\n // should be ServerSideBlock\n var lastBlock;\n this.forEachBlockInOrder(function (block) {\n if (blockFound) {\n return;\n }\n if (block.isPixelInRange(pixel)) {\n result = block.getRowIndexAtPixel(pixel, _this.getVirtualRowCount());\n blockFound = true;\n }\n else if (block.getBlockTop() < pixel) {\n lastBlock = block;\n }\n });\n if (!blockFound) {\n var nextRowTop = void 0;\n var nextRowIndex = void 0;\n if (lastBlock) {\n nextRowTop = lastBlock.getBlockTop() + lastBlock.getBlockHeight();\n nextRowIndex = lastBlock.getDisplayIndexEnd();\n }\n else {\n nextRowTop = this.cacheTop;\n nextRowIndex = this.displayIndexStart;\n }\n var pixelsBetween = pixel - nextRowTop;\n var rowsBetween = (pixelsBetween / this.cacheParams.rowHeight) | 0;\n result = nextRowIndex + rowsBetween;\n }\n var lastAllowedIndex = this.getDisplayIndexEnd() - 1;\n if (result > lastAllowedIndex) {\n result = lastAllowedIndex;\n }\n //NOTE: purged\n this.logger.log(\"getRowIndexAtPixel(\" + pixel + \") result = \" + result);\n return result;\n };\n ServerSideCache.prototype.clearRowTops = function () {\n var _this = this;\n this.forEachBlockInOrder(function (block) { return block.clearRowTops(_this.getVirtualRowCount()); });\n };\n ServerSideCache.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n var _this = this;\n this.displayIndexStart = displayIndexSeq.peek();\n this.cacheTop = nextRowTop.value;\n var lastBlockId = -1;\n var blockSize = this.getBlockSize();\n this.forEachBlockInOrder(function (currentBlock, blockId) {\n // if we skipped blocks, then we need to skip the row indexes. we assume that all missing\n // blocks are made up of closed RowNodes only (if they were groups), as we never expire from\n // the cache if any row nodes are open.\n var blocksSkippedCount = blockId - lastBlockId - 1;\n var rowsSkippedCount = blocksSkippedCount * blockSize;\n if (rowsSkippedCount > 0) {\n displayIndexSeq.skip(rowsSkippedCount);\n }\n for (var i = 1; i <= blocksSkippedCount; i++) {\n var blockToAddId = blockId - i;\n if (_.exists(_this.blockHeights[blockToAddId])) {\n nextRowTop.value += _this.blockHeights[blockToAddId];\n }\n else {\n nextRowTop.value += blockSize * _this.cacheParams.rowHeight;\n }\n }\n lastBlockId = blockId;\n currentBlock.setDisplayIndexes(displayIndexSeq, _this.getVirtualRowCount(), nextRowTop);\n _this.blockHeights[blockId] = currentBlock.getBlockHeight();\n });\n // if any blocks missing at the end, need to increase the row index for them also\n // eg if block size = 10, we have total rows of 25 (indexes 0 .. 24), but first 2 blocks loaded (because\n // last row was ejected from cache), then:\n // lastVisitedRow = 19, virtualRowCount = 25, rows not accounted for = 5 (24 - 19)\n var lastVisitedRow = ((lastBlockId + 1) * blockSize) - 1;\n var rowCount = this.getVirtualRowCount();\n var rowsNotAccountedFor = rowCount - lastVisitedRow - 1;\n if (rowsNotAccountedFor > 0) {\n displayIndexSeq.skip(rowsNotAccountedFor);\n nextRowTop.value += rowsNotAccountedFor * this.cacheParams.rowHeight;\n }\n this.displayIndexEnd = displayIndexSeq.peek();\n this.cacheHeight = nextRowTop.value - this.cacheTop;\n };\n // gets called in a) init() above and b) by the grid\n ServerSideCache.prototype.getRow = function (displayRowIndex, dontCreateBlock) {\n if (dontCreateBlock === void 0) { dontCreateBlock = false; }\n // this can happen if asking for a row that doesn't exist in the model,\n // eg if a cell range is selected, and the user filters so rows no longer\n // exist\n if (!this.isDisplayIndexInCache(displayRowIndex)) {\n return null;\n }\n // if we have the block, then this is the block\n var block = null;\n // this is the last block that we have BEFORE the right block\n // note - cast to \"any\" due to https://github.com/Microsoft/TypeScript/issues/11498\n // should be ServerSideBlock\n var beforeBlock = null;\n this.forEachBlockInOrder(function (currentBlock) {\n if (currentBlock.isDisplayIndexInBlock(displayRowIndex)) {\n block = currentBlock;\n }\n else if (currentBlock.isBlockBefore(displayRowIndex)) {\n // this will get assigned many times, but the last time will\n // be the closest block to the required block that is BEFORE\n beforeBlock = currentBlock;\n }\n });\n // when we are moving rows around, we don't want to trigger loads\n if (_.missing(block) && dontCreateBlock) {\n return null;\n }\n var blockSize = this.getBlockSize();\n // if block not found, we need to load it\n if (_.missing(block)) {\n var blockNumber = void 0;\n var displayIndexStart_1;\n var nextRowTop = void 0;\n // because missing blocks are always fully closed, we can work out\n // the start index of the block we want by hopping from the closest block,\n // as we know the row count in closed blocks is equal to the page size\n if (beforeBlock) {\n blockNumber = beforeBlock.getBlockNumber() + 1;\n displayIndexStart_1 = beforeBlock.getDisplayIndexEnd();\n nextRowTop = beforeBlock.getBlockHeight() + beforeBlock.getBlockTop();\n var isInRange = function () {\n return displayRowIndex >= displayIndexStart_1 && displayRowIndex < (displayIndexStart_1 + blockSize);\n };\n while (!isInRange()) {\n displayIndexStart_1 += blockSize;\n var cachedBlockHeight = this.blockHeights[blockNumber];\n if (_.exists(cachedBlockHeight)) {\n nextRowTop += cachedBlockHeight;\n }\n else {\n nextRowTop += this.cacheParams.rowHeight * blockSize;\n }\n blockNumber++;\n }\n }\n else {\n var localIndex = displayRowIndex - this.displayIndexStart;\n blockNumber = Math.floor(localIndex / blockSize);\n displayIndexStart_1 = this.displayIndexStart + (blockNumber * blockSize);\n nextRowTop = this.cacheTop + (blockNumber * blockSize * this.cacheParams.rowHeight);\n }\n block = this.createBlock(blockNumber, displayIndexStart_1, { value: nextRowTop });\n this.logger.log(\"block missing, rowIndex = \" + displayRowIndex + \", creating #\" + blockNumber + \", displayIndexStart = \" + displayIndexStart_1);\n }\n return block ? block.getRow(displayRowIndex) : null;\n };\n ServerSideCache.prototype.getBlockSize = function () {\n return this.cacheParams.blockSize ? this.cacheParams.blockSize : ServerSideBlock.DefaultBlockSize;\n };\n ServerSideCache.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var blockSize = this.getBlockSize();\n var blockId = Math.floor(topLevelIndex / blockSize);\n var block = this.getBlock(blockId);\n if (block) {\n // if we found a block, means row is in memory, so we can report the row index directly\n var rowNode = block.getRowUsingLocalIndex(topLevelIndex, true);\n return rowNode.rowIndex;\n }\n else {\n // otherwise we need to calculate it from the previous block\n var blockBefore_1;\n this.forEachBlockInOrder(function (currentBlock, currentId) {\n if (blockId > currentId) {\n // this will get assigned many times, but the last time will\n // be the closest block to the required block that is BEFORE\n blockBefore_1 = currentBlock;\n }\n });\n if (blockBefore_1) {\n // note: the local index is the same as the top level index, two terms for same thing\n //\n // get index of the last row before this row\n // eg if blocksize = 100, then:\n // last row of first block is 99 (100 * 1) -1;\n // last row of second block is 199 (100 * 2) -1;\n var lastRowTopLevelIndex = (blockSize * (blockBefore_1.getBlockNumber() + 1)) - 1;\n // this is the last loaded rownode in the cache that is before the row we are interested in.\n // we are guaranteed no rows are open. so the difference between the topTopIndex will be the\n // same as the difference between the displayed index\n var indexDiff = topLevelIndex - lastRowTopLevelIndex;\n var lastRowNode = blockBefore_1.getRowUsingLocalIndex(lastRowTopLevelIndex, true);\n return lastRowNode.rowIndex + indexDiff;\n }\n else {\n return topLevelIndex;\n }\n }\n };\n ServerSideCache.prototype.createBlock = function (blockNumber, displayIndex, nextRowTop) {\n var newBlock = new ServerSideBlock(blockNumber, this.parentRowNode, this.cacheParams, this);\n this.getContext().wireBean(newBlock);\n var displayIndexSequence = new NumberSequence(displayIndex);\n newBlock.setDisplayIndexes(displayIndexSequence, this.getVirtualRowCount(), nextRowTop);\n this.postCreateBlock(newBlock);\n return newBlock;\n };\n ServerSideCache.prototype.getDisplayIndexEnd = function () {\n return this.displayIndexEnd;\n };\n ServerSideCache.prototype.isDisplayIndexInCache = function (displayIndex) {\n if (this.getVirtualRowCount() === 0) {\n return false;\n }\n return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n };\n ServerSideCache.prototype.getChildCache = function (keys) {\n var _this = this;\n if (_.missingOrEmpty(keys)) {\n return this;\n }\n var nextKey = keys[0];\n var nextServerSideCache = null;\n this.forEachBlockInOrder(function (block) {\n // callback: (rowNode: RowNode, index: number) => void, sequence: NumberSequence, rowCount: number\n block.forEachNodeShallow(function (rowNode) {\n if (rowNode.key === nextKey) {\n nextServerSideCache = rowNode.childrenCache;\n }\n }, new NumberSequence(), _this.getVirtualRowCount());\n });\n if (nextServerSideCache) {\n var keyListForNextLevel = keys.slice(1, keys.length);\n return nextServerSideCache ? nextServerSideCache.getChildCache(keyListForNextLevel) : null;\n }\n else {\n return null;\n }\n };\n ServerSideCache.prototype.isPixelInRange = function (pixel) {\n if (this.getVirtualRowCount() === 0) {\n return false;\n }\n return pixel >= this.cacheTop && pixel < (this.cacheTop + this.cacheHeight);\n };\n ServerSideCache.prototype.refreshCacheAfterSort = function (changedColumnsInSort, rowGroupColIds) {\n var _this = this;\n var level = this.parentRowNode.level + 1;\n var grouping = level < this.cacheParams.rowGroupCols.length;\n var shouldPurgeCache;\n if (grouping) {\n var groupColVo = this.cacheParams.rowGroupCols[level];\n var groupField = groupColVo.field;\n var rowGroupBlock = rowGroupColIds.indexOf(groupField) > -1;\n var sortingByGroup = changedColumnsInSort.indexOf(groupField) > -1;\n shouldPurgeCache = rowGroupBlock && sortingByGroup;\n }\n else {\n shouldPurgeCache = true;\n }\n if (shouldPurgeCache) {\n this.purgeCache();\n }\n else {\n this.forEachBlockInOrder(function (block) {\n if (block.isGroupLevel()) {\n var callback = function (rowNode) {\n var nextCache = rowNode.childrenCache;\n if (nextCache) {\n nextCache.refreshCacheAfterSort(changedColumnsInSort, rowGroupColIds);\n }\n };\n block.forEachNodeShallow(callback, new NumberSequence(), _this.getVirtualRowCount());\n }\n });\n }\n };\n __decorate([\n Autowired('eventService')\n ], ServerSideCache.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ServerSideCache.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], ServerSideCache.prototype, \"setBeans\", null);\n __decorate([\n PostConstruct\n ], ServerSideCache.prototype, \"init\", null);\n return ServerSideCache;\n}(RowNodeCache));\nexport { ServerSideCache };\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 __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { _, Autowired, Bean, BeanStub, Constants, Events, NumberSequence, PostConstruct, PreDestroy, Qualifier, RowNode, RowNodeBlockLoader, RowNodeCache } from \"@ag-grid-community/core\";\nimport { ServerSideCache } from \"./serverSideCache\";\nimport { ServerSideBlock } from \"./serverSideBlock\";\nvar ServerSideRowModel = /** @class */ (function (_super) {\n __extends(ServerSideRowModel, _super);\n function ServerSideRowModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // we don't implement as lazy row heights is not supported in this row model\n ServerSideRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) { return false; };\n ServerSideRowModel.prototype.postConstruct = function () {\n this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n this.addEventListeners();\n };\n ServerSideRowModel.prototype.start = function () {\n var datasource = this.gridOptionsWrapper.getServerSideDatasource();\n if (datasource) {\n this.setDatasource(datasource);\n }\n };\n ServerSideRowModel.prototype.destroyDatasource = function () {\n if (this.datasource) {\n if (this.datasource.destroy) {\n this.datasource.destroy();\n }\n this.rowRenderer.datasourceChanged();\n this.datasource = undefined;\n }\n };\n ServerSideRowModel.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ServerSideRowModel');\n };\n ServerSideRowModel.prototype.addEventListeners = function () {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_ROW_GROUP_OPENED, this.onRowGroupOpened.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.onColumnEverything.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.onColumnPivotChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n };\n ServerSideRowModel.prototype.setDatasource = function (datasource) {\n this.destroyDatasource();\n this.datasource = datasource;\n this.reset();\n };\n ServerSideRowModel.prototype.isLastRowFound = function () {\n if (this.cacheExists()) {\n return this.rootNode.childrenCache.isMaxRowFound();\n }\n else {\n return false;\n }\n };\n ServerSideRowModel.prototype.onColumnEverything = function () {\n // this is a hack for one customer only, so they can suppress the resetting of the columns.\n // The problem the customer had was they were api.setColumnDefs() after the data source came\n // back with data. So this stops the reload from the grid after the data comes back.\n // Once we have \"AG-1591 Allow delta changes to columns\" fixed, then this hack can be taken out.\n if (this.gridOptionsWrapper.isSuppressEnterpriseResetOnNewColumns()) {\n return;\n }\n // every other customer can continue as normal and have it working!!!\n // check if anything pertaining to fetching data has changed, and if it has, reset, but if\n // it has not, don't reset\n var resetRequired;\n if (!this.cacheParams) {\n resetRequired = true;\n }\n else {\n var rowGroupColumnVos = this.toValueObjects(this.columnController.getRowGroupColumns());\n var valueColumnVos = this.toValueObjects(this.columnController.getValueColumns());\n var pivotColumnVos = this.toValueObjects(this.columnController.getPivotColumns());\n var sortModelDifferent = !_.jsonEquals(this.cacheParams.sortModel, this.sortController.getSortModel());\n var rowGroupDifferent = !_.jsonEquals(this.cacheParams.rowGroupCols, rowGroupColumnVos);\n var pivotDifferent = !_.jsonEquals(this.cacheParams.pivotCols, pivotColumnVos);\n var valuesDifferent = !_.jsonEquals(this.cacheParams.valueCols, valueColumnVos);\n resetRequired = sortModelDifferent || rowGroupDifferent || pivotDifferent || valuesDifferent;\n }\n if (resetRequired) {\n this.reset();\n }\n };\n ServerSideRowModel.prototype.onFilterChanged = function () {\n this.reset();\n };\n // returns back all the cols that were effected by the sorting. eg if we were sorting by col A,\n // and now we are sorting by col B, the list of impacted cols should be A and B. so if a cache\n // is impacted by sorting on A or B then it needs to be refreshed. this includes where the cache\n // was previously sorted by A and then the A sort now needs to be cleared.\n ServerSideRowModel.prototype.findChangedColumnsInSort = function (newSortModel, oldSortModel) {\n var allColsInBothSorts = [];\n [newSortModel, oldSortModel].forEach(function (sortModel) {\n if (sortModel) {\n var ids = sortModel.map(function (sm) { return sm.colId; });\n allColsInBothSorts = allColsInBothSorts.concat(ids);\n }\n });\n var differentSorts = function (oldSortItem, newSortItem) {\n var oldSort = oldSortItem ? oldSortItem.sort : null;\n var newSort = newSortItem ? newSortItem.sort : null;\n return oldSort !== newSort;\n };\n var differentIndexes = function (oldSortItem, newSortItem) {\n var oldIndex = oldSortModel.indexOf(oldSortItem);\n var newIndex = newSortModel.indexOf(newSortItem);\n return oldIndex !== newIndex;\n };\n return allColsInBothSorts.filter(function (colId) {\n var oldSortItem = _.find(oldSortModel, function (sm) { return sm.colId === colId; });\n var newSortItem = _.find(newSortModel, function (sm) { return sm.colId === colId; });\n return differentSorts(oldSortItem, newSortItem) || differentIndexes(oldSortItem, newSortItem);\n });\n };\n ServerSideRowModel.prototype.onSortChanged = function () {\n if (!this.cacheExists()) {\n return;\n }\n var newSortModel = this.extractSortModel();\n var oldSortModel = this.cacheParams.sortModel;\n var changedColumnsInSort = this.findChangedColumnsInSort(newSortModel, oldSortModel);\n this.cacheParams.sortModel = newSortModel;\n var rowGroupColIds = this.columnController.getRowGroupColumns().map(function (col) { return col.getId(); });\n var serverSideCache = this.rootNode.childrenCache;\n var sortingWithValueCol = this.isSortingWithValueColumn(changedColumnsInSort);\n var sortingWithSecondaryCol = this.isSortingWithSecondaryColumn(changedColumnsInSort);\n var sortAlwaysResets = this.gridOptionsWrapper.isServerSideSortingAlwaysResets();\n if (sortAlwaysResets || sortingWithValueCol || sortingWithSecondaryCol) {\n this.reset();\n }\n else {\n serverSideCache.refreshCacheAfterSort(changedColumnsInSort, rowGroupColIds);\n }\n };\n ServerSideRowModel.prototype.onValueChanged = function () {\n this.reset();\n };\n ServerSideRowModel.prototype.onColumnRowGroupChanged = function () {\n this.reset();\n };\n ServerSideRowModel.prototype.onColumnPivotChanged = function () {\n this.reset();\n };\n ServerSideRowModel.prototype.onPivotModeChanged = function () {\n this.reset();\n };\n ServerSideRowModel.prototype.onRowGroupOpened = function (event) {\n var _this = this;\n var rowNode = event.node;\n if (rowNode.expanded) {\n if (rowNode.master) {\n this.createDetailNode(rowNode);\n }\n else if (_.missing(rowNode.childrenCache)) {\n this.createNodeCache(rowNode);\n }\n }\n else {\n if (this.gridOptionsWrapper.isPurgeClosedRowNodes() && _.exists(rowNode.childrenCache)) {\n rowNode.childrenCache.destroy();\n rowNode.childrenCache = null;\n }\n }\n var shouldAnimate = function () {\n var rowAnimationEnabled = _this.gridOptionsWrapper.isAnimateRows();\n if (rowNode.master) {\n return rowAnimationEnabled && rowNode.expanded;\n }\n return rowAnimationEnabled;\n };\n this.updateRowIndexesAndBounds();\n var modelUpdatedEvent = {\n type: Events.EVENT_MODEL_UPDATED,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n newPage: false,\n newData: false,\n animate: shouldAnimate(),\n keepRenderedRows: true\n };\n this.eventService.dispatchEvent(modelUpdatedEvent);\n };\n ServerSideRowModel.prototype.reset = function () {\n this.rootNode = new RowNode();\n this.rootNode.group = true;\n this.rootNode.level = -1;\n this.getContext().wireBean(this.rootNode);\n if (this.datasource) {\n this.createNewRowNodeBlockLoader();\n this.cacheParams = this.createCacheParams();\n this.createNodeCache(this.rootNode);\n this.updateRowIndexesAndBounds();\n }\n // this event: 1) clears selection 2) updates filters 3) shows/hides 'no rows' overlay\n var rowDataChangedEvent = {\n type: Events.EVENT_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(rowDataChangedEvent);\n // this gets the row to render rows (or remove the previously rendered rows, as it's blank to start).\n // important to NOT pass in an event with keepRenderedRows or animate, as we want the renderer\n // to treat the rows as new rows, as it's all new data\n var modelUpdatedEvent = {\n type: Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: false\n };\n this.eventService.dispatchEvent(modelUpdatedEvent);\n };\n ServerSideRowModel.prototype.createNewRowNodeBlockLoader = function () {\n this.destroyRowNodeBlockLoader();\n var maxConcurrentRequests = this.gridOptionsWrapper.getMaxConcurrentDatasourceRequests();\n var blockLoadDebounceMillis = this.gridOptionsWrapper.getBlockLoadDebounceMillis();\n this.rowNodeBlockLoader = new RowNodeBlockLoader(maxConcurrentRequests, blockLoadDebounceMillis);\n this.getContext().wireBean(this.rowNodeBlockLoader);\n };\n ServerSideRowModel.prototype.destroyRowNodeBlockLoader = function () {\n if (this.rowNodeBlockLoader) {\n this.rowNodeBlockLoader.destroy();\n this.rowNodeBlockLoader = undefined;\n }\n };\n ServerSideRowModel.prototype.toValueObjects = function (columns) {\n var _this = this;\n return columns.map(function (col) { return ({\n id: col.getId(),\n aggFunc: col.getAggFunc(),\n displayName: _this.columnController.getDisplayNameForColumn(col, 'model'),\n field: col.getColDef().field\n }); });\n };\n ServerSideRowModel.prototype.createCacheParams = function () {\n var rowGroupColumnVos = this.toValueObjects(this.columnController.getRowGroupColumns());\n var valueColumnVos = this.toValueObjects(this.columnController.getValueColumns());\n var pivotColumnVos = this.toValueObjects(this.columnController.getPivotColumns());\n var dynamicRowHeight = this.gridOptionsWrapper.isDynamicRowHeight();\n var maxBlocksInCache = this.gridOptionsWrapper.getMaxBlocksInCache();\n if (dynamicRowHeight && maxBlocksInCache >= 0) {\n console.warn('ag-Grid: Server Side Row Model does not support Dynamic Row Height and Cache Purging. ' +\n 'Either a) remove getRowHeight() callback or b) remove maxBlocksInCache property. Purging has been disabled.');\n maxBlocksInCache = undefined;\n }\n if (maxBlocksInCache >= 0 && this.columnController.isAutoRowHeightActive()) {\n console.warn('ag-Grid: Server Side Row Model does not support Auto Row Height and Cache Purging. ' +\n 'Either a) remove colDef.autoHeight or b) remove maxBlocksInCache property. Purging has been disabled.');\n maxBlocksInCache = undefined;\n }\n var params = {\n // the columns the user has grouped and aggregated by\n valueCols: valueColumnVos,\n rowGroupCols: rowGroupColumnVos,\n pivotCols: pivotColumnVos,\n pivotMode: this.columnController.isPivotMode(),\n // sort and filter model\n filterModel: this.filterManager.getFilterModel(),\n sortModel: this.extractSortModel(),\n rowNodeBlockLoader: this.rowNodeBlockLoader,\n datasource: this.datasource,\n lastAccessedSequence: new NumberSequence(),\n overflowSize: 1,\n initialRowCount: 1,\n maxConcurrentRequests: this.gridOptionsWrapper.getMaxConcurrentDatasourceRequests() || 0,\n maxBlocksInCache: maxBlocksInCache,\n blockSize: this.gridOptionsWrapper.getCacheBlockSize(),\n rowHeight: this.rowHeight,\n dynamicRowHeight: dynamicRowHeight\n };\n // set defaults\n if (!(params.maxConcurrentRequests >= 1)) {\n params.maxConcurrentRequests = 2;\n }\n // page size needs to be 1 or greater. having it at 1 would be silly, as you would be hitting the\n // server for one page at a time. so the default if not specified is 100.\n if (!(params.blockSize >= 1)) {\n params.blockSize = ServerSideBlock.DefaultBlockSize;\n }\n // if user doesn't give initial rows to display, we assume zero\n if (!(params.initialRowCount >= 1)) {\n params.initialRowCount = 0;\n }\n // if user doesn't provide overflow, we use default overflow of 1, so user can scroll past\n // the current page and request first row of next page\n if (!(params.overflowSize >= 1)) {\n params.overflowSize = 1;\n }\n return params;\n };\n ServerSideRowModel.prototype.createNodeCache = function (rowNode) {\n var cache = new ServerSideCache(this.cacheParams, rowNode);\n this.getContext().wireBean(cache);\n cache.addEventListener(RowNodeCache.EVENT_CACHE_UPDATED, this.onCacheUpdated.bind(this));\n rowNode.childrenCache = cache;\n };\n ServerSideRowModel.prototype.onCacheUpdated = function () {\n this.updateRowIndexesAndBounds();\n var modelUpdatedEvent = {\n type: Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: this.gridOptionsWrapper.isAnimateRows(),\n keepRenderedRows: true,\n newPage: false,\n newData: false\n };\n this.eventService.dispatchEvent(modelUpdatedEvent);\n };\n ServerSideRowModel.prototype.updateRowIndexesAndBounds = function () {\n if (this.cacheExists()) {\n // NOTE: should not be casting here, the RowModel should use IServerSideRowModel interface?\n var serverSideCache = this.rootNode.childrenCache;\n this.resetRowTops(serverSideCache);\n this.setDisplayIndexes(serverSideCache);\n }\n };\n ServerSideRowModel.prototype.setDisplayIndexes = function (cache) {\n var numberSequence = new NumberSequence();\n var nextRowTop = { value: 0 };\n cache.setDisplayIndexes(numberSequence, nextRowTop);\n };\n // resetting row tops is needed for animation, as part of the operation is saving the old location,\n // which is needed for rows that are transitioning in\n ServerSideRowModel.prototype.resetRowTops = function (cache) {\n var numberSequence = new NumberSequence();\n cache.forEachNodeDeep(function (rowNode) { return rowNode.clearRowTop(); }, numberSequence);\n };\n ServerSideRowModel.prototype.getRow = function (index) {\n if (this.cacheExists()) {\n return this.rootNode.childrenCache.getRow(index);\n }\n return null;\n };\n ServerSideRowModel.prototype.getRowCount = function () {\n if (!this.cacheExists()) {\n return 1;\n }\n var serverSideCache = this.rootNode.childrenCache;\n var res = serverSideCache.getDisplayIndexEnd();\n return res;\n };\n ServerSideRowModel.prototype.getTopLevelRowCount = function () {\n if (!this.cacheExists()) {\n return 1;\n }\n var serverSideCache = this.rootNode.childrenCache;\n return serverSideCache.getVirtualRowCount();\n };\n ServerSideRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n if (!this.cacheExists()) {\n return topLevelIndex;\n }\n var serverSideCache = this.rootNode.childrenCache;\n return serverSideCache.getTopLevelRowDisplayedIndex(topLevelIndex);\n };\n ServerSideRowModel.prototype.getRowBounds = function (index) {\n if (!this.cacheExists()) {\n return {\n rowTop: 0,\n rowHeight: this.rowHeight\n };\n }\n var serverSideCache = this.rootNode.childrenCache;\n return serverSideCache.getRowBounds(index);\n };\n ServerSideRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n if (pixel === 0) {\n return 0;\n }\n if (!this.cacheExists()) {\n return 0;\n }\n var serverSideCache = this.rootNode.childrenCache;\n return serverSideCache.getRowIndexAtPixel(pixel);\n };\n ServerSideRowModel.prototype.getCurrentPageHeight = function () {\n return this.rowHeight * this.getRowCount();\n };\n ServerSideRowModel.prototype.isEmpty = function () {\n return false;\n };\n ServerSideRowModel.prototype.isRowsToRender = function () {\n return this.cacheExists() && this.getRowCount() > 0;\n };\n ServerSideRowModel.prototype.getType = function () {\n return Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n };\n ServerSideRowModel.prototype.forEachNode = function (callback) {\n if (this.cacheExists()) {\n this.rootNode.childrenCache.forEachNodeDeep(callback);\n }\n };\n ServerSideRowModel.prototype.executeOnCache = function (route, callback) {\n if (this.cacheExists()) {\n var topLevelCache = this.rootNode.childrenCache;\n var cacheToPurge = topLevelCache.getChildCache(route);\n if (cacheToPurge) {\n callback(cacheToPurge);\n }\n }\n };\n ServerSideRowModel.prototype.purgeCache = function (route) {\n if (route === void 0) { route = []; }\n this.executeOnCache(route, function (cache) { return cache.purgeCache(); });\n };\n ServerSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n if (_.exists(firstInRange) && firstInRange.parent !== lastInRange.parent) {\n return [];\n }\n return lastInRange.parent.childrenCache.getRowNodesInRange(firstInRange, lastInRange);\n };\n ServerSideRowModel.prototype.getRowNode = function (id) {\n var result = null;\n this.forEachNode(function (rowNode) {\n if (rowNode.id === id) {\n result = rowNode;\n }\n if (rowNode.detailNode && rowNode.detailNode.id === id) {\n result = rowNode.detailNode;\n }\n });\n return result;\n };\n ServerSideRowModel.prototype.getBlockState = function () {\n if (this.rowNodeBlockLoader) {\n return this.rowNodeBlockLoader.getBlockState();\n }\n else {\n return null;\n }\n };\n // always returns true - this is used by the\n ServerSideRowModel.prototype.isRowPresent = function (rowNode) {\n var foundRowNode = this.getRowNode(rowNode.id);\n return !!foundRowNode;\n };\n ServerSideRowModel.prototype.extractSortModel = function () {\n var sortModel = this.sortController.getSortModel();\n // when using tree data we just return the sort model with the 'ag-Grid-AutoColumn' as is, i.e not broken out\n // into it's constitute group columns as they are not defined up front and can vary per node.\n if (this.gridOptionsWrapper.isTreeData()) {\n return sortModel;\n }\n var rowGroupCols = this.toValueObjects(this.columnController.getRowGroupColumns());\n // find index of auto group column in sort model\n var autoGroupIndex = -1;\n for (var i = 0; i < sortModel.length; ++i) {\n if (sortModel[i].colId === Constants.GROUP_AUTO_COLUMN_ID) {\n autoGroupIndex = i;\n break;\n }\n }\n // replace auto column with individual group columns\n if (autoGroupIndex > -1) {\n var individualGroupCols = rowGroupCols.map(function (group) {\n return {\n colId: group.field,\n sort: sortModel[autoGroupIndex].sort\n };\n });\n // remove auto group column\n sortModel.splice(autoGroupIndex, 1);\n var _loop_1 = function (i) {\n var individualGroupCol = individualGroupCols[i];\n // don't add individual group column if non group column already exists as it gets precedence\n var sameNonGroupColumnExists = sortModel.some(function (sm) { return sm.colId === individualGroupCol.colId; });\n if (sameNonGroupColumnExists) {\n return \"continue\";\n }\n sortModel.splice(autoGroupIndex++, 0, individualGroupCol);\n };\n // insert individual group columns\n for (var i = 0; i < individualGroupCols.length; i++) {\n _loop_1(i);\n }\n }\n // strip out multi-column prefix on colId's\n if (this.gridOptionsWrapper.isGroupMultiAutoColumn()) {\n var multiColumnPrefix = Constants.GROUP_AUTO_COLUMN_ID + \"-\";\n for (var i = 0; i < sortModel.length; ++i) {\n if (sortModel[i].colId.indexOf(multiColumnPrefix) > -1) {\n sortModel[i].colId = sortModel[i].colId.substr(multiColumnPrefix.length);\n }\n }\n }\n return sortModel;\n };\n ServerSideRowModel.prototype.isSortingWithValueColumn = function (changedColumnsInSort) {\n var valueColIds = this.columnController.getValueColumns().map(function (col) { return col.getColId(); });\n for (var i = 0; i < changedColumnsInSort.length; i++) {\n if (valueColIds.indexOf(changedColumnsInSort[i]) > -1) {\n return true;\n }\n }\n return false;\n };\n ServerSideRowModel.prototype.isSortingWithSecondaryColumn = function (changedColumnsInSort) {\n if (!this.columnController.getSecondaryColumns()) {\n return false;\n }\n var secondaryColIds = this.columnController.getSecondaryColumns().map(function (col) { return col.getColId(); });\n for (var i = 0; i < changedColumnsInSort.length; i++) {\n if (secondaryColIds.indexOf(changedColumnsInSort[i]) > -1) {\n return true;\n }\n }\n return false;\n };\n ServerSideRowModel.prototype.cacheExists = function () {\n return _.exists(this.rootNode) && _.exists(this.rootNode.childrenCache);\n };\n ServerSideRowModel.prototype.createDetailNode = function (masterNode) {\n if (_.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n else {\n var detailNode = new RowNode();\n this.getContext().wireBean(detailNode);\n detailNode.detail = true;\n detailNode.selectable = false;\n detailNode.parent = masterNode;\n if (_.exists(masterNode.id)) {\n detailNode.id = 'detail_' + masterNode.id;\n }\n detailNode.data = masterNode.data;\n detailNode.level = masterNode.level + 1;\n var defaultDetailRowHeight = 200;\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(detailNode).height;\n detailNode.rowHeight = rowHeight ? rowHeight : defaultDetailRowHeight;\n masterNode.detailNode = detailNode;\n return detailNode;\n }\n };\n ServerSideRowModel.prototype.isLoading = function () {\n return this.rowNodeBlockLoader ? this.rowNodeBlockLoader.isLoading() : false;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ServerSideRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], ServerSideRowModel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnController')\n ], ServerSideRowModel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('filterManager')\n ], ServerSideRowModel.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('sortController')\n ], ServerSideRowModel.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ServerSideRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ServerSideRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], ServerSideRowModel.prototype, \"rowRenderer\", void 0);\n __decorate([\n PostConstruct\n ], ServerSideRowModel.prototype, \"postConstruct\", null);\n __decorate([\n PreDestroy\n ], ServerSideRowModel.prototype, \"destroyDatasource\", null);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], ServerSideRowModel.prototype, \"setBeans\", null);\n ServerSideRowModel = __decorate([\n Bean('rowModel')\n ], ServerSideRowModel);\n return ServerSideRowModel;\n}(BeanStub));\nexport { ServerSideRowModel };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { ServerSideRowModel } from \"./serverSideRowModel/serverSideRowModel\";\nexport var ServerSideRowModelModule = {\n moduleName: ModuleNames.ServerSideRowModelModule,\n rowModels: { 'serverSide': ServerSideRowModel },\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","export { ServerSideRowModelModule } from \"./serverSideRowModelModule\";\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 } from \"@ag-grid-community/core\";\nvar RichSelectRow = /** @class */ (function (_super) {\n __extends(RichSelectRow, _super);\n function RichSelectRow(params) {\n var _this = _super.call(this, '
') || this;\n _this.params = params;\n return _this;\n }\n RichSelectRow.prototype.setState = function (value, valueFormatted, selected) {\n var rendererSuccessful = this.populateWithRenderer(value, valueFormatted);\n if (!rendererSuccessful) {\n this.populateWithoutRenderer(value, valueFormatted);\n }\n _.addOrRemoveCssClass(this.getGui(), 'ag-rich-select-row-selected', selected);\n };\n RichSelectRow.prototype.populateWithoutRenderer = function (value, valueFormatted) {\n var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n var valueToRender = valueFormattedExits ? valueFormatted : value;\n if (_.exists(valueToRender) && valueToRender !== '') {\n // not using innerHTML to prevent injection of HTML\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML#Security_considerations\n this.getGui().textContent = valueToRender.toString();\n }\n else {\n // putting in blank, so if missing, at least the user can click on it\n this.getGui().innerHTML = ' ';\n }\n };\n RichSelectRow.prototype.populateWithRenderer = function (value, valueFormatted) {\n var _this = this;\n // bad coder here - we are not populating all values of the cellRendererParams\n var params = {\n value: value,\n valueFormatted: valueFormatted,\n api: this.gridOptionsWrapper.getApi()\n };\n var cellRendererPromise = this.userComponentFactory.newCellRenderer(this.params, params);\n if (cellRendererPromise != null) {\n _.bindCellRendererToHtmlElement(cellRendererPromise, this.getGui());\n }\n else {\n this.getGui().innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n if (cellRendererPromise) {\n cellRendererPromise.then(function (childComponent) {\n if (childComponent && childComponent.destroy) {\n _this.addDestroyFunc(childComponent.destroy.bind(childComponent));\n }\n });\n return true;\n }\n return false;\n };\n __decorate([\n Autowired('userComponentFactory')\n ], RichSelectRow.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RichSelectRow.prototype, \"gridOptionsWrapper\", void 0);\n return RichSelectRow;\n}(Component));\nexport { RichSelectRow };\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, Constants, PopupComponent, RefSelector, _, VirtualList } from \"@ag-grid-community/core\";\nimport { RichSelectRow } from \"./richSelectRow\";\nvar RichSelectCellEditor = /** @class */ (function (_super) {\n __extends(RichSelectCellEditor, _super);\n function RichSelectCellEditor() {\n var _this = _super.call(this, RichSelectCellEditor.TEMPLATE) || this;\n _this.selectionConfirmed = false;\n _this.searchString = '';\n return _this;\n }\n RichSelectCellEditor.prototype.init = function (params) {\n this.params = params;\n this.selectedValue = params.value;\n this.originalSelectedValue = params.value;\n this.focusAfterAttached = params.cellStartedEdit;\n this.eValue.appendChild(_.createIconNoSpan('smallDown', this.gridOptionsWrapper));\n this.virtualList = new VirtualList();\n this.getContext().wireBean(this.virtualList);\n this.virtualList.setComponentCreator(this.createRowComponent.bind(this));\n this.eList.appendChild(this.virtualList.getGui());\n if (_.exists(this.params.cellHeight)) {\n this.virtualList.setRowHeight(this.params.cellHeight);\n }\n this.renderSelectedValue();\n if (_.missing(params.values)) {\n console.warn('ag-Grid: richSelectCellEditor requires values for it to work');\n return;\n }\n var values = params.values;\n this.virtualList.setModel({\n getRowCount: function () { return values.length; },\n getRow: function (index) { return values[index]; }\n });\n this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n var virtualListGui = this.virtualList.getGui();\n this.addDestroyableEventListener(virtualListGui, 'click', this.onClick.bind(this));\n this.addDestroyableEventListener(virtualListGui, 'mousemove', this.onMouseMove.bind(this));\n this.clearSearchString = _.debounce(this.clearSearchString, 300);\n if (_.exists(params.charPress)) {\n this.searchText(params.charPress);\n }\n };\n RichSelectCellEditor.prototype.onKeyDown = function (event) {\n var key = event.which || event.keyCode;\n switch (key) {\n case Constants.KEY_ENTER:\n this.onEnterKeyDown();\n break;\n case Constants.KEY_DOWN:\n case Constants.KEY_UP:\n this.onNavigationKeyPressed(event, key);\n break;\n default:\n this.searchText(event);\n }\n };\n RichSelectCellEditor.prototype.onEnterKeyDown = function () {\n this.selectionConfirmed = true;\n this.params.stopEditing();\n };\n RichSelectCellEditor.prototype.onNavigationKeyPressed = function (event, key) {\n // if we don't stop propagation, then the grids navigation kicks in\n event.stopPropagation();\n var oldIndex = this.params.values.indexOf(this.selectedValue);\n var newIndex = key === Constants.KEY_UP ? oldIndex - 1 : oldIndex + 1;\n if (newIndex >= 0 && newIndex < this.params.values.length) {\n var valueToSelect = this.params.values[newIndex];\n this.setSelectedValue(valueToSelect);\n }\n };\n RichSelectCellEditor.prototype.searchText = function (key) {\n if (typeof key !== 'string') {\n if (!_.isCharacterKey(key)) {\n return;\n }\n key = key.key;\n }\n this.searchString += key;\n this.runSearch();\n this.clearSearchString();\n };\n RichSelectCellEditor.prototype.runSearch = function () {\n var values = this.params.values;\n var searchStrings;\n if (typeof values[0] === \"number\" || typeof values[0] === \"string\") {\n searchStrings = values.map(String);\n }\n if (typeof values[0] === \"object\" && this.params.colDef.keyCreator) {\n searchStrings = values.map(this.params.colDef.keyCreator);\n }\n if (!searchStrings) {\n return;\n }\n var topSuggestion = _.fuzzySuggestions(this.searchString, searchStrings, true, true)[0];\n if (!topSuggestion) {\n return;\n }\n var topSuggestionIndex = searchStrings.indexOf(topSuggestion);\n var topValue = values[topSuggestionIndex];\n this.setSelectedValue(topValue);\n };\n RichSelectCellEditor.prototype.clearSearchString = function () {\n this.searchString = '';\n };\n RichSelectCellEditor.prototype.renderSelectedValue = function () {\n var _this = this;\n var valueFormatted = this.params.formatValue(this.selectedValue);\n var eValue = this.eValue;\n var params = {\n value: this.selectedValue,\n valueFormatted: valueFormatted,\n api: this.gridOptionsWrapper.getApi()\n };\n var promise = this.userComponentFactory.newCellRenderer(this.params, params);\n if (promise != null) {\n _.bindCellRendererToHtmlElement(promise, eValue);\n }\n else {\n eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n if (promise) {\n promise.then(function (renderer) {\n if (renderer && renderer.destroy) {\n _this.addDestroyFunc(function () { return renderer.destroy(); });\n }\n });\n }\n else {\n if (_.exists(this.selectedValue)) {\n eValue.innerHTML = valueFormatted;\n }\n else {\n _.clearElement(eValue);\n }\n }\n };\n RichSelectCellEditor.prototype.setSelectedValue = function (value) {\n if (this.selectedValue === value) {\n return;\n }\n var index = this.params.values.indexOf(value);\n if (index >= 0) {\n this.selectedValue = value;\n this.virtualList.ensureIndexVisible(index);\n this.virtualList.refresh();\n }\n };\n RichSelectCellEditor.prototype.createRowComponent = function (value) {\n var valueFormatted = this.params.formatValue(value);\n var row = new RichSelectRow(this.params);\n this.getContext().wireBean(row);\n row.setState(value, valueFormatted, value === this.selectedValue);\n return row;\n };\n RichSelectCellEditor.prototype.onMouseMove = function (mouseEvent) {\n var rect = this.virtualList.getGui().getBoundingClientRect();\n var scrollTop = this.virtualList.getScrollTop();\n var mouseY = mouseEvent.clientY - rect.top + scrollTop;\n var row = Math.floor(mouseY / this.virtualList.getRowHeight());\n var value = this.params.values[row];\n // not using utils.exist() as want empty string test to pass\n if (value !== undefined) {\n this.setSelectedValue(value);\n }\n };\n RichSelectCellEditor.prototype.onClick = function () {\n this.selectionConfirmed = true;\n this.params.stopEditing();\n };\n // we need to have the gui attached before we can draw the virtual rows, as the\n // virtual row logic needs info about the gui state\n RichSelectCellEditor.prototype.afterGuiAttached = function () {\n var selectedIndex = this.params.values.indexOf(this.selectedValue);\n // we have to call this here to get the list to have the right height, ie\n // otherwise it would not have scrolls yet and ensureIndexVisible would do nothing\n this.virtualList.refresh();\n if (selectedIndex >= 0) {\n this.virtualList.ensureIndexVisible(selectedIndex);\n }\n // we call refresh again, as the list could of moved, and we need to render the new rows\n this.virtualList.refresh();\n if (this.focusAfterAttached) {\n this.getGui().focus();\n }\n };\n RichSelectCellEditor.prototype.getValue = function () {\n // NOTE: we don't use valueParser for Set Filter. The user should provide values that are to be\n // set into the data. valueParser only really makese sense when the user is typing in text (not picking\n // form a set).\n return this.selectionConfirmed ? this.selectedValue : this.originalSelectedValue;\n };\n // tab index is needed so we can focus, which is needed for keyboard events\n RichSelectCellEditor.TEMPLATE = \"
\\n
\\n
\\n
\";\n __decorate([\n Autowired('userComponentFactory')\n ], RichSelectCellEditor.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RichSelectCellEditor.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector('eValue')\n ], RichSelectCellEditor.prototype, \"eValue\", void 0);\n __decorate([\n RefSelector('eList')\n ], RichSelectCellEditor.prototype, \"eList\", void 0);\n return RichSelectCellEditor;\n}(PopupComponent));\nexport { RichSelectCellEditor };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { RichSelectCellEditor } from \"./richSelect/richSelectCellEditor\";\nexport var RichSelectModule = {\n moduleName: ModuleNames.RichSelectModule,\n beans: [],\n userComponents: [\n { componentName: 'agRichSelect', componentClass: RichSelectCellEditor },\n { componentName: 'agRichSelectCellEditor', componentClass: RichSelectCellEditor }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","export { RichSelectModule } from \"./richSelectModule\";\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, Grid, RefSelector, RowNode, _ } from \"@ag-grid-community/core\";\nvar DetailCellRenderer = /** @class */ (function (_super) {\n __extends(DetailCellRenderer, _super);\n function DetailCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.needRefresh = false;\n return _this;\n }\n DetailCellRenderer.prototype.refresh = function () {\n // if we return true, it means we pretend to the grid\n // that we have refreshed, so refresh will never happen.\n if (this.suppressRefresh) {\n return true;\n }\n // otherwise we only refresh if the data has changed in the node\n // since the last time. this happens when user updates data using transaction.\n var res = !this.needRefresh;\n this.needRefresh = false;\n return res;\n };\n DetailCellRenderer.prototype.init = function (params) {\n var _this = this;\n this.rowId = params.node.id;\n this.masterGridApi = params.api;\n this.suppressRefresh = params.suppressRefresh;\n this.selectAndSetTemplate(params);\n if (_.exists(this.eDetailGrid)) {\n this.addThemeToDetailGrid();\n this.createDetailsGrid(params);\n this.registerDetailWithMaster(params.node);\n this.loadRowData(params);\n window.setTimeout(function () {\n // ensure detail grid api still exists (grid may be destroyed when async call tries to set data)\n if (_this.detailGridOptions.api) {\n _this.detailGridOptions.api.doLayout();\n }\n }, 0);\n }\n else {\n console.warn('ag-Grid: reference to eDetailGrid was missing from the details template. ' +\n 'Please add ref=\"eDetailGrid\" to the template.');\n }\n this.addDestroyableEventListener(params.node.parent, RowNode.EVENT_DATA_CHANGED, function () {\n _this.needRefresh = true;\n });\n };\n DetailCellRenderer.prototype.addThemeToDetailGrid = function () {\n // this is needed by environment service of the child grid, the class needs to be on\n // the grid div itself - the browser's CSS on the other hand just inherits from the parent grid theme.\n var theme = this.environment.getTheme().theme;\n if (theme) {\n _.addCssClass(this.eDetailGrid, theme);\n }\n };\n DetailCellRenderer.prototype.registerDetailWithMaster = function (rowNode) {\n var _this = this;\n var gridInfo = {\n id: this.rowId,\n api: this.detailGridOptions.api,\n columnApi: this.detailGridOptions.columnApi\n };\n // register with api\n this.masterGridApi.addDetailGridInfo(this.rowId, gridInfo);\n // register with node\n rowNode.detailGridInfo = gridInfo;\n this.addDestroyFunc(function () {\n _this.masterGridApi.removeDetailGridInfo(_this.rowId); // unregister from api\n rowNode.detailGridInfo = null; // unregister from node\n });\n };\n DetailCellRenderer.prototype.selectAndSetTemplate = function (params) {\n var paramsAny = params;\n if (_.missing(paramsAny.template)) {\n // use default template\n this.setTemplate(DetailCellRenderer.TEMPLATE);\n }\n else {\n // use user provided template\n if (typeof paramsAny.template === 'string') {\n this.setTemplate(paramsAny.template);\n }\n else if (typeof paramsAny.template === 'function') {\n var templateFunc = paramsAny.template;\n var template = templateFunc(params);\n this.setTemplate(template);\n }\n else {\n console.warn('ag-Grid: detailCellRendererParams.template should be function or string');\n this.setTemplate(DetailCellRenderer.TEMPLATE);\n }\n }\n };\n DetailCellRenderer.prototype.createDetailsGrid = function (params) {\n // we clone the detail grid options, as otherwise it would be shared\n // across many instances, and that would be a problem because we set\n // api and columnApi into gridOptions\n var _this = this;\n var gridOptions = params.detailGridOptions;\n if (_.missing(gridOptions)) {\n console.warn('ag-Grid: could not find detail grid options for master detail, ' +\n 'please set gridOptions.detailCellRendererParams.detailGridOptions');\n }\n // IMPORTANT - gridOptions must be cloned\n this.detailGridOptions = _.cloneObject(gridOptions);\n // tslint:disable-next-line\n new Grid(this.eDetailGrid, this.detailGridOptions, {\n $scope: params.$scope,\n $compile: params.$compile,\n providedBeanInstances: {\n // a temporary fix for AG-1574\n // AG-1715 raised to do a wider ranging refactor to improve this\n agGridReact: params.agGridReact,\n // AG-1716 - directly related to AG-1574 and AG-1715\n frameworkComponentWrapper: params.frameworkComponentWrapper\n }\n });\n this.addDestroyFunc(function () {\n if (_this.detailGridOptions.api) {\n _this.detailGridOptions.api.destroy();\n }\n });\n };\n DetailCellRenderer.prototype.loadRowData = function (params) {\n var userFunc = params.getDetailRowData;\n if (!userFunc) {\n console.warn('ag-Grid: could not find getDetailRowData for master / detail, ' +\n 'please set gridOptions.detailCellRendererParams.getDetailRowData');\n return;\n }\n var funcParams = {\n node: params.node,\n data: params.data,\n successCallback: this.setRowData.bind(this)\n };\n userFunc(funcParams);\n };\n DetailCellRenderer.prototype.setRowData = function (rowData) {\n // ensure detail grid api still exists (grid may be destroyed when async call tries to set data)\n if (this.detailGridOptions.api) {\n this.detailGridOptions.api.setRowData(rowData);\n }\n };\n DetailCellRenderer.TEMPLATE = \"
\\n
\\n
\";\n __decorate([\n RefSelector('eDetailGrid')\n ], DetailCellRenderer.prototype, \"eDetailGrid\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], DetailCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('environment')\n ], DetailCellRenderer.prototype, \"environment\", void 0);\n return DetailCellRenderer;\n}(Component));\nexport { DetailCellRenderer };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { DetailCellRenderer } from \"./masterDetail/detailCellRenderer\";\nexport var MasterDetailModule = {\n moduleName: ModuleNames.MasterDetailModule,\n beans: [],\n userComponents: [\n { componentName: 'agDetailCellRenderer', componentClass: DetailCellRenderer }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","export { MasterDetailModule } from \"./masterDetailModule\";\n"],"sourceRoot":""}