{"version":3,"sources":["../node_modules/@ag-grid-community/core/dist/es6/widgets/componentAnnotations.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/component.js","../node_modules/@ag-grid-community/core/dist/es6/modules/moduleRegistry.js","../node_modules/@ag-grid-community/core/dist/es6/modules/moduleNames.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/touchListener.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agAbstractField.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/rowContainerComponent.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/popupComponent.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/rowDragComp.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/dndSourceComp.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellComp.js","../node_modules/@ag-grid-community/core/dist/es6/propertyKeys.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agAbstractInputField.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/features/setLeftFeature.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agCheckbox.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agDialog.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellEditors/textCellEditor.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellRenderers/groupCellRenderer.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/rowComp.js","../node_modules/@ag-grid-community/core/dist/es6/modules/rowNodeCache/rowNodeBlock.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/checkboxSelectionComponent.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellRenderers/animateShowChangeCellRenderer.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellRenderers/animateSlideCellRenderer.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellEditors/selectCellEditor.js","../node_modules/@ag-grid-community/core/dist/es6/utils/changedPath.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellEditors/popupEditorWrapper.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agRadioButton.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agPanel.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agInputTextField.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agAbstractLabel.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellEditors/popupTextCellEditor.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellEditors/popupSelectCellEditor.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellEditors/largeTextCellEditor.js","../node_modules/@ag-grid-community/core/dist/es6/selectionController.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/rowRenderer.js","../node_modules/@ag-grid-community/core/dist/es6/valueService/valueService.js","../node_modules/@ag-grid-community/core/dist/es6/valueService/expressionService.js","../node_modules/@ag-grid-community/core/dist/es6/templateService.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/popupService.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/autoWidthCalculator.js","../node_modules/@ag-grid-community/core/dist/es6/sortController.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellRendererFactory.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/valueFormatterService.js","../node_modules/@ag-grid-community/core/dist/es6/vanillaFrameworkOverrides.js","../node_modules/@ag-grid-community/core/dist/es6/styling/stylingService.js","../node_modules/@ag-grid-community/core/dist/es6/pagination/paginationProxy.js","../node_modules/@ag-grid-community/core/dist/es6/valueService/valueCache.js","../node_modules/@ag-grid-community/core/dist/es6/rowNodes/selectableService.js","../node_modules/@ag-grid-community/core/dist/es6/misc/resizeObserverService.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/tooltipManager.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agGroupComponent.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agInputTextArea.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agSlider.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agInputNumberField.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agInputRange.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agSelect.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agAngleSelect.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agToggleButton.js","../node_modules/@ag-grid-community/core/dist/es6/pinnedRowModel/pinnedRowModel.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agColorPanel.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agPickerField.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agColorPicker.js","../node_modules/@ag-grid-community/core/dist/es6/utils/color.js","../node_modules/@ag-grid-community/core/dist/es6/utils/promise.js","../node_modules/@ag-grid-community/core/dist/es6/utils/general.js","../node_modules/@ag-grid-community/core/dist/es6/utils/timer.js","../node_modules/@ag-grid-community/core/dist/es6/utils/index.js","../node_modules/@ag-grid-community/core/dist/es6/misc/simpleHttpRequest.js","../node_modules/@ag-grid-community/core/dist/es6/modules/rowNodeCache/rowNodeBlockLoader.js","../node_modules/@ag-grid-community/core/dist/es6/modules/rowNodeCache/rowNodeCache.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/messageBox.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/virtualList.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellRenderers/loadingCellRenderer.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/overlays/loadingOverlayComponent.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/overlays/noRowsOverlayComponent.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/tooltipComponent.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/columnHoverService.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/columnAnimationService.js","../node_modules/@ag-grid-community/core/dist/es6/pagination/paginationAutoPageSizeService.js","../node_modules/@ag-grid-community/core/dist/es6/valueService/changeDetectionService.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/beans.js","../node_modules/@ag-grid-community/core/dist/es6/misc/animationFrameService.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/maxDivHeightScaler.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/autoHeightCalculator.js","../node_modules/@ag-grid-community/core/dist/es6/pagination/paginationComp.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/overlays/overlayWrapperComponent.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/detailRowCompCache.js","../node_modules/@ag-grid-community/core/dist/es6/undoRedo/undoRedoStack.js","../node_modules/@ag-grid-community/core/dist/es6/undoRedo/undoRedoService.js"],"names":["QuerySelector","selector","querySelectorFunc","bind","this","RefSelector","ref","classPrototype","methodOrAttributeName","index","addToObjectProps","attributeName","querySelector","console","error","Listener","eventName","listenerFunc","target","methodName","key","value","props","instanceName","__agComponentMetaData","getOrCreateProps","constructor","name","push","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","prototype","create","__decorate","decorators","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","compIdSequence","Component","_super","template","_this","call","childComponents","annotatedEventListeners","displayed","visible","compId","next","setTemplate","getCompId","createChildComponentsFromTags","parentNode","copyNodeList","childNodes","forEach","childNode","childComp","getContext","createComponentFromElement","copyAttributesFromNode","getGui","addItems","children","items","slice","swapComponentForNode","source","dest","iterateNamedNodeMap","attributes","setAttribute","newComponent","eComponent","replaceChild","insertBefore","document","createComment","nodeName","swapInComponentForQuerySelectors","thisProto","getPrototypeOf","thisNoType","metaData","currentProtoName","querySelectors","eGui","loadTemplate","setTemplateFromElement","element","__agComponent","addAnnotatedEventListeners","wireQuerySelectors","createChildComponentsPreConstruct","_loop_1","thisNoType_1","this_1","resultOfQuery","backingComponent","removeAnnotatedEventListeners","listenerMethods","getAgComponentMetaData","missingOrEmpty","eventListener","listener","addEventListener","res","undefined","results","exec","toString","trim","concat","removeEventListener","setParentComponent","component","parentComponent","getParentComponent","setGui","queryForHtmlElement","cssSelector","queryForHtmlInputElement","appendChild","newChild","isNodeOrElement","childComponent","addFeature","feature","context","wireDependentBean","isDisplayed","setVisible","setDisplayed","event_1","type","EVENT_DISPLAYED_CHANGED","dispatchEvent","addOrRemoveCssClass","className","addOrRemove","destroy","addGuiEventListener","event","addDestroyFunc","addCssClass","removeCssClass","getAttribute","getRefElement","refName","ModuleRegistry","register","module","modulesMap","moduleName","registerModules","modules","assertRegistered","reason","isRegistered","warningKey","warningMessage","doOnce","warn","getRegisteredModules","values","ModuleNames","TouchListener","eElement","preventMouseClick","destroyFuncs","touching","eventService","startListener","onTouchStart","moveListener","onTouchMove","endListener","onTouchEnd","passive","getActiveTouch","touchList","identifier","touchStart","eventType","touchEvent","touches","moved","touchStartCopy","window","setTimeout","touchesMatch","EVENT_LONG_TAP","touch","areEventsNear","event_2","EVENT_TAP","checkForDoubleTap","preventDefault","now","Date","getTime","lastTapTime","DOUBLE_TAP_MILLIS","event_3","EVENT_DOUBLE_TAP","func","AgAbstractField","apply","onValueChange","callbackFn","addDestroyableEventListener","EVENT_CHANGED","getValue","getWidth","clientWidth","setWidth","width","setFixedWidth","setValue","silent","RowContainerComponent","params","childCount","rowTemplatesToAdd","afterGuiAttachedCallbacks","lastMadeVisibleTime","eContainer","eViewport","eWrapper","hideWhenNoChildren","setVerticalScrollPosition","verticalScrollPosition","scrollTop","postConstruct","checkDomOrder","checkVisibility","gridOptionsWrapper","PROP_DOM_LAYOUT","domOrder","isEnsureDomOrder","getRowElement","setHeight","height","style","flushRowTemplates","htmlToAdd","join","appendHtml","lastPlacedElement","appendRowTemplate","rowTemplate","callback","insertTemplateWithDomOrder","ensureDomOrder","eRow","removeRowElement","removeChild","isMadeVisibleRecently","PopupComponent","isPopup","container","parentComp","isAlive","RowDragComp","rowNode","column","cellValue","beans","createIconNoSpan","addDragSource","checkCompatibility","strategy","isRowDragManaged","managed","isTreeData","dragItem","dragSource","RowDrag","dragItemName","getDragItem","dragStartPixels","dragAndDropService","removeDragSource","VisibilityStrategy","parent","setDisplayedOrVisible","neverDisplayed","shown","isRowDrag","isFunction","getColDef","rowDrag","NonManagedVisibilityStrategy","onSuppressRowDrag","EVENT_DATA_CHANGED","workOutVisibility","EVENT_CELL_CHANGED","isSuppressRowDrag","ManagedVisibilityStrategy","EVENT_SORT_CHANGED","onSortChanged","EVENT_FILTER_CHANGED","onFilterChanged","EVENT_COLUMN_ROW_GROUP_CHANGED","onRowGroupChanged","updateSortActive","updateFilterActive","updateRowGroupActive","rowGroups","columnController","getRowGroupColumns","rowGroupActive","sortModel","sortController","getSortModel","sortActive","filterActive","filterManager","isAnyFilterPresent","sortOrFilterOrGroupActive","suppressRowDrag","DndSourceComp","eCell","onDragStart","dragEvent","providedOnRowDrag","dndSourceOnRowDrag","isIE","isBrowserIE","dataTransfer","setDragImage","jsonData","JSON","stringify","data","setData","e","defaultOnRowDrag","isDndSource","__assign","assign","t","s","n","CellComp","scope","rowComp","autoHeightCell","printLayout","hasChartRange","editingCell","suppressRefreshCell","cellEditorVersion","cellRendererVersion","createGridCellVo","rangeSelectionEnabled","rangeController","isEnableRangeSelection","cellFocused","focusedCellController","isCellFocused","cellPosition","firstRightPinned","isFirstRightPinned","lastLeftPinned","isLastLeftPinned","rangeCount","getCellRangeCount","getHasChartRange","getValueAndFormat","setUsingWrapper","chooseCellRenderer","setupColSpan","rowSpan","getRowSpan","getCreateTemplate","unselectable","isEnableCellTextSelection","templateParts","col","getCellWidth","left","modifyLeftForPrintLayout","getCellLeft","valueToRender","getInitialValueToRender","valueSanitised","get","escape","tooltip","getToolTip","tooltipSanitised","colIdSanitised","getId","wrapperStartTemplate","wrapperEndTemplate","stylesFromColDef","preProcessStylesFromColDef","cssClasses","getInitialCssClasses","stylesForRowSpanning","getStylesForRowSpanning","colIdxSanitised","getAriaColumnIndex","usingWrapper","isEnableBrowserTooltips","exists","Number","getRowHeightAsNumber","afterAttached","eParentRow","addDomData","populateTemplate","createCellRendererInstance","angular1Compile","refreshHandle","tooltipManager","registerTooltip","onColumnHover","isHovered","columnHoverService","onCellChanged","refreshCell","isEnableRtl","colsSpanning","last","getLeft","reduce","getActualWidth","onFlashCells","cellId","cellPositionUtils","createId","cells","animateCell","missing","getComponentHolder","colSpan","EVENT_DISPLAYED_COLUMNS_CHANGED","onDisplayColumnsChanged","EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED","onWidthChanged","getColSpanningList","getColSpan","pointer","pinned","getPinned","getDisplayedColAfter","compareArrays","onLeftChanged","getAllDisplayedColumns","indexOf","refreshAriaIndex","colIdx","eCellValue","isSuppressCellSelection","pushAll","preProcessClassesFromColDef","preProcessCellClassRules","getInitialRangeClasses","usingCellRenderer","cellRendererGui","colDef","templateUrl","templateService","getTemplate","getValueToUse","getRenderedRow","isSuppressNavigable","getCellRenderer","cellRenderer","getCellEditor","cellEditor","newData","suppressFlash","suppressCellFlash","forceRefresh","oldValue","valuesDifferent","valuesAreEqual","valueFormatted","valueFormatterService","formatValue","attemptCellRendererRefresh","replaceContentsAfterRefresh","processingFilterChange","isSuppressFlashingCellsBecauseFiltering","isEnableCellChangeFlash","enableCellChangeFlash","flashCell","postProcessStylesFromColDef","postProcessClassesFromColDef","updateAngular1ScopeAndCompile","refreshToolTip","postProcessCellClassRules","cssName","fullName","animationFullName","clearElement","eParentOfValue","putDataIntoCellAfterRefresh","isAngularCompileRows","classList","contains","childElementCount","compiledElement_1","$compile","remove","stylesToUse","processStylesFromColDef","addStylesToElement","cssStyleObjectToMarkup","cellStyle","cssToUse","cellStyleParams","node","$scope","api","getApi","cellStyleFunc","processClassesFromColDef","onApplicableClass","stylingService","processStaticCellClasses","rowIndex","columnApi","getColumnApi","innerHTML","valueToUse","refresh","createCellRendererParams","finalParams","userComponentFactory","createFinalParams","cellRendererType","result","newTooltip","hasNewTooltip","hadTooltip","removeAttribute","unregisterTooltip","val1","val2","equalsMethod","equals","tooltipField","getValueUsingField","isTooltipFieldContainsDots","valueGetter","tooltipValueGetter","getColumn","getTooltipText","processCellClassRules","onNotApplicableClass","processClassRules","cellClassRules","_","rowPinned","includeSelectionComponent","includeRowDraggingComponent","includeDndSourceComponent","cbSelectionIsFunc","checkboxSelection","rowDraggableIsFunc","dndSourceIsFunc","dndSource","enableTextSelection","lookupComponentClassDef","CELL_RENDERER_TYPE_PINNED","CELL_RENDERER_TYPE_NORMAL","useTaskService","angularCompileRows","suppressAnimationFrame","isSuppressAnimationFrame","afterCellRendererCreated","cellRendererTypeNormal","createCellRendererFunc","componentPromise","newCellRenderer","newPinnedRowCellRenderer","then","taskQueue","createTask","valueService","eGridCell","addRowCompListener","addRenderedRowListener","lockedClosedGroup","leafGroup","isPivotMode","isOpenGroup","group","expanded","footer","groupFootersEnabled","isGroupIncludeFooter","groupAlwaysShowAggData","isGroupSuppressBlankHeader","ignoreAggData","onMouseEvent","mouseEvent","isStopPropagationForAgGrid","onCellClicked","onMouseDown","onCellDoubleClicked","onMouseOut","onMouseOver","dispatchCellContextMenuEvent","cellContextMenuEvent","createEvent","EVENT_CELL_CONTEXT_MENU","onCellContextMenu","domEvent","gridApi","cellMouseOutEvent","EVENT_CELL_MOUSE_OUT","clearMouseOver","cellMouseOverEvent","EVENT_CELL_MOUSE_OVER","setMouseOver","cellDoubleClickedEvent","EVENT_CELL_DOUBLE_CLICKED","isSingleClickEdit","isSuppressClickEdit","startRowOrCellEdit","keyPress","charPress","isFullRowEdit","startRowEditing","startEditingIfEnabled","isCellEditable","cellStartedEdit","afterCellEditorCreated","createCellEditorParams","createCellEditor","focusCell","newCellEditor","map","popupEditorWrapper","wireBean","init","isCancelBeforeStart","render","cellEditorInPopup","setInlineEditingClass","addPopupCellEditor","addInCellEditor","afterGuiAttached","EVENT_CELL_EDITING_STARTED","ePopupGui","useModelPopup","isStopEditingWhenGridLosesFocus","hideEditorPopup","popupService","addPopup","onPopupEditorClosed","positionPopupOverComponent","eventSource","ePopup","keepWithinBounds","stopRowOrCellEdit","editingInline","popupEditorShowing","onKeyDown","stopEditing","stopEditingAndFocus","parseValue","suppressNavigateAfterEdit","navigateAfterEdit","newValue","valueParser","expressionService","evaluate","forceBrowserFocus","setFocusedCell","setFocusInOnEditor","focusIn","isEditing","which","keyCode","KEY_ENTER","onEnterKeyDown","KEY_F2","onF2KeyDown","KEY_ESCAPE","onEscapeKeyDown","KEY_TAB","onTabKeyDown","KEY_BACKSPACE","KEY_DELETE","onBackspaceOrDeleteKeyPressed","KEY_DOWN","KEY_UP","KEY_RIGHT","KEY_LEFT","onNavigationKeyPressed","setFocusOutOnEditor","focusOut","shiftKey","onShiftRangeSelect","rowRenderer","navigateToNextCell","endCell","extendLatestRangeInDirection","ensureCellVisible","isEnterMovesDown","isEnterMovesDownAfterEdit","onKeyPress","getTarget","pressedChar","String","fromCharCode","charCode","onSpaceKeyPressed","isEventFromPrintableCharacter","isRowSelection","selected","isSelected","setSelected","button","ctrlKey","metaKey","_a","isCellInAnyRange","getCellPosition","isBrowserEdge","getCellRanges","isElementChildOfClass","isLeftClick","thisCell","extendLatestRangeToCell","ctrlKeyPressed","setRangeToCell","cellMouseDownEvent","EVENT_CELL_MOUSE_DOWN","isDoubleClickOnIPad","isIOSUserAgent","isEventSupported","nowMillis","lastIPadMouseClickEvent","cellClickedEvent","EVENT_CELL_CLICKED","singleClickEdit","getParentRow","setParentRow","detach","cancelTask","selectionHandle","leftPosition","PINNED_LEFT","PINNED_RIGHT","getPinnedLeftContainerWidth","getBodyContainerWidth","getRangeBorders","leftCol","rightCol","isRtl","top","right","bottom","thisCol","getDisplayedColBefore","ranges","filter","range","isCellInSpecificRange","startRow","getRangeStartRow","endRow","getRangeEndRow","rowPositionUtils","sameRow","columns","classes","count","Math","min","isSingleCell","borders","onRowIndexChanged","onCellFocused","onRangeSelectionChanged","newRangeCount","updateRangeBorders","cellRanges","every","includes","DIMENSION","VALUE","shouldHaveSelectionHandle","rangesLen","cellRange","fillHandleIsAvailable","isEnableFillHandle","isEnableRangeHandle","isCategoryCell","isContiguousRange","isLastCellOfRange","addSelectionHandle","cellRangeType","getType","createElement","updateRangeBordersIfRangeCount","rangeBorders","isTop","isRight","isBottom","isLeft","onFirstRightPinnedChanged","onLastLeftPinnedChanged","eCellWrapper","addRowDragging","addDndSource","addSelectionCheckbox","getFrameworkOverrides","frameworkOverrides","pagination","isPagination","rowDragManaged","clientSideRowModelActive","isRowModelDefault","rowDraggingComp","dndSourceComp","cbSelectionComponent","visibleFunc","setDomData","DOM_DATA_KEY_CELL_COMP","isMoreThanOneCell","focus","activeElement","body","fullRowEdit","cancel","stopRowEditing","newValueExists","isCancelAfterEnd","setDataValue","EVENT_CELL_EDITING_STOPPED","__spreadArrays","il","k","a","j","jl","PropertyKeys","STRING_PROPERTIES","OBJECT_PROPERTIES","ARRAY_PROPERTIES","NUMBER_PROPERTIES","BOOLEAN_PROPERTIES","FUNCTION_PROPERTIES","ALL_PROPERTIES","FRAMEWORK_PROPERTIES","AgAbstractInputField","config","TEMPLATE","setInputType","addInputListeners","eInput","inputType","getInputElement","setInputWidth","setElementWidth","setInputName","SetLeftFeature","columnOrGroup","ariaEl","getDomLayout","DOM_LAYOUT_PRINT","setColsSpanning","getColumnOrGroup","EVENT_LEFT_CHANGED","setLeftFirstTime","suppressMoveAnimation","isSuppressColumnMoveAnimation","oldLeftExists","getOldLeft","columnAnimationService","isActive","animateInLeft","oldLeft","setLeft","actualLeft","executeNextVMTurn","colOrGroup","colIndex","AgCheckbox","nativeInputClassName","displayTag","labelAlignment","iconMap","unselected","indeterminate","readOnly","replace","useNativeCheckboxes","addIconsPlaceholder","updateIcons","onCheckboxClick","onClick","checked","getNextValue","setPassive","isReadOnly","setReadOnly","toggle","nextValue","dispatchChange","getIconName","prop","readOnlyStr","eIconEl","iconDiv","addAgGridEventPath","AgDialog","RESIZE_TEMPLATE","MAXIMIZE_BTN_TEMPLATE","resizable","isResizable","movable","isMoving","isMaximizable","isMaximized","maximizeListeners","resizeListenerDestroy","isResizing","lastPosition","x","y","maximizable","moveElement","eTitleBar","relatedTarget","bringPopupToFront","setMovable","setMaximizable","addResizers","setResizable","renderComponent","alwaysOnTop","modal","close","resizers","DOMParser","parseFromString","firstChild","createMap","resizerMap","topLeft","topRight","bottomRight","bottomLeft","getResizerElement","side","onResizeStart","updateDragStartPosition","clientX","clientY","onResize","match","isHorizontal","isVertical","calculateMouseMovement","movementX","movementY","offsetLeft","offsetTop","direction","oldWidth","newWidth","skipWidth","position","minWidth","oldHeight","getHeight","newHeight","skipHeight","minHeight","offsetElement","onResizeEnd","localEventService","onMoveStart","onMove","_b","anywhereWithin","topBuffer","getBodyHeight","onMoveEnd","toggleMaximize","refreshMaximizeIcon","maximizeIcon","minimizeIcon","clearMaximizebleListeners","destroyListener","maximizeButtonComp","keys","val","el","onDragging","onDragStop","dragService","pointerEvents","moveElementDragListener","addTitleBarButton","TextCellEditor","startValue","focusAfterAttached","getStartValue","highlightAllOnFocus","pageUp","KEY_PAGE_UP","pageDown","KEY_PAGE_DOWN","isBrowserSafari","select","length_1","setSelectionRange","useFormatter","refData","GroupCellRenderer","isGroupIncludeTotalFooter","assignBlankValueToGroupFooterCell","embeddedRowMismatch","isEmbeddedRowMismatch","cellIsEmpty","cellIsBlank","setupDragOpenParents","addExpandAndContract","addCheckboxIfNeeded","addValueElement","setupIndent","level","fullWidth","isEmbedFullWidthRows","pinnedLeftCell","pinnedRightCell","bodyCell","isPinningLeft","setIndent","isGroupHideOpenParents","paddingCount","uiLevel","padding","setPaddingDeprecatedWay","indentClass","paddingPx","paddingRight","paddingLeft","suppressPadding","EVENT_UI_LEVEL_CHANGED","displayedGroup","createFooterCell","hasChildren","createGroupCell","addChildCount","createLeafCell","footerValue","footerValueGetter","paramsClone","cloneObject","eValue","rendererPromise","rowGroupColumn","columnToUse","groupName","useFullWidth","useInnerRenderer","cellRendererParams","innerCellRenderer","groupCellRendererParams","groupedColumnDef","cellRendererPromise","groupInnerRendererClass","DEFAULT","newInnerCellRenderer","groupColumnRendererClass","rendererToUse","bindCellRendererToHtmlElement","innerText","newFullWidthGroupRowInnerCellRenderer","suppressCount","EVENT_ALL_CHILDREN_COUNT_CHANGED","updateChildCount","allChildrenCount","eChildCount","isUserWantsSelected","paramsCheckbox","checkbox","checkboxNeeded","detail","cbSelectionComponent_1","eCheckbox","eGroupCell","eExpandedIcon","eContractedIcon","eExpanded","eContracted","onExpandClicked","EVENT_EXPANDED_CHANGED","showExpandAndContractIcons","onAllChildrenCountChanged","isEnableGroupEdit","isExpandable","suppressDoubleClickExpand","onCellDblClicked","isKeyPressed","suppressEnterExpand","onExpandOrContract","draggedFromHideOpenParents","isRowGroupDisplayed","stopPropagationForAgGrid","isElementInEventPath","setExpanded","reducedLeafNode","pivotModeAndLeafGroup","notExpandable","addLeafIndentClass","RowComp","parentScope","bodyContainerComp","pinnedLeftContainerComp","pinnedRightContainerComp","fullWidthContainerComp","animateIn","useAnimationFrameForCreate","embedFullWidth","eAllRowContainers","active","rowContainerReadyCount","refreshNeeded","columnRefreshPending","cellComps","createSecondPassFuncs","removeFirstPassFuncs","removeSecondPassFuncs","initialised","elementOrderChanged","rowIsEven","paginationPage","paginationProxy","getCurrentPage","setAnimateFlags","rowFocused","isRowFocused","createChildScopeOrNull","setupRowContainers","addListeners","slideRowIn","onTopChanged","fadeRowIn","createTemplate","contents","extraCssClass","rowHeight","rowClasses","getInitialRowClasses","rowIdSanitised","id","userRowStyles","preProcessStylesFromGridOptions","businessKey","getRowBusinessKey","businessKeySanitised","rowTopStyle","getInitialRowTopStyle","rowIdx","getRowIndexString","headerRowCount","gridPanel","headerRootComp","getHeaderRowCount","getCellForCol","cellComp","getColId","afterFlush","executeProcessRowPostCreateFunc","getProcessRowPostCreateFunc","eBodyRow","ePinnedLeftRow","ePinnedRightRow","pixels","roundRowTopToBounds","oldRowTop","rowTop","afterPaginationPixels","applyPaginationOffset","afterScalingPixels","maxDivHeightScaler","getRealPixelPosition","isSuppressRowTransform","businessKeyForNodeFunc","getBusinessKeyForNodeFunc","areAllContainersReady","lazyCreateCells","cols","cellTemplatesAndComps","createCells","callAfterRowAttachedOnCells","refreshCells","createRowContainer","rowContainerComp","useAnimationsFrameForCreate","afterRowAttached","newChildScope","$new","$destroy","isFullWidthCell","isDetailCell","doingMasterDetail","pivotMode","isFullWidthGroup","isGroupUseEntireRow","stub","createFullWidthRows","LOADING_CELL_RENDERER","LOADING_CELL_RENDERER_COMP_NAME","DETAIL_CELL_RENDERER","DETAIL_CELL_RENDERER_COMP_NAME","FULL_WIDTH_CELL_RENDERER","GROUP_ROW_RENDERER","GROUP_ROW_RENDERER_COMP_NAME","setupNormalRowContainers","centerCols","leftCols","rightCols","getAllDisplayedCenterVirtualColumnsForRow","getDisplayedLeftColumnsForRow","getDisplayedRightColumnsForRow","fullWidthRow","createFullWidthRowContainer","eFullWidthRowBody","fullWidthRowComponentBody","eFullWidthRowLeft","fullWidthRowComponentLeft","eFullWidthRowRight","fullWidthRowComponentRight","eFullWidthRow","fullWidthRowComponent","oldRowTopExists","editingRow","isFullWidth","refreshFullWidth","tryRefresh","eCellComp","createFullWidthParams","normalSuccess","bodySuccess","leftSuccess","rightSuccess","EVENT_HEIGHT_CHANGED","onRowHeightChanged","EVENT_ROW_SELECTED","onRowSelected","EVENT_ROW_INDEX_CHANGED","EVENT_TOP_CHANGED","onExpandedChanged","onRowNodeDataChanged","onRowNodeCellChanged","EVENT_DRAGGING_CHANGED","onRowNodeDraggingChanged","EVENT_HEIGHT_SCALE_CHANGED","onDisplayedColumnsChanged","EVENT_VIRTUAL_COLUMNS_CHANGED","onVirtualColumnsChanged","EVENT_COLUMN_RESIZED","onColumnResized","EVENT_CELL_FOCUSED","onCellFocusChanged","EVENT_PAGINATION_CHANGED","onPaginationChanged","EVENT_GRID_COLUMNS_CHANGED","onGridColumnsChanged","EVENT_MODEL_UPDATED","onModelUpdated","EVENT_COLUMN_MOVED","onColumnMoved","addListenersForCellComps","forEachCellComp","removeRenderedCells","update","postProcessCss","postProcessStylesFromGridOptions","postProcessClassesFromGridOptions","postProcessRowClassRules","postProcessRowDragging","dragging","row","destroyFullWidthComponents","detailRowCompCache","addOrDestroy","getContainerForCell","pinnedType","refreshCellsInAnimationFrame","insertCellsIntoContainer","colIdsToRemove","removeFromArray","eligibleToBeRemoved","isCellEligibleToBeRemoved","colIds","indexStr","displayedColumns","renderedCell","isCellInWrongRow","editing","focused","ensureCellInCorrectContainer","eOldContainer","rowWeWant","cellTemplates","newCellComps","colId","existingCell","createNewCell","correctChildOrder","setDomChildOrder","eRowContainer","gow","DOM_DATA_KEY_RENDERED_ROW","newCellComp","cellTemplate","onRowDblClick","onRowClick","createRowEvent","createRowEventWithSource","agEvent","EVENT_ROW_DOUBLE_CLICKED","EVENT_ROW_CLICKED","multiSelectKeyPressed","shiftKeyPressed","selectable","isSuppressRowClickSelection","multiSelectOnClick","isRowMultiSelectWithClick","rowDeselectionWithCtrl","isRowDeselection","setSelectedParams","clearSelection","rangeSelect","cellRendererName","eRowCallback","cellRendererCallback","gui","cachedRowComp","newFullWidthCellRenderer","masterDetailModuleLoaded","MasterDetailModule","processClassesFromGridOptions","preProcessRowClassRules","firstRowOnPage","isFirstRowOnPage","lastRowOnPage","isLastRowOnPage","getPageFirstRow","getPageLastRow","newFirst","newLast","processRowClassRules","rowClassRules","EVENT_ROW_VALUE_CHANGED","setEditingRow","EVENT_ROW_EDITING_STARTED","EVENT_ROW_EDITING_STOPPED","sourceRenderedCell","iterateObject","classStr","process","rowCls","isArray","rowClass","getRowClass","rowClassFunc","getRowClassFunc","rowStyles","processStylesFromGridOptions","rowStyle","getRowStyle","rowStyleFuncResult","rowStyleFunc","getRowStyleFunc","setRowTop","addHoverFunctionality","onMouseEnter","onMouseLeave","EVENT_MOUSE_ENTER","isSuppressRowHoverHighlight","EVENT_MOUSE_LEAVE","getVScrollPosition","minPixel","maxPixel","max","heightPx_1","EVENT_VIRTUAL_ROW_REMOVED","animate","destroyContainingCells","getAndClearDelayedDestroyFunctions","currentPage","topPx","reverse","isRowPinned","getPixelOffset","topPx_1","transform","getAndClearNextVMTurnFunctions","getRowNode","getRenderedCellForColumn","spanList","cmp","updateRowIndexes","rowIndexStr","rowIsEvenChanged","getBodyRowElement","ct","getPinnedLeftRowElement","getPinnedRightRowElement","getFullWidthRowElement","RowNodeBlock","blockNumber","rowNodeCacheParams","version","state","STATE_DIRTY","blockSize","isAnyNodeOpen","rowCount","forEachNodeCallback","getRowUsingLocalIndex","forEachNode","sequence","deep","childrenCache","forEachNodeDeep","forEachNodeShallow","getVersion","getLastAccessed","lastAccessed","dontTouchLastAccessed","lastAccessedSequence","localIndex","rowNodes","createRowNodes","getStartRow","getEndRow","getBlockNumber","setDirty","setDirtyAndPurge","getState","setRowNode","setBlankRowNode","newRowNode","createBlankRowNode","setNewData","dataItem","setDataAndId","setRowHeight","load","STATE_LOADING","loadFromDatasource","pageLoadFailed","STATE_FAILED","EVENT_LOAD_COMPLETE","success","page","lastRow","populateWithRowData","rows","rowNodesToRefresh","redrawRows","clearRowTop","pageLoaded","STATE_LOADED","cleanNumber","CheckboxSelectionComponent","createAndAddIcons","eCheckedIcon","eUncheckedIcon","eIndeterminateIcon","onDataChanged","onSelectionChanged","onSelectableChanged","showOrHideSelect","onCheckedClicked","groupSelectsFiltered","isGroupSelectsFiltered","onUncheckedClicked","onIndeterminateClicked","onCheckboxClicked","EVENT_SELECTABLE_CHANGED","isRowSelectableFunc","getIsRowSelectableFunc","checkboxCallbackExists","isCellCheckboxSelection","AnimateShowChangeCellRenderer","refreshCount","eDelta","showDelta","delta","absDelta","abs","deltaUp","setTimerToRemoveDelta","refreshCountCopy","hideDeltaValue","lastValue","AnimateSlideCellRenderer","eCurrent","addSlideAnimation","ePrevious","SelectCellEditor","eSelect","option","valueFormattedExits","text","stopPropagation","ChangedPath","keepingColumns","rootNode","nodeIdsToColumns","mapToItems","pathRoot","setInactive","depthFirstSearchChangedPath","pathItem","depthFirstSearchEverything","traverseEverything","childrenAfterGroup","forEachChangedNodeDepthFirst","traverseLeafNodes","executeFromRootNode","createPathItems","newEntryCount","newEntry","populateColumnsMap","linkPathItems","thisItem","parentItem","addParentNode","canSkip","getValueColumnsForNode","valueColumns","colsForThisNode","getNotValueColumnsForNode","PopupEditorWrapper","getGuiCalledOnChild","isUserSuppressingKeyboardEvent","DOM_KEY_POPUP_EDITOR_WRAPPER","AgRadioButton","AgPanel","closable","positioned","dragStartPosition","size","hideTitleBar","title","centered","setBodyComponent","setTitle","setClosable","eTitleBarButtons","focusEl","eContentWrapper","popupParent","getPopupParent","refreshSize","center","parentElement","parentRect","getBoundingClientRect","skipX","offsetWidth","offsetHeight","positionPopup","parseInt","isPercent","setFixedHeight","getAbsoluteHeight","offsetParent","clientHeight","maxHeight","getAbsoluteWidth","maxWidth","closeButtonComp","CLOSE_BTN_TEMPLATE","onBtClose","bodyComponent","buttons","len","insertAdjacentElement","getInnerHeight","getBodyWidth","getInnerWidth","eTitle","AgInputTextField","ret","AgAbstractLabel","labelSeparator","label","labelWidth","setLabelSeparator","setLabel","setLabelWidth","setLabelAlignment","refreshLabel","eLabel","alignment","PopupTextCellEditor","PopupSelectCellEditor","LargeTextCellEditor","textarea","maxLength","__param","paramIndex","decorator","SelectionController","setBeans","loggerFactory","logger","reset","EVENT_ROW_DATA_CHANGED","log","groupSelectsChildren","isGroupSelectsChildren","setLastSelectedNode","lastSelectedNode","getLastSelectedNode","getSelectedNodes","selectedNodes","getSelectedRows","selectedRows","removeGroupsFromSelection","updateGroupsFromChildrenSelections","changedPath","rowModel","ROW_MODEL_TYPE_CLIENT_SIDE","getRootNode","calculateSelectedFromChildren","getNodeForIdIfSelected","clearOtherNodes","rowNodeToKeepSelected","groupsToRefresh","updatedCount","otherRowNode","suppressFinishActions","syncInRowNode","oldNode","syncInOldRowNode","syncInNewRowNode","setSelectedInitialValue","getBestCostNodeSelection","topLevelNodes","getTopLevelNodes","traverse","nodes","l","setRowModel","isEmpty","nodeId","deselectAllRowNodes","justFiltered","selectThisNode","rowModelClientSide","forEachNodeAfterFilter","EVENT_SELECTION_CHANGED","selectAllRowNodes","Error","clientSideRowModel","selectNode","tryMulti","deselectIndex","getRow","deselectNode","selectIndex","RowRenderer","destroyFuncsForColumnListeners","rowCompsByIndex","floatingTopRowComps","floatingBottomRowComps","refreshInProgress","registerGridCore","gridCore","getGridCore","agWire","registerGridComp","rowContainers","getRowContainers","onPageLoaded","EVENT_PINNED_ROW_DATA_CHANGED","onPinnedRowDataChanged","EVENT_BODY_SCROLL","redrawAfterScroll","EVENT_BODY_HEIGHT_CHANGED","onDomLayoutChanged","registerCellEventListeners","embedFullWidthRows","redrawAfterModelUpdate","EVENT_FLASH_CELLS","EVENT_COLUMN_HOVER_CHANGED","EVENT_RANGE_SELECTION_CHANGED","EVENT_COLUMN_PINNED","EVENT_COLUMN_VISIBLE","refreshListenersToColumnsForCellComps","removeGridColumnListeners","getAllGridColumns","forEachCellWithThisCol","leftChangedListener","widthChangedListener","firstRightPinnedChangedListener","lastLeftPinnedChangedListener","EVENT_WIDTH_CHANGED","EVENT_FIRST_RIGHT_PINNED_CHANGED","EVENT_LAST_LEFT_PINNED_CHANGED","destroyRows","datasourceChanged","firstRenderedRow","lastRenderedRow","rowIndexesToRemove","removeRowComps","refreshEvent","keepRenderedRows","newPage","getAllCellsForColumn","eCells","refreshFloatingRowComps","refreshFloatingRows","pinnedRowModel","getPinnedTopRowData","floatingTopPinnedLeft","floatingTopPinnedRight","floatingTop","floatingTopFullWidth","getPinnedBottomRowData","floatingBottomPinnedLeft","floatingBottomPinnedRight","floatingBottom","floatingBottomFullWith","rowComps","flushContainers","recycleRows","onlyBody","getRenderedIndexesForRowNodes","renderedRow","indexesToRemove","getCellToRestoreFocusToAfterRefresh","focusedCell","suppressKeepFocus","getFocusCellToUseAfterRefresh","domData","getDomData","getLockOnRefresh","sizeContainerToPageHeight","scrollToTopIfNewData","isAnimateRows","rowsToRecycle","binRowComps","redraw","restoreFocusedCell","releaseLockOnRefresh","scrollToTop","suppressScrollToTop","isSuppressScrollOnNewData","containers","pinnedLeft","pinnedRight","containerHeight","getCurrentPageHeight","setModelHeight","realHeight","getUiContainerHeight","forEachRowComp","flashCells","forEachCellCompFiltered","refreshCellParams","force","getCellRendererInstances","getCellEditorInstances","getEditingCells","rowIdsMap","colIdsMap","normal","PINNED_TOP","PINNED_BOTTOM","colKey","getGridColumn","processRow","floating","rowsToRemove","indexToRemove","removeRowCompsNotToDraw","indexesToDraw","indexesToDrawMap","indexesNotToDraw","calculateIndexesToDraw","createArrayOfNumbers","doNotUnVirtualiseRow","sort","afterScroll","updateOffset","workOutFirstAndLastRowsToRender","nextVmTurnFunctions","createOrUpdateRowComp","addDestroyTask","destroyRowComps","checkAngularCompile","updateRowCount","pinningLeft","pinningRight","isPinningRight","redrawFullWidthEmbeddedRows","refreshFullWidthRows","alreadyRendered","createRowComp","rowCompsMap","delayedFuncs","executeInAWhile","$apply","isRowsToRender","paginationOffset","getOffset","bodyVRange","bodyTopPixel","bodyBottomPixel","bufferPixels","getRowBufferInPixels","firstPixel","lastPixel","ensureAllRowsInRangeHaveHeightsCalculated","firstRowIndex","getRowIndexAtPixel","lastRowIndex","pageFirstRow","pageLastRow","rowLayoutNormal","DOM_LAYOUT_NORMAL","suppressRowCountRestriction","isSuppressMaxRenderedRowRestriction","rowBufferMaxSize","getRowBuffer","firstDiffers","lastDiffers","EVENT_VIEWPORT_CHANGED","firstRow","EVENT_FIRST_DATA_RENDERED","dispatchEventOnce","topPixel","bottomPixel","ensureRowHeightsValid","getFirstVirtualRenderedRow","getLastVirtualRenderedRow","rowHasFocus","isRowNodeFocused","rowIsEditing","rowIsDetail","isRowPresent","getRenderedNodes","renderedRows","currentCell","allowUserOverride","nextCell","finished","getLastCellOfColSpan","cellNavigationService","getNextCellToFocus","userFunc","getNavigateToNextCellFunc","userCell","previousCellPosition","nextCellPosition","getComponentForCell","cell","colSpanningList","gridCell","ensureIndexVisible","isPinned","ensureColumnVisible","horizontallyScrollHeaderCenterAndFloatingCenter","animationFrameService","flushAllFrames","startEditingCell","rowComponent","gridRow","previousRenderedCell","keyboardEvent","backwards","moveToCellAfter","tabToNextCell","getFocusedCell","moveToNextEditingRow","moveToNextEditingCell","moveToNextCellNotEditing","nextRenderedCell","findNextCellToFocusOn","foundCell","moveEditToNextCellOrRow","pGridCell","nGridCell","pRow","nRow","startEditing","getNextTabbedCell","getTabToNextCellFunc","lookupRowNodeForCell","nextCellComp","getPinnedTopRow","getPinnedBottomRow","ValueService","cellExpressions","isEnableCellExpressions","forFilter","field","groupDataExists","groupData","aggDataExists","aggData","filterValueGetter","executeFilterValueGetter","executeValueGetter","isFieldContainsDots","cellValueGetter","substring","getPrimaryColumn","newValueHandler","valueSetter","valueWasDifferent","setValueUsingField","resetQuickFilterAggregateText","valueCache","onCellValueChanged","EVENT_CELL_VALUE_CHANGED","fieldPieces","split","currentObject","fieldPiece","shift","getValueCallback","valueFromCache","otherColumn","getKeyForNode","keyCreator","ExpressionService","expressionToFunctionCache","expressionOrFunc","expression","evaluateExpression","createExpressionFunction","javaScriptFunction","columnGroup","functionBody","createFunctionBody","theFunction","Function","TemplateService","templateCache","waitingCallbacks","url","templateFromCache","callbackList","that","client","XMLHttpRequest","onload","handleHttpResult","open","send","httpResult","status","response","responseText","callbacks","that_1","PopupService","popupList","getDocument","ePopupParent","getRootGui","positionPopupForMenu","sourceRect","eDocument","documentElement","keepYWithinBounds","maxX","xRightPosition","xLeftPosition","positionPopupUnderMouseEvent","calculatePointerAlign","nudgeX","nudgeY","callPostProcessPopup","documentRect","positionPopupUnderComponent","alignSide","getPostProcessPopupFunc","keepXWithinBounds","docElement","isBody","diff","heightOfParent","maxY","widthOfParent","scrollLeft","addAsModalPopup","eChild","closeOnEsc","closedCallback","click","pos","findIndex","popup","hideFunc","theme","environment","getTheme","setAlwaysOnTop","popupHidden","hidePopupOnKeyboardEvent","hidePopup","hidePopupOnMouseEvent","hidePopupOnTouchEvent","isEventFromCurrentPopup","isEventSameChainAsOriginalEvent","EVENT_DRAG_STARTED","indexOfThisChild","originalClick","mouseEventOrTouch","screenX_1","screenX","screenY_1","screenY","xMatch","yMatch","getWrapper","containsClass","querySelectorAll","popupLen","alwaysOnTopList","onTopLength","AutoWidthCalculator","registerHeaderRootComp","getPreferredWidthForColumn","skipHeader","eHeaderCell","getHeaderCellForColumn","eDummyContainer","eBodyContainer","getCenterContainer","putRowCellsIntoDummyContainer","cloneItemIntoDummy","dummyContainerWidth","getAutoSizePadding","comp","forEachHeaderElement","headerElement","headerWrapperComp","eCellClone","cloneNode","eCloneParent","display","SortController","getColumnsWithSortingOrdered","getSort","SortController_1","progressSort","multiSort","nextDirection","getNextSortDirection","setSortForColumn","SORT_ASC","SORT_DESC","setSort","sortedAt","valueOf","setSortedAt","isSuppressMultiSort","clearSortBarThisColumn","dispatchSortChangedEvents","columnToSkip","getPrimaryAndSecondaryAndAutoColumns","columnToClear","sortingOrder","getSortingOrder","DEFAULT_SORTING_ORDER","currentIndex","notInArray","lastItemInArray","setSortModel","sortModelProvided","sortForCol","sortable","sortModelEntry","compareColIds","columnsWithSorting","getSortForRowController","inverter","CellRendererFactory","cellRendererMap","CellRendererFactory_1","ANIMATE_SLIDE","ANIMATE_SHOW_CHANGE","GROUP","addCellRenderer","ValueFormatterService","formatter","pinnedRowValueFormatter","valueFormatter","VanillaFrameworkOverrides","action","timeout","addEventListenerOutsideAngular","useCapture","StylingService","processAllCellClasses","classRules","classNames","rule","resultOfRule","cellClass","classOrClasses","cellClassFunc","cssClassItem","PaginationProxy","topDisplayedRowIndex","bottomDisplayedRowIndex","pixelOffset","masterRowCount","paginateChildRows","isPaginateChildRows","startPixel","endPixel","startLimitIndex","endLimitIndex","calculatePages","modelUpdatedEvent","paginationChangedEvent","goToPage","pixel","topRowBounds","bottomRowBounds","getNodesInRangeForSelection","firstInRange","lastInRange","getRowBounds","getRowCount","goToPageWithIndex","pageNumber","floor","pageSize","isLastPageFound","isLastRowFound","goToNextPage","goToPreviousPage","goToFirstPage","goToLastPage","lastPage","getPageSize","getTotalPages","totalPages","setPageSize","getPaginationPageSize","calculatePagesAllRows","calculatePagesMasterRowsOnly","calculatedPagesNotActive","setZeroRows","getTopLevelRowCount","masterLastRowIndex","isNumeric","masterPageStartIndex","masterPageEndIndex","getTopLevelRowDisplayedIndex","firstIndexNotToShow","getMasterRowCount","maxRowIndex","ValueCache","cacheVersion","isValueCache","neverExpires","isValueCacheNeverExpires","expire","__cacheVersion","__cacheData","SelectableService","updateSelectableAfterGrouping","recurseDown","updateSelectableAfterFiltering","childrenAfterFilter","nextChildrenFunc","child","rowSelectable","firstSelectable","find","setRowSelectable","ResizeObserverService","observeResize","debounceDelay","frameworkFactory","debouncedCallback","debounce","suppressResize","isSuppressBrowserResizeObserver","ResizeObserver","resizeObserver","observe","disconnect","useBrowserResizeObserver","widthLastTime","heightLastTime","running","periodicallyCheckWidthAndHeight","usePolyfill","TooltipManager","DEFAULT_HIDE_TOOLTIP_TIMEOUT","MOUSEOUT_HIDE_TOOLTIP_TIMEOUT","MOUSEOVER_SHOW_TOOLTIP_TIMEOUT","HIDE_SHOW_ONLY","showTimeoutId","hideTimeoutId","registeredComponents","targetCmp","tooltipComp","destroyFunc","eventDestroyFuncs","processMouseOver","processMouseMove","hideTooltip","processMouseOut","registeredComponent","activeComponent","delay","lastHoveredComponent","clearTimers","lastMouseEvent","showTooltip","containsElement","createTooltipComponent","newTooltipComponent","closeFnc","clearRegisteredComponent","showOnly","clearTimeout","AgGroupComponent","suppressEnabledCheckbox","suppressOpenCloseIcons","enabled","alignItems","initialItems","localeTextFunc","getLocaleTextFunc","cbGroupEnabled","setEnabled","setAlignItems","hideEnabledCheckbox","hideOpenCloseIcons","setupExpandContract","eGroupClosedIcon","createIcon","eGroupOpenedIcon","setOpenClosedIcons","groupTitle","toggleGroupExpand","folderOpen","isExpanded","newCls","item","addItem","groupContainer","hideItem","hide","itemToHide","lbGroupTitle","skipToggle","isEnabled","onEnableChange","newSelection","eToolbar","AgInputTextArea","AgSlider","eventChanged","eText","textValue","parseFloat","eSlider","sliderValue","setSliderWidth","setTextFieldWidth","setMinValue","minValue","setMin","setMaxValue","maxValue","setMax","setStep","step","AgInputNumberField","normalizeValue","precision","adjustPrecision","floatString","toFixed","setPrecision","AgInputRange","AgSelect","addOptions","options","addOption","optionEl","AgAngleSelect","radius","offsetX","offsetY","dragListener","eParentCircle","parentCircleRect","calculateAngleDrag","eAngleValue","degrees","floatValue","updateNumberInput","normalizeNegativeValue","normalizedValue","positionChildCircle","radians","rect","eChildCircle","centerX","centerY","cos","sin","calculatePolar","atan2","toDegrees","sqrt","calculateCartesian","toRadians","getRadius","setOffsetX","setOffsetY","offset","dx","dy","PI","normalizeAngle180","setRadius","radiansValue","AgToggleButton","PinnedRowModel","setPinnedTopRowData","setPinnedBottomRowData","pinnedTopRows","pinnedBottomRows","getRowAtPixel","rowData","createNodesFromData","allData","nextRowTop_1","getRowHeightForNode","setRowIndex","getPinnedTopTotalHeight","getTotalHeight","getPinnedTopRowCount","getPinnedBottomRowCount","forEachPinnedTopRow","forEachPinnedBottomRow","getPinnedBottomTotalHeight","lastNode","AgColorPanel","H","S","B","A","isSpectrumDragging","isSpectrumHueDragging","isSpectrumAlphaDragging","colorChanged","picker","initRecentColors","spectrumVal","onSpectrumDraggerDown","onSpectrumDraggerMove","spectrumHue","onSpectrumHueDown","onSpectrumHueMove","spectrumAlpha","onSpectrumAlphaDown","onSpectrumAlphaMove","onMouseUp","recentColors","onRecentColorClick","refreshSpectrumRect","spectrumValRect","refreshHueRect","spectrumHueRect","refreshAlphaRect","spectrumAlphaRect","moveDragger","moveHueSlider","moveAlphaSlider","valRect","setSpectrumValue","hueRect","slider","spectrumHueSlider","sliderRect","alphaRect","spectrumAlphaSlider","color","fromHSB","spectrumColor","rgbaColor","toRgbaString","colorPicker","fromString","backgroundColor","spectrumDragger","saturation","brightness","dragger","draggerRect","innerHtml","toHSB","h","isNaN","addRecentColor","maxRecentColors","AgPickerField","displayedPicker","isDestroyingPicker","eButton","showPicker","pickerIcon","AgColorPicker","eDisplayField","eGuiRect","colorDialog","colorPanel","wasDestroying","PromiseStatus","Color","g","str","fromHexString","hex","nameToHex","fromRgbaString","hexRe","shortHexRe","rgbRe","rgbaRe","fromArray","arr","alpha","rgb","HSBtoRGB","padHex","toHexString","round","fractionDigits","components","pow","RGBtoHSB","NaN","rc","gc","bc","f","q","derive","hueShift","saturationFactor","brightnessFactor","opacityFactor","hsb","rgba","brighter","darker","freeze","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","FUNCTION_STRIP_COMMENTS","FUNCTION_ARGUMENT_NAMES","HTML_ESCAPES","reUnescapedHtml","Utils","doOnceFlags","getMaxSafeInteger","MAX_SAFE_INTEGER","e1","e2","pixelCount","diffX","diffY","jsonEquals","shallowCompare","arr1","arr2","getNameOfClass","theClass","funcAsString","fieldContainsDots","fields","getElementSize","getComputedStyle","paddingTop","paddingBottom","marginTop","marginRight","marginBottom","marginLeft","boxSizing","ceil","marginWidth","getScrollLeft","rtl","isBrowserChrome","scrollWidth","setScrollLeft","isBrowserFirefox","attr","object","copy","copyPropertiesIfPresent","properties","_i","copyPropertyIfPresent","property","getProperty","setProperty","getAllKeysInObjects","objects","allValues","obj","mergeDeep","copyUndefined","sources","flatten","arrayOfArrays","parseYyyyMmDdToDate","yyyyMmDd","separator","serializeDateToYyyyMmDd","date","getFullYear","padStart","getMonth","getDate","num","totalStringSize","asString","first","getFunctionParameters","fnStr","collection","predicate","objToArray","collectionAsArray","firstMatchingItem","toStrings","array","isNode","o","Node","nodeType","isElement","HTMLElement","nodeList","KEY_NEW_LINE","altKey","printableCharacter","numpadDelWithNumlockOnForEdgeOrIe","isNumpadDelWithNumlockOnForEdgeOrIe","PRINTABLE_CHARACTERS","gridOptionsFunc","getSuppressKeyboardEventFunc","colDefFunc","suppressKeyboardEvent","getCellCompForEvent","sourceElement","addChangeListener","makeNull","missingOrEmptyObject","allowEmptyString","firstExistingValue","anyExists","existsAndNotEmpty","removeElement","removeFromParent","isVisible","callIfPresent","tempDiv","htmlTemplate","lastChild","insertAdjacentHTML","radioCssClass","inverted","sibling","nextSibling","add","newClassName","onlyClass","startsWithClass","endsWithClass","lastIndexOf","getElementAttribute","sortNumerically","removeRepeatsFromArray","thisOneMatches","nextOneMatches","splice","removeAllFromArray","toRemove","insertIntoArray","toIndex","insertArrayIntoArray","src","moveInArray","objectsToMove","defaultComparator","valueA","valueB","accentedCompare","valueAMissing","valueBMissing","toNumber","doQuickCompare","localeCompare","array1","array2","eChildBefore","orderedChildren","correctCellAtIndex","actualCellAtIndex","toStringOrNull","formatSize","formatNumberTwoDecimalPlacesAndCommas","findLineByLeastSquares","sum_x","sum_y","sum_xy","sum_xx","m","formatNumberCommas","prependDC","documentFragment","iconName","iconContents","eResult","forceCreate","userProvidedIcon","icons","optionsIcons","getIcons","span","cssClass","iconNameClassMap","rendererResult","styles","keyCamelCase","hyphenToCamelCase","isHorizontalScrollShowing","isVerticalScrollShowing","scrollHeight","getMaxDivHeight","testUpTo","navigator","userAgent","toLowerCase","div","test","getScrollbarWidth","opacity","overflow","msOverflowStyle","hasOverflowScrolling","prefixes","found","getElementsByTagName","prefix","computedStyle","overflowScrolling","prefixes_1","keyToCheck","isCharacterKey","flex","setElementHeight","documentMode","isEdge","StyleMedia","isSafari","anyWindow","safari","pushNotification","isChrome","win","chrome","webstore","runtime","vendor","isFirefox","InstallTrigger","isIOS","platform","maxTouchPoints","MSStream","eventNoType","srcElement","cls","maxNest","counter","getEventPath","createEventPath","__agGridEventPath","deepPath","path","composedPath","forEachSnapshotFirst","list","innerHeight","innerWidth","setCheckboxState","traverseNodesWithKey","keyParts","recursiveSearchNodes","currentNodes","pop","camelCaseToHyphen","toUpperCase","capitalise","substr","resParts","styleKey","styleValue","styleKeyDashed","isFinite","toEscape","chr","normalizeWheel","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","wait","immediate","args","callNow","funcs","executeAfter","millis","referenceCompare","defaultValue","objectToRead","set","objectToUpdate","addSafePassiveEventListener","PASSIVE_EVENTS","OUTSIDE_ANGULAR_EVENTS","camelCaseToHumanText","camelCase","word","message","msg","eMessage","eBox","sortRowNodesByOrder","rowNodeOrder","comparator","nodeA","nodeB","positionA","positionB","aHasIndex","bHasIndex","__objectId","atLeastOneOutOfOrder","fuzzyCheckStrings","inputValues","validValues","allSuggestions","fuzzyMatches","invalidInputs","inputValue","some","validValue","invalidInput","fuzzySuggestions","hideIrrelevant","weighted","search","string_weighted_distances","string_distances","thisSuggestions","relevance","toLocaleLowerCase","suggestion","get_bigrams","from","v","str1","str2","pairs1","pairs2","union","hit_count","len1","weight","lastIndex","idx","NUMPAD_DEL_NUMLOCK_ON_KEY","NUMPAD_DEL_NUMLOCK_ON_CHARCODE","eTarget","convertToSet","Set","deepFreeze","supports","tags","change","submit","abort","isSupported","areEqual","compose","fns","arg","composed","decToHex","number","bytes","utf8_encode","stringFromCharCode","createByte","codePoint","encodeCodePoint","symbol","checkScalarValue","codePoints","string","extra","output","charCodeAt","ucs2decode","byteString","deepCloneObject","parse","columnGroupOpened","columnGroupClosed","columnSelectClosed","columnSelectOpen","columnSelectIndeterminate","columnMovePin","columnMoveAdd","columnMoveHide","columnMoveMove","columnMoveLeft","columnMoveRight","columnMoveGroup","columnMoveValue","columnMovePivot","dropNotAllowed","groupContracted","groupExpanded","chart","check","checkboxChecked","checkboxUnchecked","checkboxIndeterminate","checkboxCheckedReadOnly","checkboxUncheckedReadOnly","checkboxIndeterminateReadOnly","previous","linked","unlinked","radioButtonOn","radioButtonOff","groupLoading","menu","maximize","minimize","menuPin","menuValue","menuAddRowGroup","menuRemoveRowGroup","clipboardCopy","clipboardCut","clipboardPaste","pivotPanel","rowGroupPanel","valuePanel","columnDrag","save","smallLeft","smallRight","smallUp","smallDown","sortAscending","sortDescending","sortUnSort","NumberSequence","initValue","valToReturn","peek","skip","Promise","IN_PROGRESS","resolution","listOfWaiters","onDone","onReject","all","toCombine","resolve","combinedValues","remainingToResolve","sourceResolved","external","capture","promise","firstOneOnly","adapter","unmapped","resolveNow","ifNotResolvedValue","ifResolved","RESOLVED","waiter","Timer","timestamp","print","duration","info","simpleHttpRequest","httpRequest","onreadystatechange","readyState","httpResponse","RowNodeBlockLoader","maxConcurrentRequests","blockLoadDebounceMillis","activeBlockLoadsCount","blocks","checkBlockToLoadDebounce","performCheckBlocksToLoad","addBlock","block","removeBlock","loadComplete","checkBlockToLoad","printCacheStatus","blockToLoad","getBlockState","nodeIdPrefix","getNodeIdPrefix","stateItem","pageStatus","isLogging","isLoading","RowNodeCache","cacheParams","maxRowFound","blockCount","virtualRowCount","initialRowCount","forEachBlockInOrder","destroyBlock","getVirtualRowCount","hack_setVirtualRowCount","isMaxRowFound","rowNodeBlockLoader","checkVirtualRowCount","purgeBlocksIfNeeded","blockToExclude","blocksForPurging","maxBlocksProvided","maxBlocksInCache","blocksToKeep","emptyBlocksToKeep","MAX_EMPTY_BLOCKS_TO_KEEP","removeBlockFromCache","postCreateBlock","newBlock","setBlock","blockToRemove","onCacheUpdated","lastRowIndexPlusOverflow","overflowSize","dynamicRowHeight","setVirtualRowCount","ids","getBlockIdsSorted","forEachBlockId","forEachBlockInReverseOrder","idStr","getBlock","blockId","EVENT_CACHE_UPDATED","purgeCache","getRowNodesInRange","lastBlockId","inActiveRange","numberSequence","foundGapInSelection","hitFirstOrLast","MessageBox","messageBodyComp","MessageBody","setMessage","eCenter","eOk","onBtOk","VirtualList","rowsInBodyContainer","eListContainer","addScrollListener","getItemHeight","getVirtualItemHeight","model","rowTopPixel","rowBottomPixel","viewportTopPixel","viewportHeight","viewportScrolledBeforeRow","newScrollPosition","setComponentCreator","componentCreator","getRowHeight","getScrollTop","clearVirtualRows","drawVirtualRows","removeVirtualRows","ensureRowsRendered","start","finish","insertRow","eDiv","setModel","LoadingCellRenderer","eLoadingIcon","eLoadingText","LoadingOverlayComponent","getOverlayLoadingTemplate","DEFAULT_LOADING_OVERLAY_TEMPLATE","localisedTemplate","NoRowsOverlayComponent","getOverlayNoRowsTemplate","DEFAULT_NO_ROWS_TEMPLATE","TooltipComponent","ColumnHoverService","selectedColumns","ColumnAnimationService","executeNextFuncs","executeLaterFuncs","animationThreadCount","ensureAnimationCssClassPresent","flush","executeLaterVMTurn","animationThreadCountCopy","setColumnMovingCss","nowFuncs","waitFuncs","PaginationAutoPageSizeService","onBodyHeightChanged","EVENT_SCROLL_VISIBILITY_CHANGED","onScrollVisibilityChanged","checkPageSize","notActive","isPaginationAutoPageSize","bodyHeight","newPageSize","ChangeDetectionService","SOURCE_PASTE","doChangeDetection","isSuppressChangeDetection","onlyChangedColumns","isAggregateOnlyChangedColumns","doAggregate","Beans","isMasterDetail","AnimationFrameService","createTasksP1","sorted","createTasksP2","destroyTasks","ticking","scrollGoingDown","lastScrollTop","taskCount","cancelledTasks","setScrollTop","useAnimationFrame","verifyAnimationFrameOn","task","taskItem","createOrder","addTaskToList","schedule","taskList","sortTaskList","sortDirection","executeFrame","p1TaskList","p1Tasks","p2TaskList","p2Tasks","frameStart","noMaxMillis","clear","has","requestFrame","stopTicking","EVENT_ANIMATION_QUEUE_EMPTY","requestAnimationFrame","webkitRequestAnimationFrame","isQueueEmpty","MaxDivHeightScaler","scrollY","uiBodyHeight","scrollBarWidth","maxDivHeight","isScaling","scaling","newScrollY","newBodyHeight","getUiBodyHeight","calculateOffset","uiContainerHeight","pixelsToShave","modelHeight","maxScrollY","scrollPercent","setOffset","clearOffset","newOffset","newOffsetFloor","modelPixel","getScrollPositionForPixel","AutoHeightCalculator","getPreferredHeightForRow","getAllAutoRowHeightCols","maxCellHeight","PaginationComp","btFirst","btPrevious","btNext","btLast","ROW_MODEL_TYPE_SERVER_SIDE","serverSideRowModel","isSuppressPaginationPanel","onBtFirst","onBtLast","onBtNext","onBtPrevious","enableOrDisableButtons","updateRowLabels","setCurrentPageLabel","setTotalLabels","pagesExist","toDisplay","lbCurrent","formatNumber","getPaginationNumberFormatterFunc","strPage","strTo","strOf","disablePreviousAndFirst","zeroPagesToDisplay","isZeroPagesToDisplay","disableNext","disableLast","lbFirstRowOnPage","lbLastRowOnPage","lastPageFound","lbTotal","lbRecordCount","moreText","LoadingType","OverlayWrapperComponent","inProgress","destroyRequested","addLayoutElement","eOverlayWrapper","setWrapperTypeClass","loadingType","Loading","NoRows","showLoadingOverlay","workItem","newLoadingOverlayComponent","showOverlay","showNoRowsOverlay","newNoRowsOverlayComponent","destroyActiveOverlay","activeOverlay","hideOverlay","DetailRowCompCache","cacheItems","isKeepDetailRows","maxCacheSize","getKeepDetailRowsCount","destroyFullWidthRow","getCacheItem","lastAccessedTime","autoCreate","stampCacheItem","startIndex","UndoRedoAction","cellValueChanges","FillUndoRedoAction","initialRange","finalRange","UndoRedoStack","maxStackSize","actionStack","DEFAULT_STACK_SIZE","UndoRedoService","isCellEditing","isRowEditing","isPasting","isFilling","cellValueChange","columnId","clearStacks","undoStack","redoStack","isUndoRedoCellEditing","undoRedoLimit","getUndoRedoCellEditingLimit","addRowEditingListeners","addCellEditingListeners","addPasteListeners","addFillListeners","EVENT_COLUMN_PIVOT_MODE_CHANGED","EVENT_COLUMN_EVERYTHING_CHANGED","EVENT_COLUMN_GROUP_OPENED","EVENT_ROW_DRAG_END","undo","undoAction","processAction","processRangeAndCellFocus","redo","redoAction","valueExtractor","rowPosition","currentRow","lastFocusedCell_1","startColumn","setLastFocusedCell","cellRangeParams","rowStartIndex","rowStartPinned","rowEndIndex","rowEndPinned","columnStart","addCellRange","lastFocusedCell","RangeSelectionModule","clearRangeSelection","pushActionsToUndoStack","EVENT_PASTE_START","EVENT_PASTE_END","EVENT_FILL_START","EVENT_FILL_END"],"mappings":"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","file":"static/js/defaultVendors~main~043ab64f.6fc1abdd.chunk.js","sourcesContent":["/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport function QuerySelector(selector) {\n return querySelectorFunc.bind(this, selector);\n}\nexport function RefSelector(ref) {\n return querySelectorFunc.bind(this, \"[ref=\" + ref + \"]\");\n}\nfunction querySelectorFunc(selector, classPrototype, methodOrAttributeName, index) {\n if (selector === null) {\n console.error(\"ag-Grid: QuerySelector selector should not be null\");\n return;\n }\n if (typeof index === \"number\") {\n console.error(\"ag-Grid: QuerySelector should be on an attribute\");\n return;\n }\n addToObjectProps(classPrototype, 'querySelectors', {\n attributeName: methodOrAttributeName,\n querySelector: selector\n });\n}\n// think we should take this out, put property bindings on the\nexport function Listener(eventName) {\n return listenerFunc.bind(this, eventName);\n}\nfunction listenerFunc(eventName, target, methodName) {\n if (eventName === null) {\n console.error(\"ag-Grid: EventListener eventName should not be null\");\n return;\n }\n addToObjectProps(target, 'listenerMethods', {\n methodName: methodName,\n eventName: eventName\n });\n}\n// think we should take this out, put property bindings on the\nexport function Method(eventName) {\n return methodFunc.bind(this, eventName);\n}\nfunction methodFunc(alias, target, methodName) {\n if (alias === null) {\n console.error(\"ag-Grid: EventListener eventName should not be null\");\n return;\n }\n addToObjectProps(target, 'methods', {\n methodName: methodName,\n alias: alias\n });\n}\nfunction addToObjectProps(target, key, value) {\n // it's an attribute on the class\n var props = getOrCreateProps(target, target.constructor.name);\n if (!props[key]) {\n props[key] = [];\n }\n props[key].push(value);\n}\nfunction getOrCreateProps(target, instanceName) {\n if (!target.__agComponentMetaData) {\n target.__agComponentMetaData = {};\n }\n if (!target.__agComponentMetaData[instanceName]) {\n target.__agComponentMetaData[instanceName] = {};\n }\n return target.__agComponentMetaData[instanceName];\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PreConstruct } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { _, NumberSequence } from \"../utils\";\nvar compIdSequence = new NumberSequence();\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n function Component(template) {\n var _this = _super.call(this) || this;\n _this.childComponents = [];\n _this.annotatedEventListeners = [];\n // if false, then CSS class \"ag-hidden\" is applied, which sets \"display: none\"\n _this.displayed = true;\n // if false, then CSS class \"ag-invisible\" is applied, which sets \"visibility: hidden\"\n _this.visible = true;\n // unique id for this row component. this is used for getting a reference to the HTML dom.\n // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying\n // around as we create a new rowComp instance for the same row node).\n _this.compId = compIdSequence.next();\n if (template) {\n _this.setTemplate(template);\n }\n return _this;\n }\n Component.prototype.getCompId = function () {\n return this.compId;\n };\n // for registered components only, eg creates AgCheckbox instance from ag-checkbox HTML tag\n Component.prototype.createChildComponentsFromTags = function (parentNode) {\n var _this = this;\n // we MUST take a copy of the list first, as the 'swapComponentForNode' adds comments into the DOM\n // which messes up the traversal order of the children.\n var childNodeList = _.copyNodeList(parentNode.childNodes);\n childNodeList.forEach(function (childNode) {\n var childComp = _this.getContext().createComponentFromElement(childNode, function (childComp) {\n // copy over all attributes, including css classes, so any attributes user put on the tag\n // wll be carried across\n _this.copyAttributesFromNode(childNode, childComp.getGui());\n });\n if (childComp) {\n if (childComp.addItems && childNode.children.length) {\n _this.createChildComponentsFromTags(childNode);\n // converting from HTMLCollection to Array\n var items = Array.prototype.slice.call(childNode.children);\n childComp.addItems(items);\n }\n // replace the tag (eg ag-checkbox) with the proper HTMLElement (eg 'div') in the dom\n _this.swapComponentForNode(childComp, parentNode, childNode);\n }\n else if (childNode.childNodes) {\n _this.createChildComponentsFromTags(childNode);\n }\n });\n };\n Component.prototype.copyAttributesFromNode = function (source, dest) {\n _.iterateNamedNodeMap(source.attributes, function (name, value) {\n dest.setAttribute(name, value);\n });\n };\n Component.prototype.swapComponentForNode = function (newComponent, parentNode, childNode) {\n var eComponent = newComponent.getGui();\n parentNode.replaceChild(eComponent, childNode);\n parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);\n this.childComponents.push(newComponent);\n this.swapInComponentForQuerySelectors(newComponent, childNode);\n };\n Component.prototype.swapInComponentForQuerySelectors = function (newComponent, childNode) {\n var thisProto = Object.getPrototypeOf(this);\n var thisNoType = this;\n while (thisProto != null) {\n var metaData = thisProto.__agComponentMetaData;\n var currentProtoName = (thisProto.constructor).name;\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n metaData[currentProtoName].querySelectors.forEach(function (querySelector) {\n if (thisNoType[querySelector.attributeName] === childNode) {\n thisNoType[querySelector.attributeName] = newComponent;\n }\n });\n }\n thisProto = Object.getPrototypeOf(thisProto);\n }\n };\n Component.prototype.setTemplate = function (template) {\n var eGui = _.loadTemplate(template);\n this.setTemplateFromElement(eGui);\n };\n Component.prototype.setTemplateFromElement = function (element) {\n this.eGui = element;\n this.eGui.__agComponent = this;\n this.addAnnotatedEventListeners();\n this.wireQuerySelectors();\n // context will not be available when user sets template in constructor\n var contextIsAvailable = !!this.getContext();\n if (contextIsAvailable) {\n this.createChildComponentsFromTags(this.getGui());\n }\n };\n Component.prototype.createChildComponentsPreConstruct = function () {\n // ui exists if user sets template in constructor. when this happens, we have to wait for the context\n // to be autoWired first before we can create child components.\n var uiExists = !!this.getGui();\n if (uiExists) {\n this.createChildComponentsFromTags(this.getGui());\n }\n };\n Component.prototype.wireQuerySelectors = function () {\n var _this = this;\n if (!this.eGui) {\n return;\n }\n var thisProto = Object.getPrototypeOf(this);\n var _loop_1 = function () {\n var metaData = thisProto.__agComponentMetaData;\n var currentProtoName = (thisProto.constructor).name;\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n var thisNoType_1 = this_1;\n metaData[currentProtoName].querySelectors.forEach(function (querySelector) {\n var resultOfQuery = _this.eGui.querySelector(querySelector.querySelector);\n if (resultOfQuery) {\n var backingComponent = resultOfQuery.__agComponent;\n if (backingComponent) {\n thisNoType_1[querySelector.attributeName] = backingComponent;\n }\n else {\n thisNoType_1[querySelector.attributeName] = resultOfQuery;\n }\n }\n else {\n // put debug msg in here if query selector fails???\n }\n });\n }\n thisProto = Object.getPrototypeOf(thisProto);\n };\n var this_1 = this;\n while (thisProto != null) {\n _loop_1();\n }\n };\n Component.prototype.addAnnotatedEventListeners = function () {\n var _this = this;\n this.removeAnnotatedEventListeners();\n if (!this.eGui) {\n return;\n }\n var listenerMethods = this.getAgComponentMetaData('listenerMethods');\n if (_.missingOrEmpty(listenerMethods)) {\n return;\n }\n if (!this.annotatedEventListeners) {\n this.annotatedEventListeners = [];\n }\n listenerMethods.forEach(function (eventListener) {\n var listener = _this[eventListener.methodName].bind(_this);\n _this.eGui.addEventListener(eventListener.eventName, listener);\n _this.annotatedEventListeners.push({ eventName: eventListener.eventName, listener: listener });\n });\n };\n Component.prototype.getAgComponentMetaData = function (key) {\n var res = [];\n var thisProto = Object.getPrototypeOf(this);\n while (thisProto != null) {\n var metaData = thisProto.__agComponentMetaData;\n var currentProtoName = (thisProto.constructor).name;\n // IE does not support Function.prototype.name, so we need to extract\n // the name using a RegEx\n // from: https://matt.scharley.me/2012/03/monkey-patch-name-ie.html\n if (currentProtoName === undefined) {\n var funcNameRegex = /function\\s([^(]{1,})\\(/;\n var results = funcNameRegex.exec(thisProto.constructor.toString());\n if (results && results.length > 1) {\n currentProtoName = results[1].trim();\n }\n }\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName][key]) {\n res = res.concat(metaData[currentProtoName][key]);\n }\n thisProto = Object.getPrototypeOf(thisProto);\n }\n return res;\n };\n Component.prototype.removeAnnotatedEventListeners = function () {\n var _this = this;\n if (!this.annotatedEventListeners || !this.eGui) {\n return;\n }\n this.annotatedEventListeners.forEach(function (eventListener) {\n _this.eGui.removeEventListener(eventListener.eventName, eventListener.listener);\n });\n this.annotatedEventListeners = [];\n };\n Component.prototype.getGui = function () {\n return this.eGui;\n };\n Component.prototype.setParentComponent = function (component) {\n this.parentComponent = component;\n };\n Component.prototype.getParentComponent = function () {\n return this.parentComponent;\n };\n // this method is for older code, that wants to provide the gui element,\n // it is not intended for this to be in ag-Stack\n Component.prototype.setGui = function (eGui) {\n this.eGui = eGui;\n };\n Component.prototype.queryForHtmlElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.queryForHtmlInputElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.appendChild = function (newChild) {\n if (_.isNodeOrElement(newChild)) {\n this.eGui.appendChild(newChild);\n }\n else {\n var childComponent = newChild;\n this.eGui.appendChild(childComponent.getGui());\n this.childComponents.push(childComponent);\n }\n };\n Component.prototype.addFeature = function (feature, context) {\n this.wireDependentBean(feature, context);\n };\n Component.prototype.isDisplayed = function () {\n return this.displayed;\n };\n Component.prototype.setVisible = function (visible) {\n if (visible !== this.visible) {\n this.visible = visible;\n _.setVisible(this.eGui, visible);\n }\n };\n Component.prototype.setDisplayed = function (displayed) {\n if (displayed !== this.displayed) {\n this.displayed = displayed;\n _.setDisplayed(this.eGui, displayed);\n var event_1 = {\n type: Component.EVENT_DISPLAYED_CHANGED,\n visible: this.displayed\n };\n this.dispatchEvent(event_1);\n }\n };\n Component.prototype.addOrRemoveCssClass = function (className, addOrRemove) {\n _.addOrRemoveCssClass(this.eGui, className, addOrRemove);\n };\n Component.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.childComponents.forEach(function (childComponent) {\n if (childComponent && childComponent.destroy) {\n childComponent.destroy();\n }\n });\n this.childComponents.length = 0;\n this.removeAnnotatedEventListeners();\n };\n Component.prototype.addGuiEventListener = function (event, listener) {\n var _this = this;\n this.getGui().addEventListener(event, listener);\n this.addDestroyFunc(function () { return _this.getGui().removeEventListener(event, listener); });\n };\n Component.prototype.addCssClass = function (className) {\n _.addCssClass(this.getGui(), className);\n };\n Component.prototype.removeCssClass = function (className) {\n _.removeCssClass(this.getGui(), className);\n };\n Component.prototype.getAttribute = function (key) {\n var eGui = this.getGui();\n return eGui ? eGui.getAttribute(key) : null;\n };\n Component.prototype.getRefElement = function (refName) {\n return this.queryForHtmlElement('[ref=\"' + refName + '\"]');\n };\n Component.EVENT_DISPLAYED_CHANGED = 'displayedChanged';\n __decorate([\n PreConstruct\n ], Component.prototype, \"createChildComponentsPreConstruct\", null);\n return Component;\n}(BeanStub));\nexport { Component };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { _ } from \"../utils\";\nvar ModuleRegistry = /** @class */ (function () {\n function ModuleRegistry() {\n }\n ModuleRegistry.register = function (module) {\n ModuleRegistry.modulesMap[module.moduleName] = module;\n };\n ModuleRegistry.registerModules = function (modules) {\n if (!modules) {\n return;\n }\n modules.forEach(ModuleRegistry.register);\n };\n ModuleRegistry.assertRegistered = function (moduleName, reason) {\n if (this.isRegistered(moduleName)) {\n return true;\n }\n var warningKey = reason + moduleName;\n var warningMessage = \"ag-Grid: unable to use \" + reason + \" as module \" + moduleName + \" is not present. \"\n + (\"You need to load the module with: import \\\"\" + moduleName + \"\\\"\");\n _.doOnce(function () {\n console.warn(warningMessage);\n }, warningKey);\n return false;\n };\n ModuleRegistry.isRegistered = function (moduleName) {\n return !!ModuleRegistry.modulesMap[moduleName];\n };\n ModuleRegistry.getRegisteredModules = function () {\n return _.values(ModuleRegistry.modulesMap);\n };\n // having in a map a) removes duplicates and b) allows fast lookup\n ModuleRegistry.modulesMap = {};\n return ModuleRegistry;\n}());\nexport { ModuleRegistry };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var ModuleNames;\n(function (ModuleNames) {\n // when using modules, user references this\n ModuleNames[\"CommunityCoreModule\"] = \"@ag-grid-community/core\";\n // when not using modules, user references this\n ModuleNames[\"CommunityAllModules\"] = \"@ag-grid-community/all\";\n // community modules\n ModuleNames[\"InfiniteRowModelModule\"] = \"@ag-grid-community/infinite-row-model\";\n ModuleNames[\"ClientSideRowModelModule\"] = \"@ag-grid-community/client-side-row-model\";\n ModuleNames[\"CsvExportModule\"] = \"@ag-grid-community/csv-export\";\n ModuleNames[\"RowNodeCache\"] = \"@ag-grid-community/row-node-cache\";\n // enterprise core - users never import on this, but other enterprise modules do\n ModuleNames[\"EnterpriseCoreModule\"] = \"@ag-grid-enterprise/core\";\n // when not using modules, user references this\n ModuleNames[\"EnterpriseAllModules\"] = \"@ag-grid-enterprise/all\";\n // enterprise modules\n ModuleNames[\"RowGroupingModule\"] = \"@ag-grid-enterprise/row-grouping\";\n ModuleNames[\"ColumnToolPanelModule\"] = \"@ag-grid-enterprise/column-tool-panel\";\n ModuleNames[\"FiltersToolPanelModule\"] = \"@ag-grid-enterprise/filters-tool-panel\";\n ModuleNames[\"MenuModule\"] = \"@ag-grid-enterprise/menu\";\n ModuleNames[\"SetFilterModule\"] = \"@ag-grid-enterprise/set-filter\";\n ModuleNames[\"StatusBarModule\"] = \"@ag-grid-enterprise/status-bar\";\n ModuleNames[\"SideBarModule\"] = \"@ag-grid-enterprise/side-bar\";\n ModuleNames[\"RangeSelectionModule\"] = \"@ag-grid-enterprise/range-selection\";\n ModuleNames[\"MasterDetailModule\"] = \"@ag-grid-enterprise/master-detail\";\n ModuleNames[\"RichSelectModule\"] = \"@ag-grid-enterprise/rich-select\";\n ModuleNames[\"GridChartsModule\"] = \"@ag-grid-enterprise/charts\";\n ModuleNames[\"ViewportRowModelModule\"] = \"@ag-grid-enterprise/viewport-row-model\";\n ModuleNames[\"ServerSideRowModelModule\"] = \"@ag-grid-enterprise/server-side-row-model\";\n ModuleNames[\"ExcelExportModule\"] = \"@ag-grid-enterprise/excel-export\";\n ModuleNames[\"ClipboardModule\"] = \"@ag-grid-enterprise/clipboard\";\n // framework wrappers currently don't provide beans, comps etc, so no need to be modules,\n // however i argue they should be as in theory they 'could' provide beans etc\n ModuleNames[\"AngularModule\"] = \"@ag-grid-community/angular\";\n ModuleNames[\"ReactModule\"] = \"@ag-grid-community/react\";\n ModuleNames[\"VueModule\"] = \"@ag-grid-community/vue\";\n ModuleNames[\"PolymerModule\"] = \"@ag-grid-community/polymer\";\n // and then this, which is definitely not a grid module, as it should not have any dependency\n // on the grid (ie shouldn't even reference the Module interface)\n // ChartsModule = \"@ag-grid-community/charts-core\",\n})(ModuleNames || (ModuleNames = {}));\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { EventService } from \"../eventService\";\nimport { _ } from \"../utils\";\nvar TouchListener = /** @class */ (function () {\n function TouchListener(eElement, preventMouseClick) {\n var _this = this;\n if (preventMouseClick === void 0) { preventMouseClick = false; }\n this.destroyFuncs = [];\n this.touching = false;\n this.eventService = new EventService();\n this.eElement = eElement;\n this.preventMouseClick = preventMouseClick;\n var startListener = this.onTouchStart.bind(this);\n var moveListener = this.onTouchMove.bind(this);\n var endListener = this.onTouchEnd.bind(this);\n this.eElement.addEventListener(\"touchstart\", startListener, { passive: true });\n this.eElement.addEventListener(\"touchmove\", moveListener, { passive: true });\n // we set passive=false, as we want to prevent default on this event\n this.eElement.addEventListener(\"touchend\", endListener, { passive: false });\n this.destroyFuncs.push(function () {\n _this.eElement.removeEventListener(\"touchstart\", startListener, { passive: true });\n _this.eElement.removeEventListener(\"touchmove\", moveListener, { passive: true });\n _this.eElement.removeEventListener(\"touchend\", endListener, { passive: false });\n });\n }\n TouchListener.prototype.getActiveTouch = function (touchList) {\n for (var i = 0; i < touchList.length; i++) {\n var matches = touchList[i].identifier === this.touchStart.identifier;\n if (matches) {\n return touchList[i];\n }\n }\n return null;\n };\n TouchListener.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n TouchListener.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n TouchListener.prototype.onTouchStart = function (touchEvent) {\n var _this = this;\n // only looking at one touch point at any time\n if (this.touching) {\n return;\n }\n this.touchStart = touchEvent.touches[0];\n this.touching = true;\n this.moved = false;\n var touchStartCopy = this.touchStart;\n window.setTimeout(function () {\n var touchesMatch = _this.touchStart === touchStartCopy;\n if (_this.touching && touchesMatch && !_this.moved) {\n _this.moved = true;\n var event_1 = {\n type: TouchListener.EVENT_LONG_TAP,\n touchStart: _this.touchStart,\n touchEvent: touchEvent\n };\n _this.eventService.dispatchEvent(event_1);\n }\n }, 500);\n };\n TouchListener.prototype.onTouchMove = function (touchEvent) {\n if (!this.touching) {\n return;\n }\n var touch = this.getActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n var eventIsFarAway = !_.areEventsNear(touch, this.touchStart, 4);\n if (eventIsFarAway) {\n this.moved = true;\n }\n };\n TouchListener.prototype.onTouchEnd = function (touchEvent) {\n if (!this.touching) {\n return;\n }\n if (!this.moved) {\n var event_2 = {\n type: TouchListener.EVENT_TAP,\n touchStart: this.touchStart\n };\n this.eventService.dispatchEvent(event_2);\n this.checkForDoubleTap();\n }\n // stops the tap from also been processed as a mouse click\n if (this.preventMouseClick) {\n touchEvent.preventDefault();\n }\n this.touching = false;\n };\n TouchListener.prototype.checkForDoubleTap = function () {\n var now = new Date().getTime();\n if (this.lastTapTime && this.lastTapTime > 0) {\n // if previous tap, see if duration is short enough to be considered double tap\n var interval = now - this.lastTapTime;\n if (interval > TouchListener.DOUBLE_TAP_MILLIS) {\n // dispatch double tap event\n var event_3 = {\n type: TouchListener.EVENT_DOUBLE_TAP,\n touchStart: this.touchStart\n };\n this.eventService.dispatchEvent(event_3);\n // this stops a tripple tap ending up as two double taps\n this.lastTapTime = null;\n }\n else {\n this.lastTapTime = now;\n }\n }\n else {\n this.lastTapTime = now;\n }\n };\n TouchListener.prototype.destroy = function () {\n this.destroyFuncs.forEach(function (func) { return func(); });\n };\n TouchListener.EVENT_TAP = \"tap\";\n TouchListener.EVENT_DOUBLE_TAP = \"doubleTap\";\n TouchListener.EVENT_LONG_TAP = \"longTap\";\n TouchListener.DOUBLE_TAP_MILLIS = 500;\n return TouchListener;\n}());\nexport { TouchListener };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AgAbstractLabel } from \"./agAbstractLabel\";\nimport { _ } from \"../utils\";\nvar AgAbstractField = /** @class */ (function (_super) {\n __extends(AgAbstractField, _super);\n function AgAbstractField() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AgAbstractField.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n this.addDestroyableEventListener(this, AgAbstractField.EVENT_CHANGED, function () {\n callbackFn(_this.getValue());\n });\n return this;\n };\n AgAbstractField.prototype.getWidth = function () {\n return this.getGui().clientWidth;\n };\n AgAbstractField.prototype.setWidth = function (width) {\n _.setFixedWidth(this.getGui(), width);\n return this;\n };\n AgAbstractField.prototype.getValue = function () {\n return this.value;\n };\n AgAbstractField.prototype.setValue = function (value, silent) {\n if (this.value === value) {\n return this;\n }\n this.value = value;\n if (!silent) {\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n }\n return this;\n };\n AgAbstractField.EVENT_CHANGED = 'valueChange';\n return AgAbstractField;\n}(AgAbstractLabel));\nexport { AgAbstractField };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { _ } from \"../utils\";\n/**\n * There are many instances of this component covering each of the areas a row can be entered\n * eg body, pinned left, fullWidth. The component differs from others in that it's given the\n * elements, there is no template. All of the elements are part of the GridPanel.\n */\nvar RowContainerComponent = /** @class */ (function () {\n function RowContainerComponent(params) {\n this.childCount = 0;\n this.rowTemplatesToAdd = [];\n this.afterGuiAttachedCallbacks = [];\n // this is to cater for a 'strange behaviour' where when a panel is made visible, it is firing a scroll\n // event which we want to ignore. see gridPanel.onAnyBodyScroll()\n this.lastMadeVisibleTime = 0;\n this.eContainer = params.eContainer;\n this.eViewport = params.eViewport;\n if (params.eWrapper) {\n this.eWrapper = params.eWrapper;\n }\n this.hideWhenNoChildren = params.hideWhenNoChildren;\n }\n RowContainerComponent.prototype.setVerticalScrollPosition = function (verticalScrollPosition) {\n this.scrollTop = verticalScrollPosition;\n };\n RowContainerComponent.prototype.postConstruct = function () {\n this.checkDomOrder();\n this.checkVisibility();\n this.gridOptionsWrapper.addEventListener(GridOptionsWrapper.PROP_DOM_LAYOUT, this.checkDomOrder.bind(this));\n };\n RowContainerComponent.prototype.checkDomOrder = function () {\n this.domOrder = this.gridOptionsWrapper.isEnsureDomOrder();\n };\n RowContainerComponent.prototype.getRowElement = function (compId) {\n return this.eContainer.querySelector(\"[comp-id=\\\"\" + compId + \"\\\"]\");\n };\n RowContainerComponent.prototype.setHeight = function (height) {\n if (height == null) {\n this.eContainer.style.height = '';\n return;\n }\n this.eContainer.style.height = height + \"px\";\n if (this.eWrapper) {\n this.eWrapper.style.height = height + \"px\";\n }\n };\n RowContainerComponent.prototype.flushRowTemplates = function () {\n // if doing dom order, then rowTemplates will be empty,\n // or if no rows added since last time also empty.\n if (this.rowTemplatesToAdd.length !== 0) {\n var htmlToAdd = this.rowTemplatesToAdd.join('');\n _.appendHtml(this.eContainer, htmlToAdd);\n this.rowTemplatesToAdd.length = 0;\n }\n // this only empty if no rows since last time, as when\n // doing dom order, we still have callbacks to process\n this.afterGuiAttachedCallbacks.forEach(function (func) { return func(); });\n this.afterGuiAttachedCallbacks.length = 0;\n this.lastPlacedElement = null;\n };\n RowContainerComponent.prototype.appendRowTemplate = function (rowTemplate, callback) {\n if (this.domOrder) {\n this.lastPlacedElement = _.insertTemplateWithDomOrder(this.eContainer, rowTemplate, this.lastPlacedElement);\n }\n else {\n this.rowTemplatesToAdd.push(rowTemplate);\n }\n this.afterGuiAttachedCallbacks.push(callback);\n // it is important we put items in in order, so that when we open a row group,\n // the new rows are inserted after the opened group, but before the rows below.\n // that way, the rows below are over the new rows (as dom renders last in dom over\n // items previous in dom), otherwise the child rows would cover the row below and\n // that meant the user doesn't see the rows below slide away.\n this.childCount++;\n this.checkVisibility();\n };\n RowContainerComponent.prototype.ensureDomOrder = function (eRow) {\n if (this.domOrder) {\n _.ensureDomOrder(this.eContainer, eRow, this.lastPlacedElement);\n this.lastPlacedElement = eRow;\n }\n };\n RowContainerComponent.prototype.removeRowElement = function (eRow) {\n this.eContainer.removeChild(eRow);\n this.childCount--;\n this.checkVisibility();\n };\n RowContainerComponent.prototype.checkVisibility = function () {\n if (!this.hideWhenNoChildren) {\n return;\n }\n var eGui = this.eViewport ? this.eViewport : this.eContainer;\n var visible = this.childCount > 0;\n if (this.visible !== visible) {\n this.visible = visible;\n this.lastMadeVisibleTime = new Date().getTime();\n _.setDisplayed(eGui, visible);\n // if we are showing the viewport, then the scroll is always zero,\n // so we need to align with the other sections (ie if this is full\n // width container, and first time showing a full width row, we need to\n // scroll it so full width rows are show in right place alongside the\n // body rows). without this, there was an issue with 'loading rows' for\n // server side row model, as loading rows are full width, and they were\n // not getting displayed in the right location when rows were expanded.\n if (visible && this.eViewport) {\n this.eViewport.scrollTop = this.scrollTop;\n }\n }\n };\n RowContainerComponent.prototype.isMadeVisibleRecently = function () {\n var now = new Date().getTime();\n var millisSinceVisible = now - this.lastMadeVisibleTime;\n return millisSinceVisible < 500;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RowContainerComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], RowContainerComponent.prototype, \"postConstruct\", null);\n return RowContainerComponent;\n}());\nexport { RowContainerComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Component } from \"./component\";\nimport { _ } from \"../utils\";\nvar PopupComponent = /** @class */ (function (_super) {\n __extends(PopupComponent, _super);\n function PopupComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupComponent.prototype.isPopup = function () {\n return true;\n };\n PopupComponent.prototype.setParentComponent = function (container) {\n _.addCssClass(container.getGui(), 'ag-has-popup');\n _super.prototype.setParentComponent.call(this, container);\n };\n PopupComponent.prototype.destroy = function () {\n var parentComp = this.parentComponent;\n var hasParent = parentComp && parentComp.isAlive();\n if (hasParent) {\n _.removeCssClass(parentComp.getGui(), 'ag-has-popup');\n }\n _super.prototype.destroy.call(this);\n };\n return PopupComponent;\n}(Component));\nexport { PopupComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../widgets/component\";\nimport { PostConstruct } from \"../context/context\";\nimport { RowNode } from \"../entities/rowNode\";\nimport { DragSourceType } from \"../dragAndDrop/dragAndDropService\";\nimport { Events } from \"../eventKeys\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { _ } from \"../utils\";\nvar RowDragComp = /** @class */ (function (_super) {\n __extends(RowDragComp, _super);\n function RowDragComp(rowNode, column, cellValue, beans) {\n var _this = _super.call(this, \"
\") || this;\n _this.rowNode = rowNode;\n _this.column = column;\n _this.cellValue = cellValue;\n _this.beans = beans;\n return _this;\n }\n RowDragComp.prototype.postConstruct = function () {\n var eGui = this.getGui();\n eGui.appendChild(_.createIconNoSpan('rowDrag', this.beans.gridOptionsWrapper, null));\n this.addDragSource();\n this.checkCompatibility();\n var strategy = this.beans.gridOptionsWrapper.isRowDragManaged() ?\n new ManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column) :\n new NonManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column);\n this.addFeature(strategy, this.beans.context);\n };\n // returns true if all compatibility items work out\n RowDragComp.prototype.checkCompatibility = function () {\n var managed = this.beans.gridOptionsWrapper.isRowDragManaged();\n var treeData = this.beans.gridOptionsWrapper.isTreeData();\n if (treeData && managed) {\n _.doOnce(function () {\n return console.warn('ag-Grid: If using row drag with tree data, you cannot have rowDragManaged=true');\n }, 'RowDragComp.managedAndTreeData');\n }\n };\n RowDragComp.prototype.addDragSource = function () {\n var _this = this;\n var dragItem = {\n rowNode: this.rowNode\n };\n var dragSource = {\n type: DragSourceType.RowDrag,\n eElement: this.getGui(),\n dragItemName: this.cellValue,\n getDragItem: function () { return dragItem; },\n dragStartPixels: 0\n };\n this.beans.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.beans.dragAndDropService.removeDragSource(dragSource); });\n };\n __decorate([\n PostConstruct\n ], RowDragComp.prototype, \"postConstruct\", null);\n return RowDragComp;\n}(Component));\nexport { RowDragComp };\nvar VisibilityStrategy = /** @class */ (function (_super) {\n __extends(VisibilityStrategy, _super);\n function VisibilityStrategy(parent, rowNode, column) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.column = column;\n _this.rowNode = rowNode;\n return _this;\n }\n VisibilityStrategy.prototype.setDisplayedOrVisible = function (neverDisplayed) {\n if (neverDisplayed) {\n this.parent.setDisplayed(false);\n }\n else {\n var shown = this.column.isRowDrag(this.rowNode);\n var isShownSometimes = _.isFunction(this.column.getColDef().rowDrag);\n // if shown sometimes, them some rows can have drag handle while other don't,\n // so we use setVisible to keep the handles horizontally aligned (as setVisible\n // keeps the empty space, whereas setDisplayed looses the space)\n if (isShownSometimes) {\n this.parent.setDisplayed(true);\n this.parent.setVisible(shown);\n }\n else {\n this.parent.setDisplayed(shown);\n }\n }\n };\n return VisibilityStrategy;\n}(BeanStub));\n// when non managed, the visibility depends on suppressRowDrag property only\nvar NonManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends(NonManagedVisibilityStrategy, _super);\n function NonManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this, parent, rowNode, column) || this;\n _this.beans = beans;\n return _this;\n }\n NonManagedVisibilityStrategy.prototype.postConstruct = function () {\n this.addDestroyableEventListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var neverDisplayed = this.beans.gridOptionsWrapper.isSuppressRowDrag();\n this.setDisplayedOrVisible(neverDisplayed);\n };\n __decorate([\n PostConstruct\n ], NonManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return NonManagedVisibilityStrategy;\n}(VisibilityStrategy));\n// when managed, the visibility depends on sort, filter and row group, as well as suppressRowDrag property\nvar ManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends(ManagedVisibilityStrategy, _super);\n function ManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this, parent, rowNode, column) || this;\n _this.beans = beans;\n return _this;\n }\n ManagedVisibilityStrategy.prototype.postConstruct = function () {\n // we do not show the component if sort, filter or grouping is active\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));\n this.updateSortActive();\n this.updateFilterActive();\n this.updateRowGroupActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.updateRowGroupActive = function () {\n var rowGroups = this.beans.columnController.getRowGroupColumns();\n this.rowGroupActive = !_.missingOrEmpty(rowGroups);\n };\n ManagedVisibilityStrategy.prototype.onRowGroupChanged = function () {\n this.updateRowGroupActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.updateSortActive = function () {\n var sortModel = this.beans.sortController.getSortModel();\n this.sortActive = !_.missingOrEmpty(sortModel);\n };\n ManagedVisibilityStrategy.prototype.onSortChanged = function () {\n this.updateSortActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.updateFilterActive = function () {\n this.filterActive = this.beans.filterManager.isAnyFilterPresent();\n };\n ManagedVisibilityStrategy.prototype.onFilterChanged = function () {\n this.updateFilterActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var sortOrFilterOrGroupActive = this.sortActive || this.filterActive || this.rowGroupActive;\n var suppressRowDrag = this.beans.gridOptionsWrapper.isSuppressRowDrag();\n var neverDisplayed = sortOrFilterOrGroupActive || suppressRowDrag;\n this.setDisplayedOrVisible(neverDisplayed);\n };\n __decorate([\n PostConstruct\n ], ManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return ManagedVisibilityStrategy;\n}(VisibilityStrategy));\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../widgets/component\";\nimport { PostConstruct } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar DndSourceComp = /** @class */ (function (_super) {\n __extends(DndSourceComp, _super);\n function DndSourceComp(rowNode, column, cellValue, beans, eCell) {\n var _this = _super.call(this, \"
\") || this;\n _this.rowNode = rowNode;\n _this.column = column;\n _this.cellValue = cellValue;\n _this.beans = beans;\n _this.eCell = eCell;\n return _this;\n }\n DndSourceComp.prototype.postConstruct = function () {\n var eGui = this.getGui();\n eGui.appendChild(_.createIconNoSpan('rowDrag', this.beans.gridOptionsWrapper, null));\n this.addDragSource();\n this.checkVisibility();\n };\n DndSourceComp.prototype.addDragSource = function () {\n this.addGuiEventListener('dragstart', this.onDragStart.bind(this));\n };\n DndSourceComp.prototype.onDragStart = function (dragEvent) {\n var _this = this;\n var providedOnRowDrag = this.column.getColDef().dndSourceOnRowDrag;\n var isIE = _.isBrowserIE();\n if (!isIE) {\n dragEvent.dataTransfer.setDragImage(this.eCell, 0, 0);\n }\n // default behaviour is to convert data to json and set into drag component\n var defaultOnRowDrag = function () {\n try {\n var jsonData = JSON.stringify(_this.rowNode.data);\n if (isIE) {\n dragEvent.dataTransfer.setData('text', jsonData);\n }\n else {\n dragEvent.dataTransfer.setData('application/json', jsonData);\n dragEvent.dataTransfer.setData('text/plain', jsonData);\n }\n }\n catch (e) {\n // if we cannot convert the data to json, then we do not set the type\n }\n };\n if (providedOnRowDrag) {\n providedOnRowDrag({ rowNode: this.rowNode, dragEvent: dragEvent });\n }\n else {\n defaultOnRowDrag();\n }\n };\n DndSourceComp.prototype.checkVisibility = function () {\n var visible = this.column.isDndSource(this.rowNode);\n this.setDisplayed(visible);\n };\n __decorate([\n PostConstruct\n ], DndSourceComp.prototype, \"postConstruct\", null);\n return DndSourceComp;\n}(Component));\nexport { DndSourceComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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 { Constants } from \"../constants\";\nimport { Events } from \"../events\";\nimport { Component } from \"../widgets/component\";\nimport { CheckboxSelectionComponent } from \"./checkboxSelectionComponent\";\nimport { CellRangeType } from \"../interfaces/iRangeController\";\nimport { RowDragComp } from \"./rowDragComp\";\nimport { PopupEditorWrapper } from \"./cellEditors/popupEditorWrapper\";\nimport { _ } from \"../utils\";\nimport { DndSourceComp } from \"./dndSourceComp\";\nvar CellComp = /** @class */ (function (_super) {\n __extends(CellComp, _super);\n function CellComp(scope, beans, column, rowNode, rowComp, autoHeightCell, printLayout) {\n var _this = _super.call(this) || this;\n _this.hasChartRange = false;\n _this.editingCell = false;\n _this.suppressRefreshCell = false;\n _this.scope = null;\n // every time we go into edit mode, or back again, this gets incremented.\n // it's the components way of dealing with the async nature of framework components,\n // so if a framework component takes a while to be created, we know if the object\n // is still relevant when creating is finished. eg we could click edit / un-edit 20\n // times before the first React edit component comes back - we should discard\n // the first 19.\n _this.cellEditorVersion = 0;\n _this.cellRendererVersion = 0;\n _this.scope = scope;\n _this.beans = beans;\n _this.column = column;\n _this.rowNode = rowNode;\n _this.rowComp = rowComp;\n _this.autoHeightCell = autoHeightCell;\n _this.printLayout = printLayout;\n _this.createGridCellVo();\n _this.rangeSelectionEnabled = _this.beans.rangeController && beans.gridOptionsWrapper.isEnableRangeSelection();\n _this.cellFocused = _this.beans.focusedCellController.isCellFocused(_this.cellPosition);\n _this.firstRightPinned = _this.column.isFirstRightPinned();\n _this.lastLeftPinned = _this.column.isLastLeftPinned();\n if (_this.rangeSelectionEnabled && _this.beans.rangeController) {\n var rangeController = _this.beans.rangeController;\n _this.rangeCount = rangeController.getCellRangeCount(_this.cellPosition);\n _this.hasChartRange = _this.getHasChartRange();\n }\n _this.getValueAndFormat();\n _this.setUsingWrapper();\n _this.chooseCellRenderer();\n _this.setupColSpan();\n _this.rowSpan = _this.column.getRowSpan(_this.rowNode);\n return _this;\n }\n CellComp.prototype.getCreateTemplate = function () {\n var unselectable = !this.beans.gridOptionsWrapper.isEnableCellTextSelection() ? 'unselectable=\"on\"' : '';\n var templateParts = [];\n var col = this.column;\n var width = this.getCellWidth();\n var left = this.modifyLeftForPrintLayout(this.getCellLeft());\n var valueToRender = this.getInitialValueToRender();\n var valueSanitised = _.get(this.column, 'colDef.template', null) ? valueToRender : _.escape(valueToRender);\n this.tooltip = this.getToolTip();\n var tooltipSanitised = _.escape(this.tooltip);\n var colIdSanitised = _.escape(col.getId());\n var wrapperStartTemplate = '';\n var wrapperEndTemplate = '';\n var stylesFromColDef = this.preProcessStylesFromColDef();\n var cssClasses = this.getInitialCssClasses();\n var stylesForRowSpanning = this.getStylesForRowSpanning();\n var colIdxSanitised = _.escape(this.getAriaColumnIndex());\n if (this.usingWrapper) {\n wrapperStartTemplate = \"
\\n \";\n wrapperEndTemplate = '
';\n }\n templateParts.push(\"\");\n templateParts.push(wrapperStartTemplate);\n if (_.exists(valueSanitised, true)) {\n templateParts.push(valueSanitised);\n }\n templateParts.push(wrapperEndTemplate);\n templateParts.push(\"\");\n return templateParts.join('');\n };\n CellComp.prototype.getStylesForRowSpanning = function () {\n if (this.rowSpan === 1) {\n return '';\n }\n var singleRowHeight = this.beans.gridOptionsWrapper.getRowHeightAsNumber();\n var totalRowHeight = singleRowHeight * this.rowSpan;\n return \"height: \" + totalRowHeight + \"px; z-index: 1;\";\n };\n CellComp.prototype.afterAttached = function () {\n var querySelector = \"[comp-id=\\\"\" + this.getCompId() + \"\\\"]\";\n var eGui = this.eParentRow.querySelector(querySelector);\n this.setGui(eGui);\n // all of these have dependencies on the eGui, so only do them after eGui is set\n this.addDomData();\n this.populateTemplate();\n this.createCellRendererInstance(true);\n this.angular1Compile();\n this.refreshHandle();\n if (_.exists(this.tooltip) && !this.beans.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.beans.tooltipManager.registerTooltip(this);\n }\n };\n CellComp.prototype.onColumnHover = function () {\n var isHovered = this.beans.columnHoverService.isHovered(this.column);\n _.addOrRemoveCssClass(this.getGui(), 'ag-column-hover', isHovered);\n };\n CellComp.prototype.onCellChanged = function (event) {\n var eventImpactsThisCell = event.column === this.column;\n if (eventImpactsThisCell) {\n this.refreshCell({});\n }\n };\n CellComp.prototype.getCellLeft = function () {\n var mostLeftCol;\n if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n mostLeftCol = _.last(this.colsSpanning);\n }\n else {\n mostLeftCol = this.column;\n }\n return mostLeftCol.getLeft();\n };\n CellComp.prototype.getCellWidth = function () {\n if (!this.colsSpanning) {\n return this.column.getActualWidth();\n }\n return this.colsSpanning.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);\n };\n CellComp.prototype.onFlashCells = function (event) {\n var cellId = this.beans.cellPositionUtils.createId(this.cellPosition);\n var shouldFlash = event.cells[cellId];\n if (shouldFlash) {\n this.animateCell('highlight');\n }\n };\n CellComp.prototype.setupColSpan = function () {\n // if no col span is active, then we don't set it up, as it would be wasteful of CPU\n if (_.missing(this.getComponentHolder().colSpan)) {\n return;\n }\n // because we are col spanning, a reorder of the cols can change what cols we are spanning over\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayColumnsChanged.bind(this));\n // because we are spanning over multiple cols, we check for width any time any cols width changes.\n // this is expensive - really we should be explicitly checking only the cols we are spanning over\n // instead of every col, however it would be tricky code to track the cols we are spanning over, so\n // because hardly anyone will be using colSpan, am favouring this easier way for more maintainable code.\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onWidthChanged.bind(this));\n this.colsSpanning = this.getColSpanningList();\n };\n CellComp.prototype.getColSpanningList = function () {\n var colSpan = this.column.getColSpan(this.rowNode);\n var colsSpanning = [];\n // if just one col, the col span is just the column we are in\n if (colSpan === 1) {\n colsSpanning.push(this.column);\n }\n else {\n var pointer = this.column;\n var pinned = this.column.getPinned();\n for (var i = 0; pointer && i < colSpan; i++) {\n colsSpanning.push(pointer);\n pointer = this.beans.columnController.getDisplayedColAfter(pointer);\n if (!pointer || _.missing(pointer)) {\n break;\n }\n // we do not allow col spanning to span outside of pinned areas\n if (pinned !== pointer.getPinned()) {\n break;\n }\n }\n }\n return colsSpanning;\n };\n CellComp.prototype.onDisplayColumnsChanged = function () {\n var colsSpanning = this.getColSpanningList();\n if (!_.compareArrays(this.colsSpanning, colsSpanning)) {\n this.colsSpanning = colsSpanning;\n this.onWidthChanged();\n this.onLeftChanged(); // left changes when doing RTL\n }\n };\n CellComp.prototype.getAriaColumnIndex = function () {\n var allColumns = this.beans.columnController.getAllDisplayedColumns();\n return (allColumns.indexOf(this.column) + 1).toString();\n };\n CellComp.prototype.refreshAriaIndex = function () {\n var colIdx = this.getAriaColumnIndex();\n var el = this.usingWrapper ? this.eCellValue : this.getGui();\n el.setAttribute('aria-colindex', colIdx);\n };\n CellComp.prototype.getInitialCssClasses = function () {\n var cssClasses = [\"ag-cell\", \"ag-cell-not-inline-editing\"];\n // if we are putting the cell into a dummy container, to work out it's height,\n // then we don't put the height css in, as we want cell to fit height in that case.\n if (!this.autoHeightCell) {\n cssClasses.push('ag-cell-with-height');\n }\n var doingFocusCss = !this.beans.gridOptionsWrapper.isSuppressCellSelection();\n if (doingFocusCss && this.cellFocused) {\n // otherwise the class depends on the focus state\n cssClasses.push('ag-cell-focus');\n }\n if (this.firstRightPinned) {\n cssClasses.push('ag-cell-first-right-pinned');\n }\n if (this.lastLeftPinned) {\n cssClasses.push('ag-cell-last-left-pinned');\n }\n if (this.beans.columnHoverService.isHovered(this.column)) {\n cssClasses.push('ag-column-hover');\n }\n _.pushAll(cssClasses, this.preProcessClassesFromColDef());\n _.pushAll(cssClasses, this.preProcessCellClassRules());\n _.pushAll(cssClasses, this.getInitialRangeClasses());\n // if using the wrapper, this class goes on the wrapper instead\n if (!this.usingWrapper) {\n cssClasses.push('ag-cell-value');\n }\n return cssClasses;\n };\n CellComp.prototype.getInitialValueToRender = function () {\n // if using a cellRenderer, then render the html from the cell renderer if it exists\n if (this.usingCellRenderer) {\n if (typeof this.cellRendererGui === 'string') {\n return this.cellRendererGui;\n }\n return '';\n }\n var colDef = this.getComponentHolder();\n if (colDef.template) {\n // template is really only used for angular 1 - as people using ng1 are used to providing templates with\n // bindings in it. in ng2, people will hopefully want to provide components, not templates.\n return colDef.template;\n }\n if (colDef.templateUrl) {\n // likewise for templateUrl - it's for ng1 really - when we move away from ng1, we can take these out.\n // niall was pro angular 1 when writing template and templateUrl, if writing from scratch now, would\n // not do these, but would follow a pattern that was friendly towards components, not templates.\n var template = this.beans.templateService.getTemplate(colDef.templateUrl, this.refreshCell.bind(this, true));\n return template || '';\n }\n return this.getValueToUse();\n };\n CellComp.prototype.getRenderedRow = function () {\n return this.rowComp;\n };\n CellComp.prototype.isSuppressNavigable = function () {\n return this.column.isSuppressNavigable(this.rowNode);\n };\n CellComp.prototype.getCellRenderer = function () {\n return this.cellRenderer;\n };\n CellComp.prototype.getCellEditor = function () {\n return this.cellEditor;\n };\n // + stop editing {forceRefresh: true, suppressFlash: true}\n // + event cellChanged {}\n // + cellRenderer.params.refresh() {} -> method passes 'as is' to the cellRenderer, so params could be anything\n // + rowComp: event dataChanged {animate: update, newData: !update}\n // + rowComp: api refreshCells() {animate: true/false}\n // + rowRenderer: api softRefreshView() {}\n CellComp.prototype.refreshCell = function (params) {\n // if we are in the middle of 'stopEditing', then we don't refresh here, as refresh gets called explicitly\n if (this.suppressRefreshCell || this.editingCell) {\n return;\n }\n var colDef = this.getComponentHolder();\n var newData = params && params.newData;\n var suppressFlash = (params && params.suppressFlash) || colDef.suppressCellFlash;\n var forceRefresh = params && params.forceRefresh;\n var oldValue = this.value;\n // get latest value without invoking the value formatter as we may not be updating the cell\n this.value = this.getValue();\n // for simple values only (not objects), see if the value is the same, and if it is, skip the refresh.\n // when never allow skipping after an edit, as after editing, we need to put the GUI back to the way\n // if was before the edit.\n var valuesDifferent = !this.valuesAreEqual(oldValue, this.value);\n var dataNeedsUpdating = forceRefresh || valuesDifferent;\n if (dataNeedsUpdating) {\n // now invoke the value formatter as we are going to update cell\n this.valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, this.value);\n // if it's 'new data', then we don't refresh the cellRenderer, even if refresh method is available.\n // this is because if the whole data is new (ie we are showing stock price 'BBA' now and not 'SSD')\n // then we are not showing a movement in the stock price, rather we are showing different stock.\n var cellRendererRefreshed = newData ? false : this.attemptCellRendererRefresh();\n // we do the replace if not doing refresh, or if refresh was unsuccessful.\n // the refresh can be unsuccessful if we are using a framework (eg ng2 or react) and the framework\n // wrapper has the refresh method, but the underlying component doesn't\n if (!cellRendererRefreshed) {\n this.replaceContentsAfterRefresh();\n }\n // we don't want to flash the cells when processing a filter change, as otherwise the UI would\n // be to busy. see comment in FilterManager with regards processingFilterChange\n var processingFilterChange = this.beans.filterManager.isSuppressFlashingCellsBecauseFiltering();\n var flashCell = !suppressFlash && !processingFilterChange &&\n (this.beans.gridOptionsWrapper.isEnableCellChangeFlash() || colDef.enableCellChangeFlash);\n if (flashCell) {\n this.flashCell();\n }\n // need to check rules. note, we ignore colDef classes and styles, these are assumed to be static\n this.postProcessStylesFromColDef();\n this.postProcessClassesFromColDef();\n }\n // we can't readily determine if the data in an angularjs template has changed, so here we just update\n // and recompile (if applicable)\n this.updateAngular1ScopeAndCompile();\n this.refreshToolTip();\n // we do cellClassRules even if the value has not changed, so that users who have rules that\n // look at other parts of the row (where the other part of the row might of changed) will work.\n this.postProcessCellClassRules();\n };\n // user can also call this via API\n CellComp.prototype.flashCell = function () {\n this.animateCell('data-changed');\n };\n CellComp.prototype.animateCell = function (cssName) {\n var fullName = \"ag-cell-\" + cssName;\n var animationFullName = \"ag-cell-\" + cssName + \"-animation\";\n var element = this.getGui();\n // we want to highlight the cells, without any animation\n _.addCssClass(element, fullName);\n _.removeCssClass(element, animationFullName);\n // then once that is applied, we remove the highlight with animation\n window.setTimeout(function () {\n _.removeCssClass(element, fullName);\n _.addCssClass(element, animationFullName);\n window.setTimeout(function () {\n // and then to leave things as we got them, we remove the animation\n _.removeCssClass(element, animationFullName);\n }, 1000);\n }, 500);\n };\n CellComp.prototype.replaceContentsAfterRefresh = function () {\n // otherwise we rip out the cell and replace it\n _.clearElement(this.eParentOfValue);\n // remove old renderer component if it exists\n if (this.cellRenderer && this.cellRenderer.destroy) {\n this.cellRenderer.destroy();\n }\n this.cellRenderer = null;\n this.cellRendererGui = null;\n // populate\n this.putDataIntoCellAfterRefresh();\n this.updateAngular1ScopeAndCompile();\n };\n CellComp.prototype.updateAngular1ScopeAndCompile = function () {\n if (this.beans.gridOptionsWrapper.isAngularCompileRows() && this.scope) {\n this.scope.data = __assign({}, this.rowNode.data);\n this.angular1Compile();\n }\n };\n CellComp.prototype.angular1Compile = function () {\n // if angular compiling, then need to also compile the cell again (angular compiling sucks, please wait...)\n if (this.beans.gridOptionsWrapper.isAngularCompileRows()) {\n var eGui = this.getGui();\n // only compile the node if it hasn't already been done\n // this prevents \"orphaned\" node leaks\n if (!eGui.classList.contains('ng-scope') || eGui.childElementCount === 0) {\n var compiledElement_1 = this.beans.$compile(eGui)(this.scope);\n this.addDestroyFunc(function () { return compiledElement_1.remove(); });\n }\n }\n };\n CellComp.prototype.postProcessStylesFromColDef = function () {\n var stylesToUse = this.processStylesFromColDef();\n if (stylesToUse) {\n _.addStylesToElement(this.getGui(), stylesToUse);\n }\n };\n CellComp.prototype.preProcessStylesFromColDef = function () {\n return _.cssStyleObjectToMarkup(this.processStylesFromColDef());\n };\n CellComp.prototype.processStylesFromColDef = function () {\n var colDef = this.getComponentHolder();\n if (colDef.cellStyle) {\n var cssToUse = void 0;\n if (typeof colDef.cellStyle === 'function') {\n var cellStyleParams = {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n column: this.column,\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi()\n };\n var cellStyleFunc = colDef.cellStyle;\n cssToUse = cellStyleFunc(cellStyleParams);\n }\n else {\n cssToUse = colDef.cellStyle;\n }\n return cssToUse;\n }\n };\n CellComp.prototype.postProcessClassesFromColDef = function () {\n var _this = this;\n this.processClassesFromColDef(function (className) { return _.addCssClass(_this.getGui(), className); });\n };\n CellComp.prototype.preProcessClassesFromColDef = function () {\n var res = [];\n this.processClassesFromColDef(function (className) { return res.push(className); });\n return res;\n };\n CellComp.prototype.processClassesFromColDef = function (onApplicableClass) {\n var colDef = this.getComponentHolder();\n this.beans.stylingService.processStaticCellClasses(colDef, {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n rowIndex: this.rowNode.rowIndex,\n $scope: this.scope,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass);\n };\n CellComp.prototype.putDataIntoCellAfterRefresh = function () {\n // template gets preference, then cellRenderer, then do it ourselves\n var colDef = this.getComponentHolder();\n if (colDef.template) {\n // template is really only used for angular 1 - as people using ng1 are used to providing templates with\n // bindings in it. in ng2, people will hopefully want to provide components, not templates.\n this.eParentOfValue.innerHTML = colDef.template;\n }\n else if (colDef.templateUrl) {\n // likewise for templateUrl - it's for ng1 really - when we move away from ng1, we can take these out.\n // niall was pro angular 1 when writing template and templateUrl, if writing from scratch now, would\n // not do these, but would follow a pattern that was friendly towards components, not templates.\n var template = this.beans.templateService.getTemplate(colDef.templateUrl, this.refreshCell.bind(this, true));\n if (template) {\n this.eParentOfValue.innerHTML = template;\n }\n }\n else {\n // we can switch from using a cell renderer back to the default if a user\n // is using cellRendererSelect\n this.chooseCellRenderer();\n if (this.usingCellRenderer) {\n this.createCellRendererInstance();\n }\n else {\n var valueToUse = this.getValueToUse();\n if (valueToUse != null) {\n this.eParentOfValue.innerHTML = _.escape(valueToUse);\n }\n }\n }\n };\n CellComp.prototype.attemptCellRendererRefresh = function () {\n if (_.missing(this.cellRenderer) || !this.cellRenderer || _.missing(this.cellRenderer.refresh)) {\n return false;\n }\n // if the cell renderer has a refresh method, we call this instead of doing a refresh\n var params = this.createCellRendererParams();\n // take any custom params off of the user\n var finalParams = this.beans.userComponentFactory.createFinalParams(this.getComponentHolder(), this.cellRendererType, params);\n var result = this.cellRenderer.refresh(finalParams);\n // NOTE on undefined: previous version of the cellRenderer.refresh() interface\n // returned nothing, if the method existed, we assumed it refreshed. so for\n // backwards compatibility, we assume if method exists and returns nothing,\n // that it was successful.\n return result === true || result === undefined;\n };\n CellComp.prototype.refreshToolTip = function () {\n var newTooltip = this.getToolTip();\n if (this.tooltip === newTooltip) {\n return;\n }\n var hasNewTooltip = _.exists(newTooltip);\n if (hasNewTooltip && this.tooltip === newTooltip.toString()) {\n return;\n }\n var hadTooltip = _.exists(this.tooltip);\n this.tooltip = newTooltip;\n if (this.beans.gridOptionsWrapper.isEnableBrowserTooltips()) {\n if (hasNewTooltip) {\n this.eParentOfValue.setAttribute('title', this.tooltip);\n }\n else {\n this.eParentOfValue.removeAttribute('title');\n }\n }\n else {\n if (hadTooltip) {\n if (!hasNewTooltip) {\n this.beans.tooltipManager.unregisterTooltip(this);\n }\n }\n else if (hasNewTooltip) {\n this.beans.tooltipManager.registerTooltip(this);\n }\n }\n };\n CellComp.prototype.valuesAreEqual = function (val1, val2) {\n // if the user provided an equals method, use that, otherwise do simple comparison\n var colDef = this.getComponentHolder();\n var equalsMethod = colDef ? colDef.equals : null;\n return equalsMethod ? equalsMethod(val1, val2) : val1 === val2;\n };\n CellComp.prototype.getToolTip = function () {\n var colDef = this.getComponentHolder();\n var data = this.rowNode.data;\n if (colDef.tooltipField && _.exists(data)) {\n return _.getValueUsingField(data, colDef.tooltipField, this.column.isTooltipFieldContainsDots());\n }\n var valueGetter = colDef.tooltipValueGetter || colDef.tooltip;\n if (valueGetter) {\n return valueGetter({\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n colDef: colDef,\n column: this.getColumn(),\n context: this.beans.gridOptionsWrapper.getContext(),\n value: this.value,\n valueFormatted: this.valueFormatted,\n rowIndex: this.cellPosition.rowIndex,\n node: this.rowNode,\n data: this.rowNode.data,\n $scope: this.scope,\n });\n }\n return null;\n };\n CellComp.prototype.getTooltipText = function (escape) {\n if (escape === void 0) { escape = true; }\n return escape ? _.escape(this.tooltip) : this.tooltip;\n };\n CellComp.prototype.processCellClassRules = function (onApplicableClass, onNotApplicableClass) {\n var colDef = this.getComponentHolder();\n this.beans.stylingService.processClassRules(colDef.cellClassRules, {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n rowIndex: this.cellPosition.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass, onNotApplicableClass);\n };\n CellComp.prototype.postProcessCellClassRules = function () {\n var _this = this;\n this.processCellClassRules(function (className) { return _.addCssClass(_this.getGui(), className); }, function (className) { return _.removeCssClass(_this.getGui(), className); });\n };\n CellComp.prototype.preProcessCellClassRules = function () {\n var res = [];\n this.processCellClassRules(function (className) { return res.push(className); }, function (_) {\n // not catered for, if creating, no need\n // to remove class as it was never there\n });\n return res;\n };\n // a wrapper is used when we are putting a selection checkbox in the cell with the value\n CellComp.prototype.setUsingWrapper = function () {\n var colDef = this.getComponentHolder();\n // never allow selection or dragging on pinned rows\n if (this.rowNode.rowPinned) {\n this.usingWrapper = false;\n this.includeSelectionComponent = false;\n this.includeRowDraggingComponent = false;\n this.includeDndSourceComponent = false;\n return;\n }\n var cbSelectionIsFunc = typeof colDef.checkboxSelection === 'function';\n var rowDraggableIsFunc = typeof colDef.rowDrag === 'function';\n var dndSourceIsFunc = typeof colDef.dndSource === 'function';\n this.includeSelectionComponent = cbSelectionIsFunc || colDef.checkboxSelection === true;\n this.includeRowDraggingComponent = rowDraggableIsFunc || colDef.rowDrag === true;\n this.includeDndSourceComponent = dndSourceIsFunc || colDef.dndSource === true;\n var enableTextSelection = this.beans.gridOptionsWrapper.isEnableCellTextSelection();\n this.usingWrapper = enableTextSelection || this.includeRowDraggingComponent || this.includeSelectionComponent || this.includeDndSourceComponent;\n };\n CellComp.prototype.chooseCellRenderer = function () {\n // template gets preference, then cellRenderer, then do it ourselves\n var colDef = this.getComponentHolder();\n // templates are for ng1, ideally we wouldn't have these, they are ng1 support\n // inside the core which is bad\n if (colDef.template || colDef.templateUrl) {\n this.usingCellRenderer = false;\n return;\n }\n var params = this.createCellRendererParams();\n var cellRenderer = this.beans.userComponentFactory.lookupComponentClassDef(colDef, 'cellRenderer', params);\n var pinnedRowCellRenderer = this.beans.userComponentFactory.lookupComponentClassDef(colDef, 'pinnedRowCellRenderer', params);\n if (pinnedRowCellRenderer && this.rowNode.rowPinned) {\n this.cellRendererType = CellComp.CELL_RENDERER_TYPE_PINNED;\n this.usingCellRenderer = true;\n }\n else if (cellRenderer) {\n this.cellRendererType = CellComp.CELL_RENDERER_TYPE_NORMAL;\n this.usingCellRenderer = true;\n }\n else {\n this.usingCellRenderer = false;\n }\n };\n CellComp.prototype.createCellRendererInstance = function (useTaskService) {\n var _this = this;\n if (useTaskService === void 0) { useTaskService = false; }\n if (!this.usingCellRenderer) {\n return;\n }\n // never use task service if angularCompileRows=true, as that assume the cell renderers\n // are finished when the row is created. also we never use it if animation frame service\n // is turned off.\n // and lastly we never use it if doing auto-height, as the auto-height service checks the\n // row height directly after the cell is created, it doesn't wait around for the tasks to complete\n var angularCompileRows = this.beans.gridOptionsWrapper.isAngularCompileRows();\n var suppressAnimationFrame = this.beans.gridOptionsWrapper.isSuppressAnimationFrame();\n if (angularCompileRows || suppressAnimationFrame || this.autoHeightCell) {\n useTaskService = false;\n }\n var params = this.createCellRendererParams();\n this.cellRendererVersion++;\n var callback = this.afterCellRendererCreated.bind(this, this.cellRendererVersion);\n var cellRendererTypeNormal = this.cellRendererType === CellComp.CELL_RENDERER_TYPE_NORMAL;\n this.createCellRendererFunc = function () {\n _this.createCellRendererFunc = null;\n // this can return null in the event that the user has switched from a renderer component to nothing, for example\n // when using a cellRendererSelect to return a component or null depending on row data etc\n var componentPromise;\n if (cellRendererTypeNormal) {\n componentPromise = _this.beans.userComponentFactory.newCellRenderer(_this.getComponentHolder(), params);\n }\n else {\n componentPromise = _this.beans.userComponentFactory.newPinnedRowCellRenderer(_this.getComponentHolder(), params);\n }\n if (componentPromise) {\n componentPromise.then(callback);\n }\n };\n if (useTaskService) {\n this.beans.taskQueue.createTask(this.createCellRendererFunc, this.rowNode.rowIndex, 'createTasksP2');\n }\n else {\n this.createCellRendererFunc();\n }\n };\n CellComp.prototype.afterCellRendererCreated = function (cellRendererVersion, cellRenderer) {\n // see if daemon\n if (!this.isAlive() || (cellRendererVersion !== this.cellRendererVersion)) {\n if (cellRenderer.destroy) {\n cellRenderer.destroy();\n }\n return;\n }\n this.cellRenderer = cellRenderer;\n this.cellRendererGui = this.cellRenderer.getGui();\n if (_.missing(this.cellRendererGui)) {\n return;\n }\n // if async components, then it's possible the user started editing since\n // this call was made\n if (!this.editingCell) {\n this.eParentOfValue.appendChild(this.cellRendererGui);\n }\n };\n CellComp.prototype.createCellRendererParams = function () {\n var _this = this;\n return {\n value: this.value,\n valueFormatted: this.valueFormatted,\n getValue: this.getValue.bind(this),\n setValue: function (value) { return _this.beans.valueService.setValue(_this.rowNode, _this.column, value); },\n formatValue: this.formatValue.bind(this),\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: this.getComponentHolder(),\n column: this.column,\n $scope: this.scope,\n rowIndex: this.cellPosition.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n refreshCell: this.refreshCell.bind(this),\n eGridCell: this.getGui(),\n eParentOfValue: this.eParentOfValue,\n // these bits are not documented anywhere, so we could drop them?\n // it was in the olden days to allow user to register for when rendered\n // row was removed (the row comp was removed), however now that the user\n // can provide components for cells, the destroy method gets call when this\n // happens so no longer need to fire event.\n addRowCompListener: this.rowComp ? this.rowComp.addEventListener.bind(this.rowComp) : null,\n addRenderedRowListener: function (eventType, listener) {\n console.warn('ag-Grid: since ag-Grid .v11, params.addRenderedRowListener() is now params.addRowCompListener()');\n if (_this.rowComp) {\n _this.rowComp.addEventListener(eventType, listener);\n }\n }\n };\n };\n CellComp.prototype.formatValue = function (value) {\n var valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, value);\n return valueFormatted != null ? valueFormatted : value;\n };\n CellComp.prototype.getValueToUse = function () {\n return this.valueFormatted != null ? this.valueFormatted : this.value;\n };\n CellComp.prototype.getValueAndFormat = function () {\n this.value = this.getValue();\n this.valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, this.value);\n };\n CellComp.prototype.getValue = function () {\n // if we don't check this, then the grid will render leaf groups as open even if we are not\n // allowing the user to open leaf groups. confused? remember for pivot mode we don't allow\n // opening leaf groups, so we have to force leafGroups to be closed in case the user expanded\n // them via the API, or user user expanded them in the UI before turning on pivot mode\n var lockedClosedGroup = this.rowNode.leafGroup && this.beans.columnController.isPivotMode();\n var isOpenGroup = this.rowNode.group && this.rowNode.expanded && !this.rowNode.footer && !lockedClosedGroup;\n // are we showing group footers\n var groupFootersEnabled = this.beans.gridOptionsWrapper.isGroupIncludeFooter();\n // if doing footers, we normally don't show agg data at group level when group is open\n var groupAlwaysShowAggData = this.beans.gridOptionsWrapper.isGroupSuppressBlankHeader();\n // if doing grouping and footers, we don't want to include the agg value\n // in the header when the group is open\n var ignoreAggData = (isOpenGroup && groupFootersEnabled) && !groupAlwaysShowAggData;\n return this.beans.valueService.getValue(this.column, this.rowNode, false, ignoreAggData);\n };\n CellComp.prototype.onMouseEvent = function (eventName, mouseEvent) {\n if (_.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n switch (eventName) {\n case 'click':\n this.onCellClicked(mouseEvent);\n break;\n case 'mousedown':\n this.onMouseDown(mouseEvent);\n break;\n case 'dblclick':\n this.onCellDoubleClicked(mouseEvent);\n break;\n case 'mouseout':\n this.onMouseOut(mouseEvent);\n break;\n case 'mouseover':\n this.onMouseOver(mouseEvent);\n break;\n }\n };\n CellComp.prototype.dispatchCellContextMenuEvent = function (event) {\n var colDef = this.getComponentHolder();\n var cellContextMenuEvent = this.createEvent(event, Events.EVENT_CELL_CONTEXT_MENU);\n this.beans.eventService.dispatchEvent(cellContextMenuEvent);\n if (colDef.onCellContextMenu) {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellContextMenu(cellContextMenuEvent); }, 0);\n }\n };\n CellComp.prototype.createEvent = function (domEvent, eventType) {\n var event = {\n node: this.rowNode,\n data: this.rowNode.data,\n value: this.value,\n column: this.column,\n colDef: this.getComponentHolder(),\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi,\n rowPinned: this.rowNode.rowPinned,\n event: domEvent,\n type: eventType,\n rowIndex: this.rowNode.rowIndex\n };\n // because we are hacking in $scope for angular 1, we have to de-reference\n if (this.scope) {\n event.$scope = this.scope;\n }\n return event;\n };\n CellComp.prototype.onMouseOut = function (mouseEvent) {\n var cellMouseOutEvent = this.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OUT);\n this.beans.eventService.dispatchEvent(cellMouseOutEvent);\n this.beans.columnHoverService.clearMouseOver();\n };\n CellComp.prototype.onMouseOver = function (mouseEvent) {\n var cellMouseOverEvent = this.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OVER);\n this.beans.eventService.dispatchEvent(cellMouseOverEvent);\n this.beans.columnHoverService.setMouseOver([this.column]);\n };\n CellComp.prototype.onCellDoubleClicked = function (mouseEvent) {\n var colDef = this.getComponentHolder();\n // always dispatch event to eventService\n var cellDoubleClickedEvent = this.createEvent(mouseEvent, Events.EVENT_CELL_DOUBLE_CLICKED);\n this.beans.eventService.dispatchEvent(cellDoubleClickedEvent);\n // check if colDef also wants to handle event\n if (typeof colDef.onCellDoubleClicked === 'function') {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellDoubleClicked(cellDoubleClickedEvent); }, 0);\n }\n var editOnDoubleClick = !this.beans.gridOptionsWrapper.isSingleClickEdit()\n && !this.beans.gridOptionsWrapper.isSuppressClickEdit();\n if (editOnDoubleClick) {\n this.startRowOrCellEdit();\n }\n };\n // called by rowRenderer when user navigates via tab key\n CellComp.prototype.startRowOrCellEdit = function (keyPress, charPress) {\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n this.rowComp.startRowEditing(keyPress, charPress, this);\n }\n else {\n this.startEditingIfEnabled(keyPress, charPress, true);\n }\n };\n CellComp.prototype.isCellEditable = function () {\n return this.column.isCellEditable(this.rowNode);\n };\n // either called internally if single cell editing, or called by rowRenderer if row editing\n CellComp.prototype.startEditingIfEnabled = function (keyPress, charPress, cellStartedEdit) {\n if (keyPress === void 0) { keyPress = null; }\n if (charPress === void 0) { charPress = null; }\n if (cellStartedEdit === void 0) { cellStartedEdit = false; }\n // don't do it if not editable\n if (!this.isCellEditable()) {\n return;\n }\n // don't do it if already editing\n if (this.editingCell) {\n return;\n }\n this.editingCell = true;\n this.cellEditorVersion++;\n var callback = this.afterCellEditorCreated.bind(this, this.cellEditorVersion);\n var params = this.createCellEditorParams(keyPress, charPress, cellStartedEdit);\n this.createCellEditor(params).then(callback);\n // if we don't do this, and editor component is async, then there will be a period\n // when the component isn't present and keyboard navigation won't work - so example\n // of user hitting tab quickly (more quickly than renderers getting created) won't work\n var cellEditorAsync = _.missing(this.cellEditor);\n if (cellEditorAsync && cellStartedEdit) {\n this.focusCell(true);\n }\n };\n CellComp.prototype.createCellEditor = function (params) {\n var _this = this;\n var cellEditorPromise = this.beans.userComponentFactory.newCellEditor(this.column.getColDef(), params);\n return cellEditorPromise.map(function (cellEditor) {\n var isPopup = cellEditor.isPopup && cellEditor.isPopup();\n if (!isPopup) {\n return cellEditor;\n }\n if (_this.beans.gridOptionsWrapper.isFullRowEdit()) {\n console.warn('ag-Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both ' +\n '- either turn off fullRowEdit, or stop using popup editors.');\n }\n // if a popup, then we wrap in a popup editor and return the popup\n var popupEditorWrapper = new PopupEditorWrapper(cellEditor);\n _this.beans.context.wireBean(popupEditorWrapper);\n popupEditorWrapper.init(params);\n return popupEditorWrapper;\n });\n };\n CellComp.prototype.afterCellEditorCreated = function (cellEditorVersion, cellEditor) {\n // if editingCell=false, means user cancelled the editor before component was ready.\n // if versionMismatch, then user cancelled the edit, then started the edit again, and this\n // is the first editor which is now stale.\n var versionMismatch = cellEditorVersion !== this.cellEditorVersion;\n if (versionMismatch || !this.editingCell) {\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n return;\n }\n if (cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart()) {\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n this.editingCell = false;\n return;\n }\n if (!cellEditor.getGui) {\n console.warn(\"ag-Grid: cellEditor for column \" + this.column.getId() + \" is missing getGui() method\");\n // no getGui, for React guys, see if they attached a react component directly\n if (cellEditor.render) {\n console.warn(\"ag-Grid: we found 'render' on the component, are you trying to set a React renderer but added it as colDef.cellEditor instead of colDef.cellEditorFmk?\");\n }\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n this.editingCell = false;\n return;\n }\n this.cellEditor = cellEditor;\n this.cellEditorInPopup = cellEditor.isPopup !== undefined && cellEditor.isPopup();\n this.setInlineEditingClass();\n if (this.cellEditorInPopup) {\n this.addPopupCellEditor();\n }\n else {\n this.addInCellEditor();\n }\n if (cellEditor.afterGuiAttached) {\n cellEditor.afterGuiAttached();\n }\n var event = this.createEvent(null, Events.EVENT_CELL_EDITING_STARTED);\n this.beans.eventService.dispatchEvent(event);\n };\n CellComp.prototype.addInCellEditor = function () {\n _.clearElement(this.getGui());\n if (this.cellEditor) {\n this.getGui().appendChild(this.cellEditor.getGui());\n }\n this.angular1Compile();\n };\n CellComp.prototype.addPopupCellEditor = function () {\n var _this = this;\n var ePopupGui = this.cellEditor ? this.cellEditor.getGui() : null;\n var useModelPopup = this.beans.gridOptionsWrapper.isStopEditingWhenGridLosesFocus();\n this.hideEditorPopup = this.beans.popupService.addPopup(useModelPopup, ePopupGui, true, \n // callback for when popup disappears\n function () {\n _this.onPopupEditorClosed();\n });\n this.beans.popupService.positionPopupOverComponent({\n column: this.column,\n rowNode: this.rowNode,\n type: 'popupCellEditor',\n eventSource: this.getGui(),\n ePopup: ePopupGui,\n keepWithinBounds: true\n });\n this.angular1Compile();\n };\n CellComp.prototype.onPopupEditorClosed = function () {\n // we only call stopEditing if we are editing, as\n // it's possible the popup called 'stop editing'\n // before this, eg if 'enter key' was pressed on\n // the editor.\n if (this.editingCell) {\n // note: this only happens when use clicks outside of the grid. if use clicks on another\n // cell, then the editing will have already stopped on this cell\n this.stopRowOrCellEdit();\n // we only focus cell again if this cell is still focused. it is possible\n // it is not focused if the user cancelled the edit by clicking on another\n // cell outside of this one\n if (this.beans.focusedCellController.isCellFocused(this.cellPosition)) {\n this.focusCell(true);\n }\n }\n };\n // if we are editing inline, then we don't have the padding in the cell (set in the themes)\n // to allow the text editor full access to the entire cell\n CellComp.prototype.setInlineEditingClass = function () {\n if (!this.isAlive()) {\n return;\n }\n // ag-cell-inline-editing - appears when user is inline editing\n // ag-cell-not-inline-editing - appears when user is no inline editing\n // ag-cell-popup-editing - appears when user is editing cell in popup (appears on the cell, not on the popup)\n // note: one of {ag-cell-inline-editing, ag-cell-not-inline-editing} is always present, they toggle.\n // however {ag-cell-popup-editing} shows when popup, so you have both {ag-cell-popup-editing}\n // and {ag-cell-not-inline-editing} showing at the same time.\n var editingInline = this.editingCell && !this.cellEditorInPopup;\n var popupEditorShowing = this.editingCell && this.cellEditorInPopup;\n _.addOrRemoveCssClass(this.getGui(), \"ag-cell-inline-editing\", editingInline);\n _.addOrRemoveCssClass(this.getGui(), \"ag-cell-not-inline-editing\", !editingInline);\n _.addOrRemoveCssClass(this.getGui(), \"ag-cell-popup-editing\", popupEditorShowing);\n _.addOrRemoveCssClass(this.getGui().parentNode, \"ag-row-inline-editing\", editingInline);\n _.addOrRemoveCssClass(this.getGui().parentNode, \"ag-row-not-inline-editing\", !editingInline);\n };\n CellComp.prototype.createCellEditorParams = function (keyPress, charPress, cellStartedEdit) {\n return {\n value: this.getValue(),\n keyPress: keyPress,\n charPress: charPress,\n column: this.column,\n colDef: this.column.getColDef(),\n rowIndex: this.cellPosition.rowIndex,\n node: this.rowNode,\n data: this.rowNode.data,\n api: this.beans.gridOptionsWrapper.getApi(),\n cellStartedEdit: cellStartedEdit,\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n $scope: this.scope,\n onKeyDown: this.onKeyDown.bind(this),\n stopEditing: this.stopEditingAndFocus.bind(this),\n eGridCell: this.getGui(),\n parseValue: this.parseValue.bind(this),\n formatValue: this.formatValue.bind(this)\n };\n };\n // cell editors call this, when they want to stop for reasons other\n // than what we pick up on. eg selecting from a dropdown ends editing.\n CellComp.prototype.stopEditingAndFocus = function (suppressNavigateAfterEdit) {\n if (suppressNavigateAfterEdit === void 0) { suppressNavigateAfterEdit = false; }\n this.stopRowOrCellEdit();\n this.focusCell(true);\n if (!suppressNavigateAfterEdit) {\n this.navigateAfterEdit();\n }\n };\n CellComp.prototype.parseValue = function (newValue) {\n var colDef = this.getComponentHolder();\n var params = {\n node: this.rowNode,\n data: this.rowNode.data,\n oldValue: this.value,\n newValue: newValue,\n colDef: colDef,\n column: this.column,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n var valueParser = colDef.valueParser;\n return _.exists(valueParser) ? this.beans.expressionService.evaluate(valueParser, params) : newValue;\n };\n CellComp.prototype.focusCell = function (forceBrowserFocus) {\n if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n this.beans.focusedCellController.setFocusedCell(this.cellPosition.rowIndex, this.column, this.rowNode.rowPinned, forceBrowserFocus);\n };\n CellComp.prototype.setFocusInOnEditor = function () {\n if (this.editingCell) {\n if (this.cellEditor && this.cellEditor.focusIn) {\n // if the editor is present, then we just focus it\n this.cellEditor.focusIn();\n }\n else {\n // if the editor is not present, it means async cell editor (eg React fibre)\n // and we are trying to set focus before the cell editor is present, so we\n // focus the cell instead\n this.focusCell(true);\n }\n }\n };\n CellComp.prototype.isEditing = function () {\n return this.editingCell;\n };\n CellComp.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_F2:\n this.onF2KeyDown();\n break;\n case Constants.KEY_ESCAPE:\n this.onEscapeKeyDown();\n break;\n case Constants.KEY_TAB:\n this.onTabKeyDown(event);\n break;\n case Constants.KEY_BACKSPACE:\n case Constants.KEY_DELETE:\n this.onBackspaceOrDeleteKeyPressed(key);\n break;\n case Constants.KEY_DOWN:\n case Constants.KEY_UP:\n case Constants.KEY_RIGHT:\n case Constants.KEY_LEFT:\n this.onNavigationKeyPressed(event, key);\n break;\n }\n };\n CellComp.prototype.setFocusOutOnEditor = function () {\n if (this.editingCell && this.cellEditor && this.cellEditor.focusOut) {\n this.cellEditor.focusOut();\n }\n };\n CellComp.prototype.onNavigationKeyPressed = function (event, key) {\n if (this.editingCell) {\n return;\n }\n if (event.shiftKey && this.rangeSelectionEnabled) {\n this.onShiftRangeSelect(key);\n }\n else {\n this.beans.rowRenderer.navigateToNextCell(event, key, this.cellPosition, true);\n }\n // if we don't prevent default, the grid will scroll with the navigation keys\n event.preventDefault();\n };\n CellComp.prototype.onShiftRangeSelect = function (key) {\n if (!this.beans.rangeController) {\n return;\n }\n var endCell = this.beans.rangeController.extendLatestRangeInDirection(key);\n if (endCell) {\n this.beans.rowRenderer.ensureCellVisible(endCell);\n }\n };\n CellComp.prototype.onTabKeyDown = function (event) {\n this.beans.rowRenderer.onTabKeyDown(this, event);\n };\n CellComp.prototype.onBackspaceOrDeleteKeyPressed = function (key) {\n if (!this.editingCell) {\n this.startRowOrCellEdit(key);\n }\n };\n CellComp.prototype.onEnterKeyDown = function () {\n if (this.editingCell || this.rowComp.isEditing()) {\n this.stopEditingAndFocus();\n }\n else {\n if (this.beans.gridOptionsWrapper.isEnterMovesDown()) {\n this.beans.rowRenderer.navigateToNextCell(null, Constants.KEY_DOWN, this.cellPosition, false);\n }\n else {\n this.startRowOrCellEdit(Constants.KEY_ENTER);\n }\n }\n };\n CellComp.prototype.navigateAfterEdit = function () {\n var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n if (fullRowEdit) {\n return;\n }\n var enterMovesDownAfterEdit = this.beans.gridOptionsWrapper.isEnterMovesDownAfterEdit();\n if (enterMovesDownAfterEdit) {\n this.beans.rowRenderer.navigateToNextCell(null, Constants.KEY_DOWN, this.cellPosition, false);\n }\n };\n CellComp.prototype.onF2KeyDown = function () {\n if (!this.editingCell) {\n this.startRowOrCellEdit(Constants.KEY_F2);\n }\n };\n CellComp.prototype.onEscapeKeyDown = function () {\n if (this.editingCell) {\n this.stopRowOrCellEdit(true);\n this.focusCell(true);\n }\n };\n CellComp.prototype.onKeyPress = function (event) {\n // check this, in case focus is on a (for example) a text field inside the cell,\n // in which cse we should not be listening for these key pressed\n var eventTarget = _.getTarget(event);\n var eventOnChildComponent = eventTarget !== this.getGui();\n if (eventOnChildComponent || this.editingCell) {\n return;\n }\n var pressedChar = String.fromCharCode(event.charCode);\n if (pressedChar === ' ') {\n this.onSpaceKeyPressed(event);\n }\n else if (_.isEventFromPrintableCharacter(event)) {\n this.startRowOrCellEdit(null, pressedChar);\n // if we don't prevent default, then the keypress also gets applied to the text field\n // (at least when doing the default editor), but we need to allow the editor to decide\n // what it wants to do. we only do this IF editing was started - otherwise it messes\n // up when the use is not doing editing, but using rendering with text fields in cellRenderer\n // (as it would block the the user from typing into text fields).\n event.preventDefault();\n }\n };\n CellComp.prototype.onSpaceKeyPressed = function (event) {\n if (!this.editingCell && this.beans.gridOptionsWrapper.isRowSelection()) {\n var selected = this.rowNode.isSelected();\n this.rowNode.setSelected(!selected);\n }\n // prevent default as space key, by default, moves browser scroll down\n event.preventDefault();\n };\n CellComp.prototype.onMouseDown = function (mouseEvent) {\n // we only need to pass true to focusCell in when the browser is IE\n // and we are trying to focus a cell (has ag-cell class), otherwise\n // we pass false, as we don't want the cell to focus also get the browser\n // focus. if we did, then the cellRenderer could have a text field in it,\n // for example, and as the user clicks on the text field, the text field,\n // the focus doesn't get to the text field, instead to goes to the div\n // behind, making it impossible to select the text field.\n var forceBrowserFocus = false;\n var button = mouseEvent.button, ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey, target = mouseEvent.target;\n var _a = this.beans, eventService = _a.eventService, rangeController = _a.rangeController;\n if (rangeController) {\n var cellInRange = rangeController.isCellInAnyRange(this.getCellPosition());\n if (cellInRange && button === 2) {\n return;\n }\n }\n if ((_.isBrowserIE() || _.isBrowserEdge()) && this.getGui().contains(target)) {\n forceBrowserFocus = true;\n }\n if (!shiftKey || (rangeController && !rangeController.getCellRanges().length)) {\n this.focusCell(forceBrowserFocus);\n }\n else {\n // if a range is being changed, we need to make sure the focused cell does not change.\n mouseEvent.preventDefault();\n }\n // if we are clicking on a checkbox, we need to make sure the cell wrapping that checkbox\n // is focused but we don't want to change the range selection, so return here.\n if (_.isElementChildOfClass(target, 'ag-selection-checkbox', 3)) {\n return;\n }\n // if it's a right click, then if the cell is already in range,\n // don't change the range, however if the cell is not in a range,\n // we set a new range\n var leftMouseButtonClick = _.isLeftClick(mouseEvent);\n if (leftMouseButtonClick && rangeController) {\n var thisCell = this.cellPosition;\n if (shiftKey) {\n rangeController.extendLatestRangeToCell(thisCell);\n }\n else {\n var ctrlKeyPressed = ctrlKey || metaKey;\n rangeController.setRangeToCell(thisCell, ctrlKeyPressed);\n }\n }\n var cellMouseDownEvent = this.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_DOWN);\n eventService.dispatchEvent(cellMouseDownEvent);\n };\n // returns true if on iPad and this is second 'click' event in 200ms\n CellComp.prototype.isDoubleClickOnIPad = function () {\n if (!_.isIOSUserAgent() || _.isEventSupported('dblclick')) {\n return false;\n }\n var nowMillis = new Date().getTime();\n var res = nowMillis - this.lastIPadMouseClickEvent < 200;\n this.lastIPadMouseClickEvent = nowMillis;\n return res;\n };\n CellComp.prototype.onCellClicked = function (mouseEvent) {\n // iPad doesn't have double click - so we need to mimic it to enable editing for iPad.\n if (this.isDoubleClickOnIPad()) {\n this.onCellDoubleClicked(mouseEvent);\n mouseEvent.preventDefault(); // if we don't do this, then iPad zooms in\n return;\n }\n var cellClickedEvent = this.createEvent(mouseEvent, Events.EVENT_CELL_CLICKED);\n this.beans.eventService.dispatchEvent(cellClickedEvent);\n var colDef = this.getComponentHolder();\n if (colDef.onCellClicked) {\n // to make callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellClicked(cellClickedEvent); }, 0);\n }\n var editOnSingleClick = (this.beans.gridOptionsWrapper.isSingleClickEdit() || colDef.singleClickEdit)\n && !this.beans.gridOptionsWrapper.isSuppressClickEdit();\n if (editOnSingleClick) {\n this.startRowOrCellEdit();\n }\n };\n CellComp.prototype.createGridCellVo = function () {\n this.cellPosition = {\n rowIndex: this.rowNode.rowIndex,\n rowPinned: this.rowNode.rowPinned,\n column: this.column\n };\n };\n CellComp.prototype.getCellPosition = function () {\n return this.cellPosition;\n };\n CellComp.prototype.getParentRow = function () {\n return this.eParentRow;\n };\n CellComp.prototype.setParentRow = function (eParentRow) {\n this.eParentRow = eParentRow;\n };\n CellComp.prototype.getColumn = function () {\n return this.column;\n };\n CellComp.prototype.getComponentHolder = function () {\n return this.column.getColDef();\n };\n CellComp.prototype.detach = function () {\n this.eParentRow.removeChild(this.getGui());\n };\n // if the row is also getting destroyed, then we don't need to remove from dom,\n // as the row will also get removed, so no need to take out the cells from the row\n // if the row is going (removing is an expensive operation, so only need to remove\n // the top part)\n CellComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.createCellRendererFunc) {\n this.beans.taskQueue.cancelTask(this.createCellRendererFunc);\n }\n this.stopEditing();\n if (this.cellRenderer && this.cellRenderer.destroy) {\n this.cellRenderer.destroy();\n this.cellRenderer = null;\n }\n if (this.selectionHandle) {\n this.selectionHandle.destroy();\n }\n };\n CellComp.prototype.onLeftChanged = function () {\n var left = this.modifyLeftForPrintLayout(this.getCellLeft());\n this.getGui().style.left = left + 'px';\n this.refreshAriaIndex();\n };\n CellComp.prototype.modifyLeftForPrintLayout = function (leftPosition) {\n if (!this.printLayout || this.column.getPinned() === Constants.PINNED_LEFT) {\n return leftPosition;\n }\n if (this.column.getPinned() === Constants.PINNED_RIGHT) {\n var leftWidth_1 = this.beans.columnController.getPinnedLeftContainerWidth();\n var bodyWidth = this.beans.columnController.getBodyContainerWidth();\n return leftWidth_1 + bodyWidth + leftPosition;\n }\n // is in body\n var leftWidth = this.beans.columnController.getPinnedLeftContainerWidth();\n return leftWidth + leftPosition;\n };\n CellComp.prototype.onWidthChanged = function () {\n var width = this.getCellWidth();\n this.getGui().style.width = width + 'px';\n };\n CellComp.prototype.getRangeBorders = function () {\n var _this = this;\n var isRtl = this.beans.gridOptionsWrapper.isEnableRtl();\n var top = false;\n var right = false;\n var bottom = false;\n var left = false;\n var thisCol = this.cellPosition.column;\n var rangeController = this.beans.rangeController;\n var leftCol;\n var rightCol;\n if (isRtl) {\n leftCol = this.beans.columnController.getDisplayedColAfter(thisCol);\n rightCol = this.beans.columnController.getDisplayedColBefore(thisCol);\n }\n else {\n leftCol = this.beans.columnController.getDisplayedColBefore(thisCol);\n rightCol = this.beans.columnController.getDisplayedColAfter(thisCol);\n }\n var ranges = rangeController.getCellRanges().filter(function (range) { return rangeController.isCellInSpecificRange(_this.cellPosition, range); });\n // this means we are the first column in the grid\n if (!leftCol) {\n left = true;\n }\n // this means we are the last column in the grid\n if (!rightCol) {\n right = true;\n }\n for (var i = 0; i < ranges.length; i++) {\n if (top && right && bottom && left) {\n break;\n }\n var range = ranges[i];\n var startRow = rangeController.getRangeStartRow(range);\n var endRow = rangeController.getRangeEndRow(range);\n if (!top && this.beans.rowPositionUtils.sameRow(startRow, this.cellPosition)) {\n top = true;\n }\n if (!bottom && this.beans.rowPositionUtils.sameRow(endRow, this.cellPosition)) {\n bottom = true;\n }\n if (!left && range.columns.indexOf(leftCol) < 0) {\n left = true;\n }\n if (!right && range.columns.indexOf(rightCol) < 0) {\n right = true;\n }\n }\n return { top: top, right: right, bottom: bottom, left: left };\n };\n CellComp.prototype.getInitialRangeClasses = function () {\n var classes = [];\n if (!this.rangeSelectionEnabled || !this.rangeCount) {\n return classes;\n }\n classes.push('ag-cell-range-selected');\n if (this.hasChartRange) {\n classes.push('ag-cell-range-chart');\n }\n var count = Math.min(this.rangeCount, 4);\n classes.push(\"ag-cell-range-selected-\" + count);\n if (this.isSingleCell()) {\n classes.push('ag-cell-range-single-cell');\n }\n if (this.rangeCount > 0) {\n var borders = this.getRangeBorders();\n if (borders.top) {\n classes.push('ag-cell-range-top');\n }\n if (borders.right) {\n classes.push('ag-cell-range-right');\n }\n if (borders.bottom) {\n classes.push('ag-cell-range-bottom');\n }\n if (borders.left) {\n classes.push('ag-cell-range-left');\n }\n }\n if (!!this.selectionHandle) {\n classes.push('ag-cell-range-handle');\n }\n return classes;\n };\n CellComp.prototype.onRowIndexChanged = function () {\n // when index changes, this influences items that need the index, so we update the\n // grid cell so they are working off the new index.\n this.createGridCellVo();\n // when the index of the row changes, ie means the cell may have lost or gained focus\n this.onCellFocused();\n // check range selection\n this.onRangeSelectionChanged();\n };\n CellComp.prototype.onRangeSelectionChanged = function () {\n var rangeController = this.beans.rangeController;\n if (!rangeController) {\n return;\n }\n var _a = this, cellPosition = _a.cellPosition, rangeCount = _a.rangeCount;\n var newRangeCount = rangeController.getCellRangeCount(cellPosition);\n var element = this.getGui();\n if (rangeCount !== newRangeCount) {\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected', newRangeCount !== 0);\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected-1', newRangeCount === 1);\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected-2', newRangeCount === 2);\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected-3', newRangeCount === 3);\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected-4', newRangeCount >= 4);\n this.rangeCount = newRangeCount;\n }\n var hasChartRange = this.getHasChartRange();\n if (hasChartRange !== this.hasChartRange) {\n this.hasChartRange = hasChartRange;\n _.addOrRemoveCssClass(element, 'ag-cell-range-chart', this.hasChartRange);\n }\n this.updateRangeBorders();\n _.addOrRemoveCssClass(element, 'ag-cell-range-single-cell', this.isSingleCell());\n this.refreshHandle();\n };\n CellComp.prototype.getHasChartRange = function () {\n var rangeController = this.beans.rangeController;\n if (!this.rangeCount || !rangeController) {\n return false;\n }\n var cellRanges = rangeController.getCellRanges();\n return cellRanges.length > 0 && cellRanges.every(function (range) { return _.includes([CellRangeType.DIMENSION, CellRangeType.VALUE], range.type); });\n };\n CellComp.prototype.shouldHaveSelectionHandle = function () {\n var _a = this.beans, gridOptionsWrapper = _a.gridOptionsWrapper, rangeController = _a.rangeController;\n var cellRanges = rangeController.getCellRanges();\n var rangesLen = cellRanges.length;\n if (this.rangeCount < 1 || rangesLen < 1) {\n return false;\n }\n var cellRange = _.last(cellRanges);\n var cellPosition = this.getCellPosition();\n var fillHandleIsAvailable = rangesLen === 1 &&\n (gridOptionsWrapper.isEnableFillHandle() || gridOptionsWrapper.isEnableRangeHandle()) &&\n !this.editingCell;\n if (this.hasChartRange) {\n var hasCategoryRange = cellRanges[0].type === CellRangeType.DIMENSION;\n var isCategoryCell = hasCategoryRange && rangeController.isCellInSpecificRange(cellPosition, cellRanges[0]);\n _.addOrRemoveCssClass(this.getGui(), 'ag-cell-range-chart-category', isCategoryCell);\n fillHandleIsAvailable = cellRange.type === CellRangeType.VALUE;\n }\n return fillHandleIsAvailable &&\n cellRange.endRow != null &&\n rangeController.isContiguousRange(cellRange) &&\n rangeController.isLastCellOfRange(cellRange, cellPosition);\n };\n CellComp.prototype.addSelectionHandle = function () {\n var _a = this.beans, gridOptionsWrapper = _a.gridOptionsWrapper, context = _a.context, rangeController = _a.rangeController;\n var cellRangeType = _.last(rangeController.getCellRanges()).type;\n var type = (gridOptionsWrapper.isEnableFillHandle() && _.missing(cellRangeType)) ? 'fill' : 'range';\n if (this.selectionHandle && this.selectionHandle.getType() !== type) {\n this.selectionHandle.destroy();\n this.selectionHandle = undefined;\n }\n if (!this.selectionHandle) {\n this.selectionHandle = context.createComponentFromElement(document.createElement(\"ag-\" + type + \"-handle\"));\n }\n this.selectionHandle.refresh(this);\n };\n CellComp.prototype.updateRangeBordersIfRangeCount = function () {\n // we only need to update range borders if we are in a range\n if (this.rangeCount > 0) {\n this.updateRangeBorders();\n this.refreshHandle();\n }\n };\n CellComp.prototype.refreshHandle = function () {\n if (!this.beans.rangeController) {\n return;\n }\n var shouldHaveSelectionHandle = this.shouldHaveSelectionHandle();\n if (this.selectionHandle && !shouldHaveSelectionHandle) {\n this.selectionHandle.destroy();\n this.selectionHandle = null;\n }\n if (shouldHaveSelectionHandle) {\n this.addSelectionHandle();\n }\n _.addOrRemoveCssClass(this.getGui(), 'ag-cell-range-handle', !!this.selectionHandle);\n };\n CellComp.prototype.updateRangeBorders = function () {\n var rangeBorders = this.getRangeBorders();\n var isSingleCell = this.isSingleCell();\n var isTop = !isSingleCell && rangeBorders.top;\n var isRight = !isSingleCell && rangeBorders.right;\n var isBottom = !isSingleCell && rangeBorders.bottom;\n var isLeft = !isSingleCell && rangeBorders.left;\n var element = this.getGui();\n _.addOrRemoveCssClass(element, 'ag-cell-range-top', isTop);\n _.addOrRemoveCssClass(element, 'ag-cell-range-right', isRight);\n _.addOrRemoveCssClass(element, 'ag-cell-range-bottom', isBottom);\n _.addOrRemoveCssClass(element, 'ag-cell-range-left', isLeft);\n };\n CellComp.prototype.onFirstRightPinnedChanged = function () {\n var firstRightPinned = this.column.isFirstRightPinned();\n if (this.firstRightPinned !== firstRightPinned) {\n this.firstRightPinned = firstRightPinned;\n _.addOrRemoveCssClass(this.getGui(), 'ag-cell-first-right-pinned', firstRightPinned);\n }\n };\n CellComp.prototype.onLastLeftPinnedChanged = function () {\n var lastLeftPinned = this.column.isLastLeftPinned();\n if (this.lastLeftPinned !== lastLeftPinned) {\n this.lastLeftPinned = lastLeftPinned;\n _.addOrRemoveCssClass(this.getGui(), 'ag-cell-last-left-pinned', lastLeftPinned);\n }\n };\n CellComp.prototype.populateTemplate = function () {\n if (this.usingWrapper) {\n this.eParentOfValue = this.getRefElement('eCellValue');\n this.eCellWrapper = this.getRefElement('eCellWrapper');\n this.eCellValue = this.getRefElement('eCellValue');\n if (this.includeRowDraggingComponent) {\n this.addRowDragging();\n }\n if (this.includeDndSourceComponent) {\n this.addDndSource();\n }\n if (this.includeSelectionComponent) {\n this.addSelectionCheckbox();\n }\n }\n else {\n this.eParentOfValue = this.getGui();\n }\n };\n CellComp.prototype.getFrameworkOverrides = function () {\n return this.beans.frameworkOverrides;\n };\n CellComp.prototype.addRowDragging = function () {\n var pagination = this.beans.gridOptionsWrapper.isPagination();\n var rowDragManaged = this.beans.gridOptionsWrapper.isRowDragManaged();\n var clientSideRowModelActive = this.beans.gridOptionsWrapper.isRowModelDefault();\n if (rowDragManaged) {\n // row dragging only available in default row model\n if (!clientSideRowModelActive) {\n _.doOnce(function () { return console.warn('ag-Grid: managed row dragging is only allowed in the Client Side Row Model'); }, 'CellComp.addRowDragging');\n return;\n }\n if (pagination) {\n _.doOnce(function () { return console.warn('ag-Grid: managed row dragging is not possible when doing pagination'); }, 'CellComp.addRowDragging');\n return;\n }\n }\n var rowDraggingComp = new RowDragComp(this.rowNode, this.column, this.getValueToUse(), this.beans);\n this.addFeature(rowDraggingComp, this.beans.context);\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(rowDraggingComp.getGui(), this.eParentOfValue);\n };\n CellComp.prototype.addDndSource = function () {\n var dndSourceComp = new DndSourceComp(this.rowNode, this.column, this.getValueToUse(), this.beans, this.getGui());\n this.addFeature(dndSourceComp, this.beans.context);\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(dndSourceComp.getGui(), this.eParentOfValue);\n };\n CellComp.prototype.addSelectionCheckbox = function () {\n var cbSelectionComponent = new CheckboxSelectionComponent();\n this.beans.context.wireBean(cbSelectionComponent);\n var visibleFunc = this.getComponentHolder().checkboxSelection;\n visibleFunc = typeof visibleFunc === 'function' ? visibleFunc : null;\n cbSelectionComponent.init({ rowNode: this.rowNode, column: this.column, visibleFunc: visibleFunc });\n this.addDestroyFunc(function () { return cbSelectionComponent.destroy(); });\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(cbSelectionComponent.getGui(), this.eParentOfValue);\n };\n CellComp.prototype.addDomData = function () {\n var _this = this;\n var element = this.getGui();\n this.beans.gridOptionsWrapper.setDomData(element, CellComp.DOM_DATA_KEY_CELL_COMP, this);\n this.addDestroyFunc(function () { return _this.beans.gridOptionsWrapper.setDomData(element, CellComp.DOM_DATA_KEY_CELL_COMP, null); });\n };\n CellComp.prototype.isSingleCell = function () {\n var rangeController = this.beans.rangeController;\n return this.rangeCount === 1 && rangeController && !rangeController.isMoreThanOneCell();\n };\n CellComp.prototype.onCellFocused = function (event) {\n var cellFocused = this.beans.focusedCellController.isCellFocused(this.cellPosition);\n // see if we need to change the classes on this cell\n if (cellFocused !== this.cellFocused) {\n // if we are not doing cell selection, then the focus class does not change\n var doingFocusCss = !this.beans.gridOptionsWrapper.isSuppressCellSelection();\n if (doingFocusCss) {\n _.addOrRemoveCssClass(this.getGui(), 'ag-cell-focus', cellFocused);\n }\n this.cellFocused = cellFocused;\n }\n // see if we need to force browser focus - this can happen if focus is programmatically set\n if (cellFocused && event && event.forceBrowserFocus) {\n this.getGui().focus();\n // Fix for AG-3465 \"IE11 - After editing cell's content, selection doesn't go one cell below on enter\"\n // IE can fail to focus the cell after the first call to focus(), and needs a second call\n if (!document.activeElement || document.activeElement === document.body) {\n this.getGui().focus();\n }\n }\n // if another cell was focused, and we are editing, then stop editing\n var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n if (!cellFocused && !fullRowEdit && this.editingCell) {\n this.stopRowOrCellEdit();\n }\n };\n // pass in 'true' to cancel the editing.\n CellComp.prototype.stopRowOrCellEdit = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n this.rowComp.stopRowEditing(cancel);\n }\n else {\n this.stopEditing(cancel);\n }\n };\n CellComp.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (!this.editingCell) {\n return;\n }\n // if no cell editor, this means due to async, that the cell editor never got initialised,\n // so we just carry on regardless as if the editing was never started.\n if (!this.cellEditor) {\n this.editingCell = false;\n return;\n }\n var newValueExists = false;\n var newValue;\n if (!cancel) {\n // also have another option here to cancel after editing, so for example user could have a popup editor and\n // it is closed by user clicking outside the editor. then the editor will close automatically (with false\n // passed above) and we need to see if the editor wants to accept the new value.\n var userWantsToCancel = this.cellEditor.isCancelAfterEnd && this.cellEditor.isCancelAfterEnd();\n if (!userWantsToCancel) {\n newValue = this.cellEditor.getValue();\n newValueExists = true;\n }\n }\n // it is important we set this after setValue() above, as otherwise the cell will flash\n // when editing stops. the 'refresh' method checks editing, and doesn't refresh editing cells.\n // thus it will skip the refresh on this cell until the end of this method where we call\n // refresh directly and we suppress the flash.\n this.editingCell = false;\n if (this.cellEditor.destroy) {\n this.cellEditor.destroy();\n }\n // important to clear this out - as parts of the code will check for\n // this to see if an async cellEditor has yet to be created\n this.cellEditor = null;\n if (this.cellEditorInPopup && this.hideEditorPopup) {\n this.hideEditorPopup();\n this.hideEditorPopup = null;\n }\n else {\n _.clearElement(this.getGui());\n // put the cell back the way it was before editing\n if (this.usingWrapper) {\n // if wrapper, then put the wrapper back\n this.getGui().appendChild(this.eCellWrapper);\n }\n else {\n // if cellRenderer, then put the gui back in. if the renderer has\n // a refresh, it will be called. however if it doesn't, then later\n // the renderer will be destroyed and a new one will be created.\n if (this.cellRenderer) {\n // we know it's a dom element (not a string) because we converted\n // it after the gui was attached if it was a string.\n var eCell = this.cellRendererGui;\n // can be null if cell was previously null / contained empty string,\n // this will result in new value not being rendered.\n if (eCell) {\n this.getGui().appendChild(eCell);\n }\n }\n }\n }\n this.setInlineEditingClass();\n if (newValueExists) {\n // we suppressRefreshCell because the call to rowNode.setDataValue() results in change detection\n // getting triggered, which results in all cells getting refreshed. we do not want this refresh\n // to happen on this call as we want to call it explicitly below. otherwise refresh gets called twice.\n // if we only did this refresh (and not the one below) then the cell would flash and not be forced.\n this.suppressRefreshCell = true;\n this.rowNode.setDataValue(this.column, newValue);\n this.suppressRefreshCell = false;\n }\n // we suppress the flash, as it is not correct to flash the cell the user has finished editing,\n // the user doesn't need to flash as they were the one who did the edit, the flash is pointless\n // (as the flash is meant to draw the user to a change that they didn't manually do themselves).\n this.refreshCell({ forceRefresh: true, suppressFlash: true });\n var event = this.createEvent(null, Events.EVENT_CELL_EDITING_STOPPED);\n this.beans.eventService.dispatchEvent(event);\n };\n CellComp.DOM_DATA_KEY_CELL_COMP = 'cellComp';\n CellComp.CELL_RENDERER_TYPE_NORMAL = 'cellRenderer';\n CellComp.CELL_RENDERER_TYPE_PINNED = 'pinnedRowCellRenderer';\n return CellComp;\n}(Component));\nexport { CellComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\n/**\n * These keys are used for validating properties supplied on a gridOptions object, and for code generation.\n * If you change the properties on the gridOptions interface, you *must* update this file as well to be consistent.\n */\nvar PropertyKeys = /** @class */ (function () {\n function PropertyKeys() {\n }\n PropertyKeys.STRING_PROPERTIES = [\n 'sortingOrder', 'rowClass', 'rowSelection', 'overlayLoadingTemplate',\n 'overlayNoRowsTemplate', 'quickFilterText', 'rowModelType',\n 'editType', 'domLayout', 'clipboardDeliminator', 'rowGroupPanelShow',\n 'multiSortKey', 'pivotColumnGroupTotals', 'pivotRowTotals', 'pivotPanelShow'\n ];\n PropertyKeys.OBJECT_PROPERTIES = [\n 'components', 'frameworkComponents', 'rowStyle', 'context', 'autoGroupColumnDef', 'groupColumnDef', 'localeText',\n 'icons', 'datasource', 'serverSideDatasource', 'viewportDatasource', 'groupRowRendererParams', 'aggFuncs',\n 'fullWidthCellRendererParams', 'defaultColGroupDef', 'defaultColDef', 'defaultExportParams', 'columnTypes',\n 'rowClassRules', 'detailGridOptions', 'detailCellRendererParams', 'loadingCellRendererParams', 'loadingOverlayComponentParams',\n 'noRowsOverlayComponentParams', 'popupParent', 'colResizeDefault', 'reduxStore', 'statusBar', 'sideBar'\n ];\n PropertyKeys.ARRAY_PROPERTIES = [\n 'slaveGrids', 'alignedGrids', 'rowData', 'columnDefs', 'excelStyles', 'pinnedTopRowData', 'pinnedBottomRowData'\n ];\n PropertyKeys.NUMBER_PROPERTIES = [\n 'rowHeight', 'detailRowHeight', 'rowBuffer', 'colWidth', 'headerHeight', 'groupHeaderHeight',\n 'floatingFiltersHeight', 'pivotHeaderHeight', 'pivotGroupHeaderHeight', 'groupDefaultExpanded',\n 'minColWidth', 'maxColWidth', 'viewportRowModelPageSize', 'viewportRowModelBufferSize',\n 'autoSizePadding', 'maxBlocksInCache', 'maxConcurrentDatasourceRequests',\n 'cacheOverflowSize', 'paginationPageSize', 'cacheBlockSize', 'infiniteInitialRowCount',\n 'scrollbarWidth', 'paginationStartPage', 'infiniteBlockSize', 'batchUpdateWaitMillis',\n 'blockLoadDebounceMillis', 'keepDetailRowsCount', 'undoRedoCellEditingLimit'\n ];\n PropertyKeys.BOOLEAN_PROPERTIES = [\n 'toolPanelSuppressRowGroups', 'toolPanelSuppressValues', 'toolPanelSuppressPivots', 'toolPanelSuppressPivotMode',\n 'toolPanelSuppressSideButtons', 'toolPanelSuppressColumnFilter', 'toolPanelSuppressColumnSelectAll',\n 'toolPanelSuppressColumnExpandAll', 'suppressMakeColumnVisibleAfterUnGroup', 'suppressRowClickSelection',\n 'suppressCellSelection', 'suppressHorizontalScroll', 'alwaysShowVerticalScroll', 'debug', 'enableBrowserTooltips', 'enableColResize',\n 'enableCellExpressions', 'enableSorting', 'enableServerSideSorting', 'enableFilter', 'enableServerSideFilter',\n 'angularCompileRows', 'angularCompileFilters', 'angularCompileHeaders', 'groupSuppressAutoColumn', 'groupSelectsChildren',\n 'groupIncludeFooter', 'groupIncludeTotalFooter', 'groupUseEntireRow', 'groupSuppressRow', 'groupSuppressBlankHeader',\n 'forPrint', 'suppressMenuHide', 'rowDeselection', 'unSortIcon', 'suppressMultiSort', 'singleClickEdit',\n 'suppressLoadingOverlay', 'suppressNoRowsOverlay', 'suppressAutoSize', 'skipHeaderOnAutoSize', 'suppressParentsInRowNodes', 'showToolPanel',\n 'suppressColumnMoveAnimation', 'suppressMovableColumns', 'suppressFieldDotNotation', 'enableRangeSelection',\n 'enableRangeHandle', 'enableFillHandle', 'suppressClearOnFillReduction', 'deltaSort', 'suppressTouch', 'suppressAsyncEvents',\n 'allowContextMenuWithControlKey', 'suppressContextMenu', 'suppressMenuFilterPanel', 'suppressMenuMainPanel', 'suppressMenuColumnPanel',\n 'rememberGroupStateWhenNewData', 'enableCellChangeFlash', 'suppressDragLeaveHidesColumns', 'suppressMiddleClickScrolls',\n 'suppressPreventDefaultOnMouseWheel', 'suppressUseColIdForGroups', 'suppressCopyRowsToClipboard', 'copyHeadersToClipboard', 'pivotMode',\n 'suppressAggFuncInHeader', 'suppressColumnVirtualisation', 'suppressAggAtRootLevel', 'suppressFocusAfterRefresh', 'functionsPassive',\n 'functionsReadOnly', 'animateRows', 'groupSelectsFiltered', 'groupRemoveSingleChildren', 'groupRemoveLowestSingleChildren', 'enableRtl',\n 'suppressClickEdit', 'rowDragManaged', 'suppressRowDrag', 'enableGroupEdit', 'embedFullWidthRows', 'deprecatedEmbedFullWidthRows',\n 'suppressTabbing', 'suppressPaginationPanel', 'floatingFilter', 'groupHideOpenParents', 'groupMultiAutoColumn', 'pagination',\n 'stopEditingWhenGridLosesFocus', 'paginationAutoPageSize', 'suppressScrollOnNewData', 'purgeClosedRowNodes', 'cacheQuickFilter',\n 'deltaRowDataMode', 'ensureDomOrder', 'accentedSort', 'pivotTotals', 'suppressChangeDetection', 'valueCache', 'valueCacheNeverExpires',\n 'aggregateOnlyChangedColumns', 'suppressAnimationFrame', 'suppressExcelExport', 'suppressCsvExport', 'treeData', 'masterDetail',\n 'suppressMultiRangeSelection', 'enterMovesDownAfterEdit', 'enterMovesDown', 'suppressPropertyNamesCheck', 'rowMultiSelectWithClick',\n 'contractColumnSelection', 'suppressEnterpriseResetOnNewColumns', 'enableOldSetFilterModel', 'suppressRowHoverHighlight',\n 'gridAutoHeight', 'suppressRowTransform', 'suppressClipboardPaste', 'serverSideSortingAlwaysResets', 'reactNext',\n 'suppressSetColumnStateEvents', 'enableCharts', 'deltaColumnMode', 'suppressMaintainUnsortedOrder', 'enableCellTextSelection',\n 'suppressBrowserResizeObserver', 'suppressMaxRenderedRowRestriction', 'excludeChildrenWhenTreeDataFiltering',\n 'keepDetailRows', 'paginateChildRows', 'preventDefaultOnContextMenu', 'undoRedoCellEditing', 'allowDragFromColumnsToolPanel'\n ];\n /** You do not need to include event callbacks in this list, as they are generated automatically. */\n PropertyKeys.FUNCTION_PROPERTIES = [\n 'localeTextFunc', 'groupRowInnerRenderer', 'groupRowInnerRendererFramework',\n 'dateComponent', 'dateComponentFramework', 'groupRowRenderer', 'groupRowRendererFramework', 'isExternalFilterPresent',\n 'getRowHeight', 'doesExternalFilterPass', 'getRowClass', 'getRowStyle', 'getRowClassRules',\n 'traverseNode', 'getContextMenuItems', 'getMainMenuItems', 'processRowPostCreate', 'processCellForClipboard',\n 'getNodeChildDetails', 'groupRowAggNodes', 'getRowNodeId', 'isFullWidthCell', 'fullWidthCellRenderer',\n 'fullWidthCellRendererFramework', 'doesDataFlower', 'processSecondaryColDef', 'processSecondaryColGroupDef',\n 'getBusinessKeyForNode', 'sendToClipboard', 'navigateToNextCell', 'tabToNextCell', 'getDetailRowData',\n 'processCellFromClipboard', 'getDocument', 'postProcessPopup', 'getChildCount', 'getDataPath', 'loadingCellRenderer',\n 'loadingCellRendererFramework', 'loadingOverlayComponent', 'loadingOverlayComponentFramework', 'noRowsOverlayComponent',\n 'noRowsOverlayComponentFramework', 'detailCellRenderer', 'detailCellRendererFramework',\n 'defaultGroupSortComparator', 'isRowMaster', 'isRowSelectable', 'postSort', 'processHeaderForClipboard',\n 'paginationNumberFormatter', 'processDataFromClipboard', 'getServerSideGroupKey', 'isServerSideGroup',\n 'suppressKeyboardEvent', 'createChartContainer', 'processChartOptions', 'getChartToolbarItems', 'fillOperation'\n ];\n PropertyKeys.ALL_PROPERTIES = __spreadArrays(PropertyKeys.ARRAY_PROPERTIES, PropertyKeys.OBJECT_PROPERTIES, PropertyKeys.STRING_PROPERTIES, PropertyKeys.NUMBER_PROPERTIES, PropertyKeys.FUNCTION_PROPERTIES, PropertyKeys.BOOLEAN_PROPERTIES);\n /**\n * Used when performing property checks. This avoids noise caused when using frameworks, which can add their own\n * framework-specific properties to colDefs, gridOptions etc.\n */\n PropertyKeys.FRAMEWORK_PROPERTIES = [\n '__ob__', '__metadata__', 'mappedColumnProperties', 'hasChildColumns', 'toColDef', 'createColDefFromGridColumn'\n ];\n return PropertyKeys;\n}());\nexport { PropertyKeys };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from \"./componentAnnotations\";\nimport { AgAbstractField } from \"./agAbstractField\";\nimport { _ } from \"../utils\";\nvar AgAbstractInputField = /** @class */ (function (_super) {\n __extends(AgAbstractInputField, _super);\n function AgAbstractInputField() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.config = {};\n _this.TEMPLATE = \"
\\n \\n
\\n <%displayField% ref=\\\"eInput\\\">\\n
\\n
\";\n return _this;\n }\n AgAbstractInputField.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n this.setInputType();\n _.addCssClass(this.getGui(), this.className);\n var _a = this.config, width = _a.width, value = _a.value;\n if (width != null) {\n this.setWidth(width);\n }\n if (value != null) {\n this.setValue(value);\n }\n this.addInputListeners();\n };\n AgAbstractInputField.prototype.addInputListeners = function () {\n var _this = this;\n this.addDestroyableEventListener(this.eInput, 'input', function (e) {\n var value = e.target.value;\n _this.setValue(value);\n });\n };\n AgAbstractInputField.prototype.setInputType = function () {\n if (this.inputType) {\n this.eInput.setAttribute('type', this.inputType);\n }\n };\n AgAbstractInputField.prototype.getInputElement = function () {\n return this.eInput;\n };\n AgAbstractInputField.prototype.setInputWidth = function (width) {\n _.setElementWidth(this.eWrapper, width);\n return this;\n };\n AgAbstractInputField.prototype.setInputName = function (name) {\n this.getInputElement().setAttribute('name', name);\n return this;\n };\n __decorate([\n RefSelector('eLabel')\n ], AgAbstractInputField.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eWrapper')\n ], AgAbstractInputField.prototype, \"eWrapper\", void 0);\n __decorate([\n RefSelector('eInput')\n ], AgAbstractInputField.prototype, \"eInput\", void 0);\n return AgAbstractInputField;\n}(AgAbstractField));\nexport { AgAbstractInputField };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Column } from \"../../entities/column\";\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Constants } from \"../../constants\";\nimport { _ } from \"../../utils\";\nvar SetLeftFeature = /** @class */ (function (_super) {\n __extends(SetLeftFeature, _super);\n function SetLeftFeature(columnOrGroup, eCell, beans, colsSpanning) {\n var _this = _super.call(this) || this;\n _this.columnOrGroup = columnOrGroup;\n _this.eCell = eCell;\n _this.ariaEl = _this.eCell.querySelector('[role=columnheader]') || _this.eCell;\n _this.colsSpanning = colsSpanning;\n _this.beans = beans;\n _this.printLayout = beans.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n return _this;\n }\n SetLeftFeature.prototype.setColsSpanning = function (colsSpanning) {\n this.colsSpanning = colsSpanning;\n this.onLeftChanged();\n };\n SetLeftFeature.prototype.getColumnOrGroup = function () {\n if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n return _.last(this.colsSpanning);\n }\n return this.columnOrGroup;\n };\n SetLeftFeature.prototype.init = function () {\n this.addDestroyableEventListener(this.columnOrGroup, Column.EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));\n this.setLeftFirstTime();\n };\n SetLeftFeature.prototype.setLeftFirstTime = function () {\n var suppressMoveAnimation = this.beans.gridOptionsWrapper.isSuppressColumnMoveAnimation();\n var oldLeftExists = _.exists(this.columnOrGroup.getOldLeft());\n var animateColumnMove = this.beans.columnAnimationService.isActive() && oldLeftExists && !suppressMoveAnimation;\n if (animateColumnMove) {\n this.animateInLeft();\n }\n else {\n this.onLeftChanged();\n }\n };\n SetLeftFeature.prototype.animateInLeft = function () {\n var _this = this;\n var left = this.getColumnOrGroup().getLeft();\n var oldLeft = this.getColumnOrGroup().getOldLeft();\n this.setLeft(oldLeft);\n // we must keep track of the left we want to set to, as this would otherwise lead to a race\n // condition, if the user changed the left value many times in one VM turn, then we want to make\n // make sure the actualLeft we set in the timeout below (in the next VM turn) is the correct left\n // position. eg if user changes column position twice, then setLeft() below executes twice in next\n // VM turn, but only one (the correct one) should get applied.\n this.actualLeft = left;\n this.beans.columnAnimationService.executeNextVMTurn(function () {\n // test this left value is the latest one to be applied, and if not, do nothing\n if (_this.actualLeft === left) {\n _this.setLeft(left);\n }\n });\n };\n SetLeftFeature.prototype.onLeftChanged = function () {\n var colOrGroup = this.getColumnOrGroup();\n var left = colOrGroup.getLeft();\n this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n this.setLeft(this.actualLeft);\n };\n SetLeftFeature.prototype.modifyLeftForPrintLayout = function (colOrGroup, leftPosition) {\n if (!this.printLayout) {\n return leftPosition;\n }\n if (colOrGroup.getPinned() === Constants.PINNED_LEFT) {\n return leftPosition;\n }\n if (colOrGroup.getPinned() === Constants.PINNED_RIGHT) {\n var leftWidth_1 = this.beans.columnController.getPinnedLeftContainerWidth();\n var bodyWidth = this.beans.columnController.getBodyContainerWidth();\n return leftWidth_1 + bodyWidth + leftPosition;\n }\n // is in body\n var leftWidth = this.beans.columnController.getPinnedLeftContainerWidth();\n return leftWidth + leftPosition;\n };\n SetLeftFeature.prototype.setLeft = function (value) {\n // if the value is null, then that means the column is no longer\n // displayed. there is logic in the rendering to fade these columns\n // out, so we don't try and change their left positions.\n if (_.exists(value)) {\n this.eCell.style.left = value + \"px\";\n }\n if (this.columnOrGroup instanceof Column) {\n var colIndex = this.beans.columnController.getAllDisplayedColumns().indexOf(this.columnOrGroup);\n this.ariaEl.setAttribute('aria-colindex', (colIndex + 1).toString());\n }\n else {\n this.ariaEl.removeAttribute('aria-colindex');\n }\n };\n return SetLeftFeature;\n}(BeanStub));\nexport { SetLeftFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired } from '../context/context';\nimport { AgAbstractInputField } from './agAbstractInputField';\nimport { _ } from '../utils';\nvar AgCheckbox = /** @class */ (function (_super) {\n __extends(AgCheckbox, _super);\n function AgCheckbox() {\n var _this = _super.call(this) || this;\n _this.className = 'ag-checkbox';\n _this.nativeInputClassName = 'ag-native-checkbox';\n _this.displayTag = 'input';\n _this.inputType = 'checkbox';\n _this.labelAlignment = 'right';\n _this.iconMap = {\n selected: 'checkboxChecked',\n unselected: 'checkboxUnchecked',\n indeterminate: 'checkboxIndeterminate'\n };\n _this.selected = false;\n _this.readOnly = false;\n _this.passive = false;\n _this.setTemplate(_this.TEMPLATE.replace(/%displayField%/g, _this.displayTag));\n return _this;\n }\n AgCheckbox.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n if (!this.gridOptionsWrapper.useNativeCheckboxes()) {\n _.addCssClass(this.eInput, 'ag-hidden');\n this.addIconsPlaceholder();\n this.updateIcons();\n }\n else {\n _.addCssClass(this.eInput, this.nativeInputClassName);\n }\n };\n AgCheckbox.prototype.addInputListeners = function () {\n var _this = this;\n if (this.gridOptionsWrapper.useNativeCheckboxes()) {\n this.addDestroyableEventListener(this.eInput, 'click', this.onCheckboxClick.bind(this));\n }\n else {\n this.addDestroyableEventListener(this.getGui(), 'click', function (e) { return _this.onClick(e); });\n this.addDestroyableEventListener(this.eInput, 'change', function (e) { return _this.setValue(e.target.checked, true); });\n }\n };\n AgCheckbox.prototype.getNextValue = function () {\n return this.selected === undefined ? true : !this.selected;\n };\n AgCheckbox.prototype.setPassive = function (passive) {\n this.passive = passive;\n };\n AgCheckbox.prototype.isReadOnly = function () {\n return this.readOnly;\n };\n AgCheckbox.prototype.setReadOnly = function (readOnly) {\n this.eInput.readOnly = readOnly;\n this.readOnly = readOnly;\n this.updateIcons();\n };\n AgCheckbox.prototype.toggle = function () {\n var nextValue = this.getNextValue();\n if (this.passive) {\n this.dispatchChange(nextValue);\n }\n else {\n this.setValue(nextValue);\n }\n };\n AgCheckbox.prototype.getValue = function () {\n return this.isSelected();\n };\n AgCheckbox.prototype.setValue = function (value, silent) {\n this.setSelected(value, silent);\n return this;\n };\n AgCheckbox.prototype.isSelected = function () {\n return this.selected;\n };\n AgCheckbox.prototype.setSelected = function (selected, silent) {\n if (this.selected === selected) {\n return;\n }\n this.selected = typeof selected === 'boolean' ? selected : undefined;\n this.eInput.checked = this.selected;\n this.eInput.indeterminate = this.selected === undefined;\n this.updateIcons();\n if (!silent) {\n this.dispatchChange(this.selected);\n }\n };\n AgCheckbox.prototype.getIconName = function () {\n var value = this.getValue();\n var prop = value === undefined ? 'indeterminate' : value ? 'selected' : 'unselected';\n var readOnlyStr = this.isReadOnly() ? 'ReadOnly' : '';\n return \"\" + this.iconMap[prop] + readOnlyStr;\n };\n AgCheckbox.prototype.updateIcons = function () {\n if (!this.gridOptionsWrapper.useNativeCheckboxes()) {\n _.clearElement(this.eIconEl);\n this.eIconEl.appendChild(_.createIconNoSpan(this.getIconName(), this.gridOptionsWrapper, null));\n }\n };\n AgCheckbox.prototype.dispatchChange = function (selected) {\n this.dispatchEvent({ type: AgCheckbox.EVENT_CHANGED, selected: selected });\n };\n AgCheckbox.prototype.addIconsPlaceholder = function () {\n var iconDiv = document.createElement('div');\n this.eWrapper.appendChild(iconDiv);\n this.eIconEl = iconDiv;\n };\n AgCheckbox.prototype.onClick = function (event) {\n // if we don't set the path, then won't work in Edge, as once the is removed from the dom,\n // it's not possible to calculate the path by following the parent's chain. in other browser (eg\n // chrome) there is event.path for this purpose, but missing in Edge.\n _.addAgGridEventPath(event);\n if (!this.readOnly) {\n this.toggle();\n }\n };\n AgCheckbox.prototype.onCheckboxClick = function (e) {\n this.selected = e.target.checked;\n this.dispatchChange(this.selected);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], AgCheckbox.prototype, \"gridOptionsWrapper\", void 0);\n return AgCheckbox;\n}(AgAbstractInputField));\nexport { AgCheckbox };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired } from \"../context/context\";\nimport { AgPanel } from \"./agPanel\";\nimport { Component } from \"./component\";\nimport { _ } from \"../utils\";\nvar AgDialog = /** @class */ (function (_super) {\n __extends(AgDialog, _super);\n function AgDialog(config) {\n var _this = _super.call(this, config) || this;\n _this.RESIZE_TEMPLATE = \"\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \";\n _this.MAXIMIZE_BTN_TEMPLATE = \"
\";\n _this.resizable = {};\n _this.isResizable = false;\n _this.movable = false;\n _this.isMoving = false;\n _this.isMaximizable = false;\n _this.isMaximized = false;\n _this.maximizeListeners = [];\n _this.resizeListenerDestroy = null;\n _this.isResizing = false;\n _this.lastPosition = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n return _this;\n }\n AgDialog.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var _a = this.config, movable = _a.movable, resizable = _a.resizable, maximizable = _a.maximizable;\n _.addCssClass(eGui, 'ag-dialog');\n this.moveElement = this.eTitleBar;\n _super.prototype.postConstruct.call(this);\n this.addDestroyableEventListener(eGui, 'focusin', function (e) {\n if (eGui.contains(e.relatedTarget)) {\n return;\n }\n _this.popupService.bringPopupToFront(eGui);\n });\n if (movable) {\n this.setMovable(movable);\n }\n if (maximizable) {\n this.setMaximizable(maximizable);\n }\n this.addResizers();\n if (resizable) {\n this.setResizable(resizable);\n }\n };\n AgDialog.prototype.renderComponent = function () {\n var eGui = this.getGui();\n var _a = this.config, alwaysOnTop = _a.alwaysOnTop, modal = _a.modal;\n this.close = this.popupService.addPopup(modal, eGui, true, this.destroy.bind(this), undefined, alwaysOnTop);\n eGui.focus();\n };\n AgDialog.prototype.addResizers = function () {\n var eGui = this.getGui();\n if (!eGui) {\n return;\n }\n var parser = new DOMParser();\n var resizers = parser.parseFromString(this.RESIZE_TEMPLATE, 'text/html').body;\n eGui.appendChild(resizers.firstChild);\n this.createMap();\n };\n AgDialog.prototype.createMap = function () {\n var eGui = this.getGui();\n this.resizerMap = {\n topLeft: { element: eGui.querySelector('[ref=eTopLeftResizer]') },\n top: { element: eGui.querySelector('[ref=eTopResizer]') },\n topRight: { element: eGui.querySelector('[ref=eTopRightResizer]') },\n right: { element: eGui.querySelector('[ref=eRightResizer]') },\n bottomRight: { element: eGui.querySelector('[ref=eBottomRightResizer]') },\n bottom: { element: eGui.querySelector('[ref=eBottomResizer]') },\n bottomLeft: { element: eGui.querySelector('[ref=eBottomLeftResizer]') },\n left: { element: eGui.querySelector('[ref=eLeftResizer]') }\n };\n };\n AgDialog.prototype.getResizerElement = function (side) {\n return this.resizerMap[side].element;\n };\n AgDialog.prototype.onResizeStart = function (e) {\n this.isResizing = true;\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n AgDialog.prototype.onResize = function (e, side) {\n if (!this.isResizing) {\n return;\n }\n var isLeft = !!side.match(/left/i);\n var isRight = !!side.match(/right/i);\n var isTop = !!side.match(/top/i);\n var isBottom = !!side.match(/bottom/i);\n var isHorizontal = isLeft || isRight;\n var isVertical = isTop || isBottom;\n var _a = this.calculateMouseMovement({ e: e, isLeft: isLeft, isTop: isTop }), movementX = _a.movementX, movementY = _a.movementY;\n var offsetLeft = 0;\n var offsetTop = 0;\n if (isHorizontal && movementX) {\n var direction = isLeft ? -1 : 1;\n var oldWidth = this.getWidth();\n var newWidth = oldWidth + (movementX * direction);\n var skipWidth = false;\n if (isLeft) {\n offsetLeft = oldWidth - newWidth;\n if (this.position.x + offsetLeft <= 0 || newWidth <= this.minWidth) {\n skipWidth = true;\n offsetLeft = 0;\n }\n }\n if (!skipWidth) {\n this.setWidth(newWidth);\n }\n }\n if (isVertical && movementY) {\n var direction = isTop ? -1 : 1;\n var oldHeight = this.getHeight();\n var newHeight = oldHeight + (movementY * direction);\n var skipHeight = false;\n if (isTop) {\n offsetTop = oldHeight - newHeight;\n if (this.position.y + offsetTop <= 0 || newHeight <= this.minHeight) {\n skipHeight = true;\n offsetTop = 0;\n }\n }\n if (!skipHeight) {\n this.setHeight(newHeight);\n }\n }\n this.updateDragStartPosition(e.clientX, e.clientY);\n if (offsetLeft || offsetTop) {\n this.offsetElement(this.position.x + offsetLeft, this.position.y + offsetTop);\n }\n };\n AgDialog.prototype.onResizeEnd = function () {\n this.isResizing = false;\n var params = {\n type: 'resize',\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n if (this.localEventService) {\n this.localEventService.dispatchEvent(params);\n }\n };\n AgDialog.prototype.onMoveStart = function (e) {\n this.isMoving = true;\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n AgDialog.prototype.onMove = function (e) {\n if (!this.isMoving) {\n return;\n }\n var _a = this.position, x = _a.x, y = _a.y;\n var _b = this.calculateMouseMovement({\n e: e,\n isTop: true,\n anywhereWithin: true,\n topBuffer: this.getHeight() - this.getBodyHeight()\n }), movementX = _b.movementX, movementY = _b.movementY;\n this.offsetElement(x + movementX, y + movementY);\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n AgDialog.prototype.onMoveEnd = function () {\n this.isMoving = false;\n };\n AgDialog.prototype.toggleMaximize = function () {\n if (this.isMaximized) {\n var _a = this.lastPosition, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n this.setWidth(width);\n this.setHeight(height);\n this.offsetElement(x, y);\n }\n else {\n this.lastPosition.width = this.getWidth();\n this.lastPosition.height = this.getHeight();\n this.lastPosition.x = this.position.x;\n this.lastPosition.y = this.position.y;\n this.offsetElement(0, 0);\n this.setHeight('100%');\n this.setWidth('100%');\n }\n this.isMaximized = !this.isMaximized;\n this.refreshMaximizeIcon();\n };\n AgDialog.prototype.refreshMaximizeIcon = function () {\n _.addOrRemoveCssClass(this.maximizeIcon, 'ag-hidden', this.isMaximized);\n _.addOrRemoveCssClass(this.minimizeIcon, 'ag-hidden', !this.isMaximized);\n };\n AgDialog.prototype.clearMaximizebleListeners = function () {\n if (this.maximizeListeners.length) {\n this.maximizeListeners.forEach(function (destroyListener) { return destroyListener(); });\n this.maximizeListeners.length = 0;\n }\n if (this.resizeListenerDestroy) {\n this.resizeListenerDestroy();\n this.resizeListenerDestroy = null;\n }\n };\n AgDialog.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.setResizable(false);\n this.setMovable(false);\n if (this.maximizeButtonComp) {\n this.maximizeButtonComp.destroy();\n this.maximizeButtonComp = undefined;\n }\n this.clearMaximizebleListeners();\n };\n AgDialog.prototype.setResizable = function (resizable) {\n var _this = this;\n var isResizable = false;\n if (typeof resizable === 'boolean') {\n resizable = {\n topLeft: resizable,\n top: resizable,\n topRight: resizable,\n right: resizable,\n bottomRight: resizable,\n bottom: resizable,\n bottomLeft: resizable,\n left: resizable\n };\n }\n Object.keys(resizable).forEach(function (side) {\n var r = resizable;\n var s = side;\n var val = !!r[s];\n var el = _this.getResizerElement(s);\n var params = _this.resizerMap[s].dragSource || {\n eElement: el,\n onDragStart: _this.onResizeStart.bind(_this),\n onDragging: function (e) { return _this.onResize(e, s); },\n onDragStop: _this.onResizeEnd.bind(_this),\n };\n if (!!_this.resizable[s] !== val || (!_this.isAlive() && !val)) {\n if (val) {\n _this.dragService.addDragSource(params);\n el.style.pointerEvents = 'all';\n isResizable = true;\n }\n else {\n _this.dragService.removeDragSource(params);\n el.style.pointerEvents = 'none';\n }\n _this.resizerMap[s].dragSource = val ? params : undefined;\n }\n });\n this.isResizable = isResizable;\n };\n AgDialog.prototype.setMovable = function (movable) {\n if (movable !== this.movable) {\n this.movable = movable;\n var params = this.moveElementDragListener || {\n eElement: this.moveElement,\n onDragStart: this.onMoveStart.bind(this),\n onDragging: this.onMove.bind(this),\n onDragStop: this.onMoveEnd.bind(this)\n };\n if (movable) {\n this.dragService.addDragSource(params);\n this.moveElementDragListener = params;\n }\n else {\n this.dragService.removeDragSource(params);\n this.moveElementDragListener = undefined;\n }\n }\n };\n AgDialog.prototype.setMaximizable = function (maximizable) {\n var _this = this;\n if (maximizable === false) {\n this.clearMaximizebleListeners();\n if (this.maximizeButtonComp) {\n this.maximizeButtonComp.destroy();\n this.maximizeButtonComp = this.maximizeIcon = this.minimizeIcon = undefined;\n }\n return;\n }\n var eTitleBar = this.eTitleBar;\n if (!eTitleBar || maximizable === this.isMaximizable) {\n return;\n }\n var maximizeButtonComp = this.maximizeButtonComp = new Component(this.MAXIMIZE_BTN_TEMPLATE);\n this.getContext().wireBean(maximizeButtonComp);\n var eGui = maximizeButtonComp.getGui();\n eGui.appendChild(this.maximizeIcon = _.createIconNoSpan('maximize', this.gridOptionsWrapper));\n eGui.appendChild(this.minimizeIcon = _.createIconNoSpan('minimize', this.gridOptionsWrapper));\n _.addCssClass(this.minimizeIcon, 'ag-hidden');\n maximizeButtonComp.addDestroyableEventListener(eGui, 'click', this.toggleMaximize.bind(this));\n this.addTitleBarButton(maximizeButtonComp, 0);\n this.maximizeListeners.push(this.addDestroyableEventListener(eTitleBar, 'dblclick', this.toggleMaximize.bind(this)));\n this.resizeListenerDestroy = this.addDestroyableEventListener(this, 'resize', function () {\n _this.isMaximized = false;\n _this.refreshMaximizeIcon();\n });\n };\n __decorate([\n Autowired('dragService')\n ], AgDialog.prototype, \"dragService\", void 0);\n return AgDialog;\n}(AgPanel));\nexport { AgDialog };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Constants } from \"../../constants\";\nimport { PopupComponent } from \"../../widgets/popupComponent\";\nimport { _ } from '../../utils';\nvar TextCellEditor = /** @class */ (function (_super) {\n __extends(TextCellEditor, _super);\n function TextCellEditor() {\n var _this = _super.call(this, TextCellEditor.TEMPLATE) || this;\n _this.eInput = _this.getGui().querySelector('input');\n return _this;\n }\n TextCellEditor.prototype.init = function (params) {\n this.params = params;\n var eInput = this.eInput;\n var startValue;\n // cellStartedEdit is only false if we are doing fullRow editing\n if (params.cellStartedEdit) {\n this.focusAfterAttached = true;\n var keyPressBackspaceOrDelete = params.keyPress === Constants.KEY_BACKSPACE\n || params.keyPress === Constants.KEY_DELETE;\n if (keyPressBackspaceOrDelete) {\n startValue = '';\n }\n else if (params.charPress) {\n startValue = params.charPress;\n }\n else {\n startValue = this.getStartValue(params);\n if (params.keyPress !== Constants.KEY_F2) {\n this.highlightAllOnFocus = true;\n }\n }\n }\n else {\n this.focusAfterAttached = false;\n startValue = this.getStartValue(params);\n }\n if (_.exists(startValue)) {\n eInput.value = startValue;\n }\n this.addDestroyableEventListener(eInput, 'keydown', function (event) {\n var pageUp = event.keyCode === Constants.KEY_PAGE_UP;\n var pageDown = event.keyCode === Constants.KEY_PAGE_DOWN;\n if (pageUp || pageDown) {\n event.preventDefault();\n }\n });\n };\n TextCellEditor.prototype.afterGuiAttached = function () {\n if (!this.focusAfterAttached) {\n return;\n }\n var eInput = this.eInput;\n // Added for AG-3238. We can't remove this explicit focus() because Chrome requires an input\n // to be focussed before setSelectionRange will work. But it triggers a bug in Safari where\n // explicitly focussing then blurring an empty field will cause the parent container to scroll.\n if (!_.isBrowserSafari()) {\n eInput.focus();\n }\n if (this.highlightAllOnFocus) {\n eInput.select();\n }\n else {\n // when we started editing, we want the caret at the end, not the start.\n // this comes into play in two scenarios: a) when user hits F2 and b)\n // when user hits a printable character, then on IE (and only IE) the caret\n // was placed after the first character, thus 'apply' would end up as 'pplea'\n var length_1 = eInput.value ? eInput.value.length : 0;\n if (length_1 > 0) {\n eInput.setSelectionRange(length_1, length_1);\n }\n }\n };\n // gets called when tabbing trough cells and in full row edit mode\n TextCellEditor.prototype.focusIn = function () {\n var eInput = this.eInput;\n eInput.focus();\n eInput.select();\n };\n TextCellEditor.prototype.getValue = function () {\n var eInput = this.eInput;\n return this.params.parseValue(eInput.value);\n };\n TextCellEditor.prototype.getStartValue = function (params) {\n var formatValue = params.useFormatter || params.column.getColDef().refData;\n return formatValue ? params.formatValue(params.value) : params.value;\n };\n TextCellEditor.prototype.isPopup = function () {\n return false;\n };\n TextCellEditor.TEMPLATE = '
';\n return TextCellEditor;\n}(PopupComponent));\nexport { TextCellEditor };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Constants } from \"../../constants\";\nimport { Autowired } from \"../../context/context\";\nimport { Component } from \"../../widgets/component\";\nimport { RowNode } from \"../../entities/rowNode\";\nimport { CheckboxSelectionComponent } from \"../checkboxSelectionComponent\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { ComponentSource } from \"../../components/framework/userComponentFactory\";\nimport { _ } from \"../../utils\";\nvar GroupCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCellRenderer, _super);\n function GroupCellRenderer() {\n return _super.call(this, GroupCellRenderer.TEMPLATE) || this;\n }\n GroupCellRenderer.prototype.init = function (params) {\n this.params = params;\n if (this.gridOptionsWrapper.isGroupIncludeTotalFooter()) {\n this.assignBlankValueToGroupFooterCell(params);\n }\n var embeddedRowMismatch = this.isEmbeddedRowMismatch();\n // This allows for empty strings to appear as groups since\n // it will only return for null or undefined.\n var cellIsEmpty = params.value == null;\n this.cellIsBlank = embeddedRowMismatch || cellIsEmpty;\n if (this.cellIsBlank) {\n return;\n }\n this.setupDragOpenParents();\n this.addExpandAndContract();\n this.addCheckboxIfNeeded();\n this.addValueElement();\n this.setupIndent();\n };\n GroupCellRenderer.prototype.assignBlankValueToGroupFooterCell = function (params) {\n // this is not ideal, but it was the only way we could get footer working for the root node\n if (!params.value && params.node.level == -1) {\n params.value = '';\n }\n };\n // if we are doing embedded full width rows, we only show the renderer when\n // in the body, or if pinning in the pinned section, or if pinning and RTL,\n // in the right section. otherwise we would have the cell repeated in each section.\n GroupCellRenderer.prototype.isEmbeddedRowMismatch = function () {\n if (this.params.fullWidth && this.gridOptionsWrapper.isEmbedFullWidthRows()) {\n var pinnedLeftCell = this.params.pinned === Constants.PINNED_LEFT;\n var pinnedRightCell = this.params.pinned === Constants.PINNED_RIGHT;\n var bodyCell = !pinnedLeftCell && !pinnedRightCell;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n if (this.columnController.isPinningLeft()) {\n return !pinnedRightCell;\n }\n else {\n return !bodyCell;\n }\n }\n else {\n if (this.columnController.isPinningLeft()) {\n return !pinnedLeftCell;\n }\n else {\n return !bodyCell;\n }\n }\n }\n else {\n return false;\n }\n };\n GroupCellRenderer.prototype.setIndent = function () {\n if (this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n var params = this.params;\n var rowNode = params.node;\n var paddingCount = rowNode.uiLevel;\n var userProvidedPaddingPixelsTheDeprecatedWay = params.padding >= 0;\n if (userProvidedPaddingPixelsTheDeprecatedWay) {\n this.setPaddingDeprecatedWay(paddingCount, params.padding);\n return;\n }\n if (this.indentClass) {\n this.removeCssClass(this.indentClass);\n }\n this.indentClass = 'ag-row-group-indent-' + paddingCount;\n this.addCssClass(this.indentClass);\n };\n GroupCellRenderer.prototype.setPaddingDeprecatedWay = function (paddingCount, padding) {\n _.doOnce(function () { return console.warn('ag-Grid: since v14.2, configuring padding for groupCellRenderer should be done with Sass variables and themes. Please see the ag-Grid documentation page for Themes, in particular the property $row-group-indent-size.'); }, 'groupCellRenderer->doDeprecatedWay');\n var paddingPx = paddingCount * padding;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // if doing rtl, padding is on the right\n this.getGui().style.paddingRight = paddingPx + 'px';\n }\n else {\n // otherwise it is on the left\n this.getGui().style.paddingLeft = paddingPx + 'px';\n }\n };\n GroupCellRenderer.prototype.setupIndent = function () {\n // only do this if an indent - as this overwrites the padding that\n // the theme set, which will make things look 'not aligned' for the\n // first group level.\n var node = this.params.node;\n var suppressPadding = this.params.suppressPadding;\n if (!suppressPadding) {\n this.addDestroyableEventListener(node, RowNode.EVENT_UI_LEVEL_CHANGED, this.setIndent.bind(this));\n this.setIndent();\n }\n };\n GroupCellRenderer.prototype.addValueElement = function () {\n var params = this.params;\n var rowNode = this.displayedGroup;\n if (rowNode.footer) {\n this.createFooterCell();\n }\n else if (rowNode.hasChildren() ||\n _.get(params.colDef, 'cellRendererParams.innerRenderer', null) ||\n _.get(params.colDef, 'cellRendererParams.innerRendererFramework', null)) {\n this.createGroupCell();\n if (rowNode.hasChildren()) {\n this.addChildCount();\n }\n }\n else {\n this.createLeafCell();\n }\n };\n GroupCellRenderer.prototype.createFooterCell = function () {\n var footerValue;\n var footerValueGetter = this.params.footerValueGetter;\n if (footerValueGetter) {\n // params is same as we were given, except we set the value as the item to display\n var paramsClone = _.cloneObject(this.params);\n paramsClone.value = this.params.value;\n if (typeof footerValueGetter === 'function') {\n footerValue = footerValueGetter(paramsClone);\n }\n else if (typeof footerValueGetter === 'string') {\n footerValue = this.expressionService.evaluate(footerValueGetter, paramsClone);\n }\n else {\n console.warn('ag-Grid: footerValueGetter should be either a function or a string (expression)');\n }\n }\n else {\n footerValue = 'Total ' + this.params.value;\n }\n this.eValue.innerHTML = footerValue;\n };\n GroupCellRenderer.prototype.createGroupCell = function () {\n var _this = this;\n var params = this.params;\n var rowGroupColumn = this.displayedGroup.rowGroupColumn;\n // we try and use the cellRenderer of the column used for the grouping if we can\n var columnToUse = rowGroupColumn ? rowGroupColumn : params.column;\n var groupName = this.params.value;\n var valueFormatted = columnToUse ?\n this.valueFormatterService.formatValue(columnToUse, params.node, params.scope, groupName) : null;\n params.valueFormatted = valueFormatted;\n var rendererPromise;\n if (params.fullWidth == true) {\n rendererPromise = this.useFullWidth(params);\n }\n else {\n rendererPromise = this.useInnerRenderer(this.params.colDef.cellRendererParams, columnToUse.getColDef(), params);\n }\n // retain a reference to the created renderer - we'll use this later for cleanup (in destroy)\n if (rendererPromise) {\n rendererPromise.then(function (value) {\n _this.innerCellRenderer = value;\n });\n }\n };\n GroupCellRenderer.prototype.useInnerRenderer = function (groupCellRendererParams, groupedColumnDef, // the column this group row is for, eg 'Country'\n params) {\n // when grouping, the normal case is we use the cell renderer of the grouped column. eg if grouping by country\n // and then rating, we will use the country cell renderer for each country group row and likewise the rating\n // cell renderer for each rating group row.\n //\n // however if the user has innerCellRenderer defined, this gets preference and we don't use cell renderers\n // of the grouped columns.\n //\n // so we check and use in the following order:\n //\n // 1) thisColDef.cellRendererParams.innerRenderer of the column showing the groups (eg auto group column)\n // 2) groupedColDef.cellRenderer of the grouped column\n // 3) groupedColDef.cellRendererParams.innerRenderer\n var _this = this;\n var cellRendererPromise = null;\n // we check if cell renderer provided for the group cell renderer, eg colDef.cellRendererParams.innerRenderer\n var groupInnerRendererClass = this.userComponentFactory\n .lookupComponentClassDef(groupCellRendererParams, \"innerRenderer\");\n if (groupInnerRendererClass && groupInnerRendererClass.component != null\n && groupInnerRendererClass.source != ComponentSource.DEFAULT) {\n // use the renderer defined in cellRendererParams.innerRenderer\n cellRendererPromise = this.userComponentFactory.newInnerCellRenderer(groupCellRendererParams, params);\n }\n else {\n // otherwise see if we can use the cellRenderer of the column we are grouping by\n var groupColumnRendererClass = this.userComponentFactory\n .lookupComponentClassDef(groupedColumnDef, \"cellRenderer\");\n if (groupColumnRendererClass && groupColumnRendererClass.source != ComponentSource.DEFAULT) {\n // Only if the original column is using a specific renderer, it it is a using a DEFAULT one ignore it\n cellRendererPromise = this.userComponentFactory.newCellRenderer(groupedColumnDef, params);\n }\n else if (groupColumnRendererClass && groupColumnRendererClass.source == ComponentSource.DEFAULT\n && (_.get(groupedColumnDef, 'cellRendererParams.innerRenderer', null))) {\n // EDGE CASE - THIS COMES FROM A COLUMN WHICH HAS BEEN GROUPED DYNAMICALLY, THAT HAS AS RENDERER 'group'\n // AND HAS A INNER CELL RENDERER\n cellRendererPromise = this.userComponentFactory.newInnerCellRenderer(groupedColumnDef.cellRendererParams, params);\n }\n else {\n // This forces the retrieval of the default plain cellRenderer that just renders the values.\n cellRendererPromise = this.userComponentFactory.newCellRenderer({}, params);\n }\n }\n if (cellRendererPromise != null) {\n cellRendererPromise.then(function (rendererToUse) {\n if (rendererToUse == null) {\n _this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n return;\n }\n _.bindCellRendererToHtmlElement(cellRendererPromise, _this.eValue);\n });\n }\n else {\n this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n return cellRendererPromise;\n };\n GroupCellRenderer.prototype.useFullWidth = function (params) {\n var cellRendererPromise = this.userComponentFactory.newFullWidthGroupRowInnerCellRenderer(params);\n if (cellRendererPromise != null) {\n _.bindCellRendererToHtmlElement(cellRendererPromise, this.eValue);\n }\n else {\n this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n return cellRendererPromise;\n };\n GroupCellRenderer.prototype.addChildCount = function () {\n // only include the child count if it's included, eg if user doing custom aggregation,\n // then this could be left out, or set to -1, ie no child count\n if (this.params.suppressCount) {\n return;\n }\n this.addDestroyableEventListener(this.displayedGroup, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.updateChildCount.bind(this));\n // filtering changes the child count, so need to cater for it\n this.updateChildCount();\n };\n GroupCellRenderer.prototype.updateChildCount = function () {\n var allChildrenCount = this.displayedGroup.allChildrenCount;\n this.eChildCount.innerHTML = allChildrenCount >= 0 ? \"(\" + allChildrenCount + \")\" : \"\";\n };\n GroupCellRenderer.prototype.createLeafCell = function () {\n if (_.exists(this.params.value)) {\n this.eValue.innerText = this.params.valueFormatted ? this.params.valueFormatted : this.params.value;\n }\n };\n GroupCellRenderer.prototype.isUserWantsSelected = function () {\n var paramsCheckbox = this.params.checkbox;\n if (typeof paramsCheckbox === 'function') {\n return paramsCheckbox(this.params);\n }\n else {\n return paramsCheckbox === true;\n }\n };\n GroupCellRenderer.prototype.addCheckboxIfNeeded = function () {\n var rowNode = this.displayedGroup;\n var checkboxNeeded = this.isUserWantsSelected()\n // footers cannot be selected\n && !rowNode.footer\n // pinned rows cannot be selected\n && !rowNode.rowPinned\n // details cannot be selected\n && !rowNode.detail;\n if (checkboxNeeded) {\n var cbSelectionComponent_1 = new CheckboxSelectionComponent();\n this.getContext().wireBean(cbSelectionComponent_1);\n cbSelectionComponent_1.init({ rowNode: rowNode, column: this.params.column });\n this.eCheckbox.appendChild(cbSelectionComponent_1.getGui());\n this.addDestroyFunc(function () { return cbSelectionComponent_1.destroy(); });\n }\n _.addOrRemoveCssClass(this.eCheckbox, 'ag-invisible', !checkboxNeeded);\n };\n GroupCellRenderer.prototype.addExpandAndContract = function () {\n var params = this.params;\n var eGroupCell = params.eGridCell;\n var eExpandedIcon = _.createIconNoSpan('groupExpanded', this.gridOptionsWrapper, null);\n var eContractedIcon = _.createIconNoSpan('groupContracted', this.gridOptionsWrapper, null);\n this.eExpanded.appendChild(eExpandedIcon);\n this.eContracted.appendChild(eContractedIcon);\n this.addDestroyableEventListener(this.eExpanded, 'click', this.onExpandClicked.bind(this));\n this.addDestroyableEventListener(this.eContracted, 'click', this.onExpandClicked.bind(this));\n // expand / contract as the user hits enter\n this.addDestroyableEventListener(eGroupCell, 'keydown', this.onKeyDown.bind(this));\n this.addDestroyableEventListener(params.node, RowNode.EVENT_EXPANDED_CHANGED, this.showExpandAndContractIcons.bind(this));\n this.showExpandAndContractIcons();\n // because we don't show the expand / contract when there are no children, we need to check every time\n // the number of children change.\n this.addDestroyableEventListener(this.displayedGroup, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.onAllChildrenCountChanged.bind(this));\n // if editing groups, then double click is to start editing\n if (!this.gridOptionsWrapper.isEnableGroupEdit() && this.isExpandable() && !params.suppressDoubleClickExpand) {\n this.addDestroyableEventListener(eGroupCell, 'dblclick', this.onCellDblClicked.bind(this));\n }\n };\n GroupCellRenderer.prototype.onAllChildrenCountChanged = function () {\n // maybe if no children now, we should hide the expand / contract icons\n this.showExpandAndContractIcons();\n // if we have no children, this impacts the indent\n this.setIndent();\n };\n GroupCellRenderer.prototype.onKeyDown = function (event) {\n var enterKeyPressed = _.isKeyPressed(event, Constants.KEY_ENTER);\n if (enterKeyPressed) {\n if (this.params.suppressEnterExpand) {\n return;\n }\n var cellEditable = this.params.column && this.params.column.isCellEditable(this.params.node);\n if (cellEditable) {\n return;\n }\n event.preventDefault();\n this.onExpandOrContract();\n }\n };\n GroupCellRenderer.prototype.setupDragOpenParents = function () {\n var column = this.params.column;\n var rowNode = this.params.node;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n this.draggedFromHideOpenParents = false;\n }\n else if (!rowNode.hasChildren()) {\n // if we are here, and we are not a group, then we must of been dragged down,\n // as otherwise the cell would be blank, and if cell is blank, this method is never called.\n this.draggedFromHideOpenParents = true;\n }\n else {\n var rowGroupColumn = rowNode.rowGroupColumn;\n if (rowGroupColumn) {\n // if the displayGroup column for this col matches the rowGroupColumn we grouped by for this node,\n // then nothing was dragged down\n this.draggedFromHideOpenParents = !column.isRowGroupDisplayed(rowGroupColumn.getId());\n }\n else {\n // the only way we can end up here (no column, but a group) is if we are at the root node,\n // which only happens when 'groupIncludeTotalFooter' is true. here, we are never dragging\n this.draggedFromHideOpenParents = false;\n }\n }\n if (this.draggedFromHideOpenParents) {\n var pointer = rowNode.parent;\n while (true) {\n if (_.missing(pointer)) {\n break;\n }\n if (pointer.rowGroupColumn && column.isRowGroupDisplayed(pointer.rowGroupColumn.getId())) {\n this.displayedGroup = pointer;\n break;\n }\n pointer = pointer.parent;\n }\n }\n // if we didn't find a displayed group, set it to the row node\n if (_.missing(this.displayedGroup)) {\n this.displayedGroup = rowNode;\n }\n };\n GroupCellRenderer.prototype.onExpandClicked = function (mouseEvent) {\n if (_.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // so if we expand a node, it does not also get selected.\n _.stopPropagationForAgGrid(mouseEvent);\n this.onExpandOrContract();\n };\n GroupCellRenderer.prototype.onCellDblClicked = function (mouseEvent) {\n if (_.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // we want to avoid acting on double click events on the expand / contract icon,\n // as that icons already has expand / collapse functionality on it. otherwise if\n // the icon was double clicked, we would get 'click', 'click', 'dblclick' which\n // is open->close->open, however double click should be open->close only.\n var targetIsExpandIcon = _.isElementInEventPath(this.eExpanded, mouseEvent)\n || _.isElementInEventPath(this.eContracted, mouseEvent);\n if (!targetIsExpandIcon) {\n this.onExpandOrContract();\n }\n };\n GroupCellRenderer.prototype.onExpandOrContract = function () {\n // must use the displayedGroup, so if data was dragged down, we expand the parent, not this row\n var rowNode = this.displayedGroup;\n rowNode.setExpanded(!rowNode.expanded);\n };\n GroupCellRenderer.prototype.isExpandable = function () {\n var rowNode = this.params.node;\n var reducedLeafNode = this.columnController.isPivotMode() && rowNode.leafGroup;\n return this.draggedFromHideOpenParents ||\n (rowNode.isExpandable() && !rowNode.footer && !reducedLeafNode);\n };\n GroupCellRenderer.prototype.showExpandAndContractIcons = function () {\n var rowNode = this.params.node;\n if (this.isExpandable()) {\n // if expandable, show one based on expand state.\n // if we were dragged down, means our parent is always expanded\n var expanded = this.draggedFromHideOpenParents ? true : rowNode.expanded;\n _.setDisplayed(this.eContracted, !expanded);\n _.setDisplayed(this.eExpanded, expanded);\n }\n else {\n // it not expandable, show neither\n _.setDisplayed(this.eExpanded, false);\n _.setDisplayed(this.eContracted, false);\n }\n var displayedGroup = this.displayedGroup;\n // compensation padding for leaf nodes, so there is blank space instead of the expand icon\n var pivotModeAndLeafGroup = this.columnController.isPivotMode() && displayedGroup.leafGroup;\n var notExpandable = !displayedGroup.isExpandable();\n var addLeafIndentClass = displayedGroup.footer || notExpandable || pivotModeAndLeafGroup;\n this.addOrRemoveCssClass('ag-row-group', !addLeafIndentClass);\n this.addOrRemoveCssClass('ag-row-group-leaf-indent', addLeafIndentClass);\n };\n GroupCellRenderer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.innerCellRenderer && this.innerCellRenderer.destroy) {\n this.innerCellRenderer.destroy();\n }\n };\n GroupCellRenderer.prototype.refresh = function () {\n return false;\n };\n GroupCellRenderer.TEMPLATE = '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], GroupCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('expressionService')\n ], GroupCellRenderer.prototype, \"expressionService\", void 0);\n __decorate([\n Autowired('eventService')\n ], GroupCellRenderer.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('valueFormatterService')\n ], GroupCellRenderer.prototype, \"valueFormatterService\", void 0);\n __decorate([\n Autowired('columnController')\n ], GroupCellRenderer.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('mouseEventService')\n ], GroupCellRenderer.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], GroupCellRenderer.prototype, \"userComponentFactory\", void 0);\n __decorate([\n RefSelector('eExpanded')\n ], GroupCellRenderer.prototype, \"eExpanded\", void 0);\n __decorate([\n RefSelector('eContracted')\n ], GroupCellRenderer.prototype, \"eContracted\", void 0);\n __decorate([\n RefSelector('eCheckbox')\n ], GroupCellRenderer.prototype, \"eCheckbox\", void 0);\n __decorate([\n RefSelector('eValue')\n ], GroupCellRenderer.prototype, \"eValue\", void 0);\n __decorate([\n RefSelector('eChildCount')\n ], GroupCellRenderer.prototype, \"eChildCount\", void 0);\n return GroupCellRenderer;\n}(Component));\nexport { GroupCellRenderer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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 { CellComp } from \"./cellComp\";\nimport { RowNode } from \"../entities/rowNode\";\nimport { Events } from \"../events\";\nimport { Component } from \"../widgets/component\";\nimport { _ } from \"../utils\";\nimport { Constants } from \"../constants\";\nimport { ModuleNames } from \"../modules/moduleNames\";\nimport { ModuleRegistry } from \"../modules/moduleRegistry\";\nvar RowComp = /** @class */ (function (_super) {\n __extends(RowComp, _super);\n function RowComp(parentScope, bodyContainerComp, pinnedLeftContainerComp, pinnedRightContainerComp, fullWidthContainerComp, rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout, embedFullWidth) {\n var _this = _super.call(this) || this;\n _this.eAllRowContainers = [];\n _this.active = true;\n _this.rowContainerReadyCount = 0;\n _this.refreshNeeded = false;\n _this.columnRefreshPending = false;\n _this.cellComps = {};\n // for animations, there are bits we want done in the next VM turn, to all DOM to update first.\n // instead of each row doing a setTimeout(func,0), we put the functions here and the rowRenderer\n // executes them all in one timeout\n _this.createSecondPassFuncs = [];\n // these get called before the row is destroyed - they set up the DOM for the remove animation (ie they\n // set the DOM up for the animation), then the delayedDestroyFunctions get called when the animation is\n // complete (ie removes from the dom).\n _this.removeFirstPassFuncs = [];\n // for animations, these functions get called 400ms after the row is cleared, called by the rowRenderer\n // so each row isn't setting up it's own timeout\n _this.removeSecondPassFuncs = [];\n _this.initialised = false;\n _this.elementOrderChanged = false;\n _this.parentScope = parentScope;\n _this.beans = beans;\n _this.bodyContainerComp = bodyContainerComp;\n _this.pinnedLeftContainerComp = pinnedLeftContainerComp;\n _this.pinnedRightContainerComp = pinnedRightContainerComp;\n _this.fullWidthContainerComp = fullWidthContainerComp;\n _this.rowNode = rowNode;\n _this.rowIsEven = _this.rowNode.rowIndex % 2 === 0;\n _this.paginationPage = _this.beans.paginationProxy.getCurrentPage();\n _this.useAnimationFrameForCreate = useAnimationFrameForCreate;\n _this.printLayout = printLayout;\n _this.embedFullWidth = embedFullWidth;\n _this.setAnimateFlags(animateIn);\n return _this;\n }\n RowComp.prototype.init = function () {\n var _this = this;\n this.rowFocused = this.beans.focusedCellController.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n this.scope = this.createChildScopeOrNull(this.rowNode.data);\n this.setupRowContainers();\n this.addListeners();\n if (this.slideRowIn) {\n this.createSecondPassFuncs.push(function () {\n _this.onTopChanged();\n });\n }\n if (this.fadeRowIn) {\n this.createSecondPassFuncs.push(function () {\n _this.eAllRowContainers.forEach(function (eRow) { return _.removeCssClass(eRow, 'ag-opacity-zero'); });\n });\n }\n };\n RowComp.prototype.createTemplate = function (contents, extraCssClass) {\n if (extraCssClass === void 0) { extraCssClass = null; }\n var templateParts = [];\n var rowHeight = this.rowNode.rowHeight;\n var rowClasses = this.getInitialRowClasses(extraCssClass).join(' ');\n var rowIdSanitised = _.escape(this.rowNode.id);\n var userRowStyles = this.preProcessStylesFromGridOptions();\n var businessKey = this.getRowBusinessKey();\n var businessKeySanitised = _.escape(businessKey);\n var rowTopStyle = this.getInitialRowTopStyle();\n var rowIdx = this.rowNode.getRowIndexString();\n var headerRowCount = this.beans.gridPanel.headerRootComp.getHeaderRowCount();\n templateParts.push(\"\");\n // add in the template for the cells\n templateParts.push(contents);\n templateParts.push(\"
\");\n return templateParts.join('');\n };\n RowComp.prototype.getCellForCol = function (column) {\n var cellComp = this.cellComps[column.getColId()];\n return cellComp ? cellComp.getGui() : null;\n };\n RowComp.prototype.afterFlush = function () {\n if (this.initialised) {\n return;\n }\n this.initialised = true;\n this.executeProcessRowPostCreateFunc();\n };\n RowComp.prototype.executeProcessRowPostCreateFunc = function () {\n var func = this.beans.gridOptionsWrapper.getProcessRowPostCreateFunc();\n if (!func) {\n return;\n }\n var params = {\n eRow: this.eBodyRow,\n ePinnedLeftRow: this.ePinnedLeftRow,\n ePinnedRightRow: this.ePinnedRightRow,\n node: this.rowNode,\n api: this.beans.gridOptionsWrapper.getApi(),\n rowIndex: this.rowNode.rowIndex,\n addRenderedRowListener: this.addEventListener.bind(this),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n func(params);\n };\n RowComp.prototype.getInitialRowTopStyle = function () {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return '';\n }\n // if sliding in, we take the old row top. otherwise we just set the current row top.\n var pixels = this.slideRowIn ? this.roundRowTopToBounds(this.rowNode.oldRowTop) : this.rowNode.rowTop;\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n var afterScalingPixels = this.beans.maxDivHeightScaler.getRealPixelPosition(afterPaginationPixels);\n var isSuppressRowTransform = this.beans.gridOptionsWrapper.isSuppressRowTransform();\n return isSuppressRowTransform ? \"top: \" + afterScalingPixels + \"px; \" : \"transform: translateY(\" + afterScalingPixels + \"px);\";\n };\n RowComp.prototype.getRowBusinessKey = function () {\n var businessKeyForNodeFunc = this.beans.gridOptionsWrapper.getBusinessKeyForNodeFunc();\n if (typeof businessKeyForNodeFunc !== 'function') {\n return;\n }\n return businessKeyForNodeFunc(this.rowNode);\n };\n RowComp.prototype.areAllContainersReady = function () {\n return this.rowContainerReadyCount === 3;\n };\n RowComp.prototype.lazyCreateCells = function (cols, eRow) {\n if (!this.active) {\n return;\n }\n var cellTemplatesAndComps = this.createCells(cols);\n eRow.innerHTML = cellTemplatesAndComps.template;\n this.callAfterRowAttachedOnCells(cellTemplatesAndComps.cellComps, eRow);\n this.rowContainerReadyCount++;\n if (this.areAllContainersReady() && this.refreshNeeded) {\n this.refreshCells();\n }\n };\n RowComp.prototype.createRowContainer = function (rowContainerComp, cols, callback) {\n var _this = this;\n var useAnimationsFrameForCreate = this.useAnimationFrameForCreate;\n var cellTemplatesAndComps = useAnimationsFrameForCreate ? { cellComps: [], template: '' } : this.createCells(cols);\n var rowTemplate = this.createTemplate(cellTemplatesAndComps.template);\n // the RowRenderer is probably inserting many rows. rather than inserting each template one\n // at a time, the grid inserts all rows together - so the callback here is called by the\n // rowRenderer when all RowComps are created, then all the HTML is inserted in one go,\n // and then all the callbacks are called. this is NOT done in an animation frame.\n rowContainerComp.appendRowTemplate(rowTemplate, function () {\n var eRow = rowContainerComp.getRowElement(_this.getCompId());\n _this.afterRowAttached(rowContainerComp, eRow);\n callback(eRow);\n if (useAnimationsFrameForCreate) {\n _this.beans.taskQueue.createTask(_this.lazyCreateCells.bind(_this, cols, eRow), _this.rowNode.rowIndex, 'createTasksP1');\n }\n else {\n _this.callAfterRowAttachedOnCells(cellTemplatesAndComps.cellComps, eRow);\n _this.rowContainerReadyCount = 3;\n }\n });\n };\n RowComp.prototype.createChildScopeOrNull = function (data) {\n var isAngularCompileRows = this.beans.gridOptionsWrapper.isAngularCompileRows();\n if (!isAngularCompileRows) {\n return null;\n }\n var newChildScope = this.parentScope.$new();\n newChildScope.data = __assign({}, data);\n newChildScope.rowNode = this.rowNode;\n newChildScope.context = this.beans.gridOptionsWrapper.getContext();\n this.addDestroyFunc(function () {\n newChildScope.$destroy();\n newChildScope.data = null;\n newChildScope.rowNode = null;\n newChildScope.context = null;\n });\n return newChildScope;\n };\n RowComp.prototype.setupRowContainers = function () {\n var isFullWidthCell = this.rowNode.isFullWidthCell();\n var isDetailCell = this.beans.doingMasterDetail && this.rowNode.detail;\n var pivotMode = this.beans.columnController.isPivotMode();\n // we only use full width for groups, not footers. it wouldn't make sense to include footers if not looking\n // for totals. if users complain about this, then we should introduce a new property 'footerUseEntireRow'\n // so each can be set independently (as a customer complained about footers getting full width, hence\n // introducing this logic)\n var isGroupRow = this.rowNode.group && !this.rowNode.footer;\n var isFullWidthGroup = isGroupRow && this.beans.gridOptionsWrapper.isGroupUseEntireRow(pivotMode);\n if (this.rowNode.stub) {\n this.createFullWidthRows(RowComp.LOADING_CELL_RENDERER, RowComp.LOADING_CELL_RENDERER_COMP_NAME);\n }\n else if (isDetailCell) {\n this.createFullWidthRows(RowComp.DETAIL_CELL_RENDERER, RowComp.DETAIL_CELL_RENDERER_COMP_NAME);\n }\n else if (isFullWidthCell) {\n this.createFullWidthRows(RowComp.FULL_WIDTH_CELL_RENDERER, null);\n }\n else if (isFullWidthGroup) {\n this.createFullWidthRows(RowComp.GROUP_ROW_RENDERER, RowComp.GROUP_ROW_RENDERER_COMP_NAME);\n }\n else {\n this.setupNormalRowContainers();\n }\n };\n RowComp.prototype.setupNormalRowContainers = function () {\n var _this = this;\n var centerCols;\n var leftCols;\n var rightCols;\n if (this.printLayout) {\n centerCols = this.beans.columnController.getAllDisplayedColumns();\n leftCols = [];\n rightCols = [];\n }\n else {\n centerCols = this.beans.columnController.getAllDisplayedCenterVirtualColumnsForRow(this.rowNode);\n leftCols = this.beans.columnController.getDisplayedLeftColumnsForRow(this.rowNode);\n rightCols = this.beans.columnController.getDisplayedRightColumnsForRow(this.rowNode);\n }\n this.createRowContainer(this.bodyContainerComp, centerCols, function (eRow) { return _this.eBodyRow = eRow; });\n this.createRowContainer(this.pinnedRightContainerComp, rightCols, function (eRow) { return _this.ePinnedRightRow = eRow; });\n this.createRowContainer(this.pinnedLeftContainerComp, leftCols, function (eRow) { return _this.ePinnedLeftRow = eRow; });\n };\n RowComp.prototype.createFullWidthRows = function (type, name) {\n var _this = this;\n this.fullWidthRow = true;\n if (this.embedFullWidth) {\n this.createFullWidthRowContainer(this.bodyContainerComp, null, null, type, name, function (eRow) {\n _this.eFullWidthRowBody = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentBody = cellRenderer;\n });\n // printLayout doesn't put components into the pinned sections\n if (!this.printLayout) {\n this.createFullWidthRowContainer(this.pinnedLeftContainerComp, Constants.PINNED_LEFT, 'ag-cell-last-left-pinned', type, name, function (eRow) {\n _this.eFullWidthRowLeft = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentLeft = cellRenderer;\n });\n this.createFullWidthRowContainer(this.pinnedRightContainerComp, Constants.PINNED_RIGHT, 'ag-cell-first-right-pinned', type, name, function (eRow) {\n _this.eFullWidthRowRight = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentRight = cellRenderer;\n });\n }\n }\n else {\n // otherwise we add to the fullWidth container as normal\n // let previousFullWidth = ensureDomOrder ? this.lastPlacedElements.eFullWidth : null;\n this.createFullWidthRowContainer(this.fullWidthContainerComp, null, null, type, name, function (eRow) {\n _this.eFullWidthRow = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponent = cellRenderer;\n });\n }\n };\n RowComp.prototype.setAnimateFlags = function (animateIn) {\n if (animateIn) {\n var oldRowTopExists = _.exists(this.rowNode.oldRowTop);\n // if the row had a previous position, we slide it in (animate row top)\n this.slideRowIn = oldRowTopExists;\n // if the row had no previous position, we fade it in (animate\n this.fadeRowIn = !oldRowTopExists;\n }\n else {\n this.slideRowIn = false;\n this.fadeRowIn = false;\n }\n };\n RowComp.prototype.isEditing = function () {\n return this.editingRow;\n };\n RowComp.prototype.stopRowEditing = function (cancel) {\n this.stopEditing(cancel);\n };\n RowComp.prototype.isFullWidth = function () {\n return this.fullWidthRow;\n };\n RowComp.prototype.refreshFullWidth = function () {\n var _this = this;\n // returns 'true' if refresh succeeded\n var tryRefresh = function (eRow, eCellComp, pinned) {\n if (!eRow || !eCellComp) {\n // no refresh needed\n return true;\n }\n if (!eCellComp.refresh) {\n // no refresh method present, so can't refresh, hard refresh needed\n return false;\n }\n var params = _this.createFullWidthParams(eRow, pinned);\n var refreshSucceeded = eCellComp.refresh(params);\n return refreshSucceeded;\n };\n var normalSuccess = tryRefresh(this.eFullWidthRow, this.fullWidthRowComponent, null);\n var bodySuccess = tryRefresh(this.eFullWidthRowBody, this.fullWidthRowComponentBody, null);\n var leftSuccess = tryRefresh(this.eFullWidthRowLeft, this.fullWidthRowComponentLeft, Constants.PINNED_LEFT);\n var rightSuccess = tryRefresh(this.eFullWidthRowRight, this.fullWidthRowComponentRight, Constants.PINNED_RIGHT);\n var allFullWidthRowsRefreshed = normalSuccess && bodySuccess && leftSuccess && rightSuccess;\n return allFullWidthRowsRefreshed;\n };\n RowComp.prototype.addListeners = function () {\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_TOP_CHANGED, this.onTopChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_EXPANDED_CHANGED, this.onExpandedChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onRowNodeDataChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.onRowNodeCellChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DRAGGING_CHANGED, this.onRowNodeDraggingChanged.bind(this));\n var eventService = this.beans.eventService;\n this.addDestroyableEventListener(eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, this.onTopChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_CELL_FOCUSED, this.onCellFocusChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_COLUMN_MOVED, this.onColumnMoved.bind(this));\n this.addListenersForCellComps();\n };\n RowComp.prototype.addListenersForCellComps = function () {\n var _this = this;\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, function () {\n _this.forEachCellComp(function (cellComp) { return cellComp.onRowIndexChanged(); });\n });\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, function (event) {\n _this.forEachCellComp(function (cellComp) { return cellComp.onCellChanged(event); });\n });\n };\n // when grid columns change, then all cells should be cleaned out,\n // as the new columns could have same id as the previous columns and may conflict\n RowComp.prototype.onGridColumnsChanged = function () {\n this.removeRenderedCells(Object.keys(this.cellComps));\n };\n RowComp.prototype.onRowNodeDataChanged = function (event) {\n // if this is an update, we want to refresh, as this will allow the user to put in a transition\n // into the cellRenderer refresh method. otherwise this might be completely new data, in which case\n // we will want to completely replace the cells\n this.forEachCellComp(function (cellComp) {\n return cellComp.refreshCell({\n suppressFlash: !event.update,\n newData: !event.update\n });\n });\n // check for selected also, as this could be after lazy loading of the row data, in which case\n // the id might of just gotten set inside the row and the row selected state may of changed\n // as a result. this is what happens when selected rows are loaded in virtual pagination.\n // - niall note - since moving to the stub component, this may no longer be true, as replacing\n // the stub component now replaces the entire row\n this.onRowSelected();\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowComp.prototype.onRowNodeCellChanged = function (event) {\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowComp.prototype.postProcessCss = function () {\n this.postProcessStylesFromGridOptions();\n this.postProcessClassesFromGridOptions();\n this.postProcessRowClassRules();\n this.postProcessRowDragging();\n };\n RowComp.prototype.onRowNodeDraggingChanged = function () {\n this.postProcessRowDragging();\n };\n RowComp.prototype.postProcessRowDragging = function () {\n var dragging = this.rowNode.dragging;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-dragging', dragging); });\n };\n RowComp.prototype.onExpandedChanged = function () {\n var rowNode = this.rowNode;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-group-expanded', rowNode.expanded); });\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-group-contracted', !rowNode.expanded); });\n };\n RowComp.prototype.onDisplayedColumnsChanged = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.destroyFullWidthComponents = function () {\n if (this.fullWidthRowComponent) {\n this.beans.detailRowCompCache.addOrDestroy(this.rowNode, null, this.fullWidthRowComponent);\n this.fullWidthRowComponent = null;\n }\n if (this.fullWidthRowComponentBody) {\n this.beans.detailRowCompCache.addOrDestroy(this.rowNode, null, this.fullWidthRowComponentBody);\n this.fullWidthRowComponent = null;\n }\n if (this.fullWidthRowComponentLeft) {\n this.beans.detailRowCompCache.addOrDestroy(this.rowNode, Constants.PINNED_LEFT, this.fullWidthRowComponentLeft);\n this.fullWidthRowComponentLeft = null;\n }\n if (this.fullWidthRowComponentRight) {\n this.beans.detailRowCompCache.addOrDestroy(this.rowNode, Constants.PINNED_RIGHT, this.fullWidthRowComponentRight);\n this.fullWidthRowComponent = null;\n }\n };\n RowComp.prototype.getContainerForCell = function (pinnedType) {\n switch (pinnedType) {\n case Constants.PINNED_LEFT: return this.ePinnedLeftRow;\n case Constants.PINNED_RIGHT: return this.ePinnedRightRow;\n default: return this.eBodyRow;\n }\n };\n RowComp.prototype.onVirtualColumnsChanged = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.onColumnResized = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.refreshCells = function () {\n if (!this.areAllContainersReady()) {\n this.refreshNeeded = true;\n return;\n }\n var suppressAnimationFrame = this.beans.gridOptionsWrapper.isSuppressAnimationFrame();\n var skipAnimationFrame = suppressAnimationFrame || this.printLayout;\n if (skipAnimationFrame) {\n this.refreshCellsInAnimationFrame();\n }\n else {\n if (this.columnRefreshPending) {\n return;\n }\n this.beans.taskQueue.createTask(this.refreshCellsInAnimationFrame.bind(this), this.rowNode.rowIndex, 'createTasksP1');\n }\n };\n RowComp.prototype.refreshCellsInAnimationFrame = function () {\n if (!this.active) {\n return;\n }\n this.columnRefreshPending = false;\n var centerCols;\n var leftCols;\n var rightCols;\n if (this.printLayout) {\n centerCols = this.beans.columnController.getAllDisplayedColumns();\n leftCols = [];\n rightCols = [];\n }\n else {\n centerCols = this.beans.columnController.getAllDisplayedCenterVirtualColumnsForRow(this.rowNode);\n leftCols = this.beans.columnController.getDisplayedLeftColumnsForRow(this.rowNode);\n rightCols = this.beans.columnController.getDisplayedRightColumnsForRow(this.rowNode);\n }\n this.insertCellsIntoContainer(this.eBodyRow, centerCols);\n this.insertCellsIntoContainer(this.ePinnedLeftRow, leftCols);\n this.insertCellsIntoContainer(this.ePinnedRightRow, rightCols);\n this.elementOrderChanged = false;\n var colIdsToRemove = Object.keys(this.cellComps);\n centerCols.forEach(function (col) { return _.removeFromArray(colIdsToRemove, col.getId()); });\n leftCols.forEach(function (col) { return _.removeFromArray(colIdsToRemove, col.getId()); });\n rightCols.forEach(function (col) { return _.removeFromArray(colIdsToRemove, col.getId()); });\n // we never remove editing cells, as this would cause the cells to loose their values while editing\n // as the grid is scrolling horizontally.\n var eligibleToBeRemoved = colIdsToRemove.filter(this.isCellEligibleToBeRemoved.bind(this));\n // remove old cells from gui, but we don't destroy them, we might use them again\n this.removeRenderedCells(eligibleToBeRemoved);\n };\n RowComp.prototype.onColumnMoved = function () {\n this.elementOrderChanged = true;\n };\n RowComp.prototype.removeRenderedCells = function (colIds) {\n var _this = this;\n colIds.forEach(function (key) {\n var cellComp = _this.cellComps[key];\n // could be old reference, ie removed cell\n if (_.missing(cellComp)) {\n return;\n }\n cellComp.detach();\n cellComp.destroy();\n _this.cellComps[key] = null;\n });\n };\n RowComp.prototype.isCellEligibleToBeRemoved = function (indexStr) {\n var displayedColumns = this.beans.columnController.getAllDisplayedColumns();\n var REMOVE_CELL = true;\n var KEEP_CELL = false;\n var renderedCell = this.cellComps[indexStr];\n if (!renderedCell) {\n return REMOVE_CELL;\n }\n // always remove the cell if it's in the wrong pinned location\n if (this.isCellInWrongRow(renderedCell)) {\n return REMOVE_CELL;\n }\n // we want to try and keep editing and focused cells\n var editing = renderedCell.isEditing();\n var focused = this.beans.focusedCellController.isCellFocused(renderedCell.getCellPosition());\n var mightWantToKeepCell = editing || focused;\n if (mightWantToKeepCell) {\n var column = renderedCell.getColumn();\n var cellStillDisplayed = displayedColumns.indexOf(column) >= 0;\n return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;\n }\n return REMOVE_CELL;\n };\n RowComp.prototype.ensureCellInCorrectContainer = function (cellComp) {\n // for print layout, we always put cells into centre, otherwise we put in correct pinned section\n if (this.printLayout) {\n return;\n }\n var element = cellComp.getGui();\n var column = cellComp.getColumn();\n var pinnedType = column.getPinned();\n var eContainer = this.getContainerForCell(pinnedType);\n // if in wrong container, remove it\n var eOldContainer = cellComp.getParentRow();\n var inWrongRow = eOldContainer !== eContainer;\n if (inWrongRow) {\n // take out from old row\n if (eOldContainer) {\n eOldContainer.removeChild(element);\n }\n eContainer.appendChild(element);\n cellComp.setParentRow(eContainer);\n this.elementOrderChanged = true;\n }\n };\n RowComp.prototype.isCellInWrongRow = function (cellComp) {\n var column = cellComp.getColumn();\n var rowWeWant = this.getContainerForCell(column.getPinned());\n // if in wrong container, remove it\n var oldRow = cellComp.getParentRow();\n return oldRow !== rowWeWant;\n };\n RowComp.prototype.insertCellsIntoContainer = function (eRow, cols) {\n var _this = this;\n if (!eRow) {\n return;\n }\n var cellTemplates = [];\n var newCellComps = [];\n cols.forEach(function (col) {\n var colId = col.getId();\n var existingCell = _this.cellComps[colId];\n if (existingCell) {\n _this.ensureCellInCorrectContainer(existingCell);\n }\n else {\n _this.createNewCell(col, eRow, cellTemplates, newCellComps);\n }\n });\n if (cellTemplates.length > 0) {\n _.appendHtml(eRow, cellTemplates.join(''));\n this.callAfterRowAttachedOnCells(newCellComps, eRow);\n }\n if (this.elementOrderChanged && this.beans.gridOptionsWrapper.isEnsureDomOrder()) {\n var correctChildOrder = cols.map(function (col) { return _this.getCellForCol(col); });\n _.setDomChildOrder(eRow, correctChildOrder);\n }\n };\n RowComp.prototype.addDomData = function (eRowContainer) {\n var gow = this.beans.gridOptionsWrapper;\n gow.setDomData(eRowContainer, RowComp.DOM_DATA_KEY_RENDERED_ROW, this);\n this.addDestroyFunc(function () {\n gow.setDomData(eRowContainer, RowComp.DOM_DATA_KEY_RENDERED_ROW, null);\n });\n };\n RowComp.prototype.createNewCell = function (col, eContainer, cellTemplates, newCellComps) {\n var newCellComp = new CellComp(this.scope, this.beans, col, this.rowNode, this, false, this.printLayout);\n var cellTemplate = newCellComp.getCreateTemplate();\n cellTemplates.push(cellTemplate);\n newCellComps.push(newCellComp);\n this.cellComps[col.getId()] = newCellComp;\n newCellComp.setParentRow(eContainer);\n this.elementOrderChanged = true;\n };\n RowComp.prototype.onMouseEvent = function (eventName, mouseEvent) {\n switch (eventName) {\n case 'dblclick':\n this.onRowDblClick(mouseEvent);\n break;\n case 'click':\n this.onRowClick(mouseEvent);\n break;\n }\n };\n RowComp.prototype.createRowEvent = function (type, domEvent) {\n return {\n type: type,\n node: this.rowNode,\n data: this.rowNode.data,\n rowIndex: this.rowNode.rowIndex,\n rowPinned: this.rowNode.rowPinned,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n event: domEvent\n };\n };\n RowComp.prototype.createRowEventWithSource = function (type, domEvent) {\n var event = this.createRowEvent(type, domEvent);\n // when first developing this, we included the rowComp in the event.\n // this seems very weird. so when introducing the event types, i left the 'source'\n // out of the type, and just include the source in the two places where this event\n // was fired (rowClicked and rowDoubleClicked). it doesn't make sense for any\n // users to be using this, as the rowComp isn't an object we expose, so would be\n // very surprising if a user was using it.\n event.source = this;\n return event;\n };\n RowComp.prototype.onRowDblClick = function (mouseEvent) {\n if (_.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_DOUBLE_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n };\n RowComp.prototype.onRowClick = function (mouseEvent) {\n var stop = _.isStopPropagationForAgGrid(mouseEvent);\n if (stop) {\n return;\n }\n var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n // ctrlKey for windows, metaKey for Apple\n var multiSelectKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n var shiftKeyPressed = mouseEvent.shiftKey;\n if (\n // we do not allow selecting groups by clicking (as the click here expands the group), or if it's a detail row,\n // so return if it's a group row\n this.rowNode.group ||\n // this is needed so we don't unselect other rows when we click this row, eg if this row is not selectable,\n // and we click it, the selection should not change (ie any currently selected row should stay selected)\n !this.rowNode.selectable ||\n // we also don't allow selection of pinned rows\n this.rowNode.rowPinned ||\n // if no selection method enabled, do nothing\n !this.beans.gridOptionsWrapper.isRowSelection() ||\n // if click selection suppressed, do nothing\n this.beans.gridOptionsWrapper.isSuppressRowClickSelection()) {\n return;\n }\n var multiSelectOnClick = this.beans.gridOptionsWrapper.isRowMultiSelectWithClick();\n var rowDeselectionWithCtrl = this.beans.gridOptionsWrapper.isRowDeselection();\n if (this.rowNode.isSelected()) {\n if (multiSelectOnClick) {\n this.rowNode.setSelectedParams({ newValue: false });\n }\n else if (multiSelectKeyPressed) {\n if (rowDeselectionWithCtrl) {\n this.rowNode.setSelectedParams({ newValue: false });\n }\n }\n else {\n // selected with no multi key, must make sure anything else is unselected\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: true });\n }\n }\n else {\n var clearSelection = multiSelectOnClick ? false : !multiSelectKeyPressed;\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: clearSelection, rangeSelect: shiftKeyPressed });\n }\n };\n RowComp.prototype.createFullWidthRowContainer = function (rowContainerComp, pinned, extraCssClass, cellRendererType, cellRendererName, eRowCallback, cellRendererCallback) {\n var _this = this;\n var rowTemplate = this.createTemplate('', extraCssClass);\n rowContainerComp.appendRowTemplate(rowTemplate, function () {\n var eRow = rowContainerComp.getRowElement(_this.getCompId());\n var params = _this.createFullWidthParams(eRow, pinned);\n var callback = function (cellRenderer) {\n if (_this.isAlive()) {\n var gui = cellRenderer.getGui();\n eRow.appendChild(gui);\n cellRendererCallback(cellRenderer);\n }\n else {\n if (cellRenderer.destroy) {\n cellRenderer.destroy();\n }\n }\n };\n // if doing master detail, it's possible we have a cached row comp from last time detail was displayed\n var cachedRowComp = _this.beans.detailRowCompCache.get(_this.rowNode, pinned);\n if (cachedRowComp) {\n callback(cachedRowComp);\n }\n else {\n var res = _this.beans.userComponentFactory.newFullWidthCellRenderer(params, cellRendererType, cellRendererName);\n if (!res) {\n var masterDetailModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.MasterDetailModule);\n if (cellRendererName === 'agDetailCellRenderer' && !masterDetailModuleLoaded) {\n console.warn(\"ag-Grid: cell renderer agDetailCellRenderer (for master detail) not found. Did you forget to include the master detail module?\");\n }\n else {\n console.error(\"ag-Grid: fullWidthCellRenderer \" + cellRendererName + \" not found\");\n }\n return;\n }\n res.then(callback);\n }\n _this.afterRowAttached(rowContainerComp, eRow);\n eRowCallback(eRow);\n _this.angular1Compile(eRow);\n });\n };\n RowComp.prototype.angular1Compile = function (element) {\n if (!this.scope) {\n return;\n }\n this.beans.$compile(element)(this.scope);\n };\n RowComp.prototype.createFullWidthParams = function (eRow, pinned) {\n var params = {\n fullWidth: true,\n data: this.rowNode.data,\n node: this.rowNode,\n value: this.rowNode.key,\n $scope: this.scope ? this.scope : this.parentScope,\n $compile: this.beans.$compile,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n // these need to be taken out, as part of 'afterAttached' now\n eGridCell: eRow,\n eParentOfValue: eRow,\n pinned: pinned,\n addRenderedRowListener: this.addEventListener.bind(this)\n };\n return params;\n };\n RowComp.prototype.getInitialRowClasses = function (extraCssClass) {\n var classes = [];\n var isTreeData = this.beans.gridOptionsWrapper.isTreeData();\n var rowNode = this.rowNode;\n if (_.exists(extraCssClass)) {\n classes.push(extraCssClass);\n }\n classes.push('ag-row');\n classes.push(this.rowFocused ? 'ag-row-focus' : 'ag-row-no-focus');\n if (this.fadeRowIn) {\n classes.push('ag-opacity-zero');\n }\n classes.push(this.rowIsEven ? 'ag-row-even' : 'ag-row-odd');\n if (rowNode.isSelected()) {\n classes.push('ag-row-selected');\n }\n if (rowNode.group) {\n classes.push('ag-row-group');\n // if a group, put the level of the group in\n classes.push('ag-row-level-' + rowNode.level);\n if (rowNode.footer) {\n classes.push('ag-row-footer');\n }\n }\n else {\n // if a leaf, and a parent exists, put a level of the parent, else put level of 0 for top level item\n classes.push('ag-row-level-' + (rowNode.parent ? (rowNode.parent.level + 1) : '0'));\n }\n if (rowNode.stub) {\n classes.push('ag-row-stub');\n }\n if (this.fullWidthRow) {\n classes.push('ag-full-width-row');\n }\n var addExpandedClass = isTreeData ?\n // if doing tree data, we add the expanded classes if any children, as any node can be a parent\n rowNode.allChildrenCount :\n // if normal row grouping, we add expanded classes to groups only\n rowNode.group && !rowNode.footer;\n if (addExpandedClass) {\n classes.push(rowNode.expanded ? 'ag-row-group-expanded' : 'ag-row-group-contracted');\n }\n if (rowNode.dragging) {\n classes.push('ag-row-dragging');\n }\n _.pushAll(classes, this.processClassesFromGridOptions());\n _.pushAll(classes, this.preProcessRowClassRules());\n // we use absolute position unless we are doing print layout\n classes.push(this.printLayout ? 'ag-row-position-relative' : 'ag-row-position-absolute');\n this.firstRowOnPage = this.isFirstRowOnPage();\n this.lastRowOnPage = this.isLastRowOnPage();\n if (this.firstRowOnPage) {\n classes.push('ag-row-first');\n }\n if (this.lastRowOnPage) {\n classes.push('ag-row-last');\n }\n return classes;\n };\n RowComp.prototype.isFirstRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageFirstRow();\n };\n RowComp.prototype.isLastRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageLastRow();\n };\n RowComp.prototype.onModelUpdated = function () {\n var newFirst = this.isFirstRowOnPage();\n var newLast = this.isLastRowOnPage();\n if (this.firstRowOnPage !== newFirst) {\n this.firstRowOnPage = newFirst;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-first', newFirst); });\n }\n if (this.lastRowOnPage !== newLast) {\n this.lastRowOnPage = newLast;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-last', newLast); });\n }\n };\n RowComp.prototype.preProcessRowClassRules = function () {\n var res = [];\n this.processRowClassRules(function (className) {\n res.push(className);\n }, function (className) {\n // not catered for, if creating, no need\n // to remove class as it was never there\n });\n return res;\n };\n RowComp.prototype.processRowClassRules = function (onApplicableClass, onNotApplicableClass) {\n this.beans.stylingService.processClassRules(this.beans.gridOptionsWrapper.rowClassRules(), {\n value: undefined,\n colDef: undefined,\n data: this.rowNode.data,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass, onNotApplicableClass);\n };\n RowComp.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.forEachCellComp(function (renderedCell) {\n renderedCell.stopEditing(cancel);\n });\n if (!this.editingRow) {\n return;\n }\n if (!cancel) {\n var event_1 = this.createRowEvent(Events.EVENT_ROW_VALUE_CHANGED);\n this.beans.eventService.dispatchEvent(event_1);\n }\n this.setEditingRow(false);\n };\n RowComp.prototype.setEditingRow = function (value) {\n this.editingRow = value;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-editing', value); });\n var event = value ?\n this.createRowEvent(Events.EVENT_ROW_EDITING_STARTED)\n : this.createRowEvent(Events.EVENT_ROW_EDITING_STOPPED);\n this.beans.eventService.dispatchEvent(event);\n };\n RowComp.prototype.startRowEditing = function (keyPress, charPress, sourceRenderedCell) {\n if (keyPress === void 0) { keyPress = null; }\n if (charPress === void 0) { charPress = null; }\n if (sourceRenderedCell === void 0) { sourceRenderedCell = null; }\n // don't do it if already editing\n if (this.editingRow) {\n return;\n }\n this.forEachCellComp(function (renderedCell) {\n var cellStartedEdit = renderedCell === sourceRenderedCell;\n if (cellStartedEdit) {\n renderedCell.startEditingIfEnabled(keyPress, charPress, cellStartedEdit);\n }\n else {\n renderedCell.startEditingIfEnabled(null, null, cellStartedEdit);\n }\n });\n this.setEditingRow(true);\n };\n RowComp.prototype.forEachCellComp = function (callback) {\n _.iterateObject(this.cellComps, function (key, cellComp) {\n if (!cellComp) {\n return;\n }\n callback(cellComp);\n });\n };\n RowComp.prototype.postProcessClassesFromGridOptions = function () {\n var _this = this;\n var cssClasses = this.processClassesFromGridOptions();\n if (!cssClasses || !cssClasses.length) {\n return;\n }\n cssClasses.forEach(function (classStr) {\n _this.eAllRowContainers.forEach(function (row) { return _.addCssClass(row, classStr); });\n });\n };\n RowComp.prototype.postProcessRowClassRules = function () {\n var _this = this;\n this.processRowClassRules(function (className) {\n _this.eAllRowContainers.forEach(function (row) { return _.addCssClass(row, className); });\n }, function (className) {\n _this.eAllRowContainers.forEach(function (row) { return _.removeCssClass(row, className); });\n });\n };\n RowComp.prototype.processClassesFromGridOptions = function () {\n var res = [];\n var process = function (rowCls) {\n if (typeof rowCls === 'string') {\n res.push(rowCls);\n }\n else if (Array.isArray(rowCls)) {\n rowCls.forEach(function (e) { return res.push(e); });\n }\n };\n // part 1 - rowClass\n var rowClass = this.beans.gridOptionsWrapper.getRowClass();\n if (rowClass) {\n if (typeof rowClass === 'function') {\n console.warn('ag-Grid: rowClass should not be a function, please use getRowClass instead');\n return;\n }\n process(rowClass);\n }\n // part 2 - rowClassFunc\n var rowClassFunc = this.beans.gridOptionsWrapper.getRowClassFunc();\n if (rowClassFunc) {\n var params = {\n node: this.rowNode,\n data: this.rowNode.data,\n rowIndex: this.rowNode.rowIndex,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi()\n };\n var rowClassFuncResult = rowClassFunc(params);\n process(rowClassFuncResult);\n }\n return res;\n };\n RowComp.prototype.preProcessStylesFromGridOptions = function () {\n var rowStyles = this.processStylesFromGridOptions();\n return _.cssStyleObjectToMarkup(rowStyles);\n };\n RowComp.prototype.postProcessStylesFromGridOptions = function () {\n var rowStyles = this.processStylesFromGridOptions();\n this.eAllRowContainers.forEach(function (row) { return _.addStylesToElement(row, rowStyles); });\n };\n RowComp.prototype.processStylesFromGridOptions = function () {\n // part 1 - rowStyle\n var rowStyle = this.beans.gridOptionsWrapper.getRowStyle();\n if (rowStyle && typeof rowStyle === 'function') {\n console.warn('ag-Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead');\n return;\n }\n // part 1 - rowStyleFunc\n var rowStyleFunc = this.beans.gridOptionsWrapper.getRowStyleFunc();\n var rowStyleFuncResult;\n if (rowStyleFunc) {\n var params = {\n data: this.rowNode.data,\n node: this.rowNode,\n api: this.beans.gridOptionsWrapper.getApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n $scope: this.scope\n };\n rowStyleFuncResult = rowStyleFunc(params);\n }\n return _.assign({}, rowStyle, rowStyleFuncResult);\n };\n RowComp.prototype.createCells = function (cols) {\n var _this = this;\n var templateParts = [];\n var newCellComps = [];\n cols.forEach(function (col) {\n var newCellComp = new CellComp(_this.scope, _this.beans, col, _this.rowNode, _this, false, _this.printLayout);\n var cellTemplate = newCellComp.getCreateTemplate();\n templateParts.push(cellTemplate);\n newCellComps.push(newCellComp);\n _this.cellComps[col.getId()] = newCellComp;\n });\n var templateAndComps = {\n template: templateParts.join(''),\n cellComps: newCellComps\n };\n return templateAndComps;\n };\n RowComp.prototype.onRowSelected = function () {\n var selected = this.rowNode.isSelected();\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-selected', selected); });\n };\n // called:\n // + after row created for first time\n // + after horizontal scroll, so new cells due to column virtualisation\n RowComp.prototype.callAfterRowAttachedOnCells = function (newCellComps, eRow) {\n var _this = this;\n newCellComps.forEach(function (cellComp) {\n cellComp.setParentRow(eRow);\n cellComp.afterAttached();\n // if we are editing the row, then the cell needs to turn\n // into edit mode\n if (_this.editingRow) {\n cellComp.startEditingIfEnabled();\n }\n });\n };\n RowComp.prototype.afterRowAttached = function (rowContainerComp, eRow) {\n var _this = this;\n this.addDomData(eRow);\n this.removeSecondPassFuncs.push(function () {\n rowContainerComp.removeRowElement(eRow);\n });\n this.removeFirstPassFuncs.push(function () {\n if (_.exists(_this.rowNode.rowTop)) {\n // the row top is updated anyway, however we set it here again\n // to something more reasonable for the animation - ie if the\n // row top is 10000px away, the row will flash out, so this\n // gives it a rounded value, so row animates out more slowly\n var rowTop = _this.roundRowTopToBounds(_this.rowNode.rowTop);\n _this.setRowTop(rowTop);\n }\n else {\n _.addCssClass(eRow, 'ag-opacity-zero');\n }\n });\n this.eAllRowContainers.push(eRow);\n // adding hover functionality adds listener to this row, so we\n // do it lazily in an animation frame\n if (this.useAnimationFrameForCreate) {\n this.beans.taskQueue.createTask(this.addHoverFunctionality.bind(this, eRow), this.rowNode.rowIndex, 'createTasksP2');\n }\n else {\n this.addHoverFunctionality(eRow);\n }\n };\n RowComp.prototype.addHoverFunctionality = function (eRow) {\n var _this = this;\n // because we use animation frames to do this, it's possible the row no longer exists\n // by the time we get to add it\n if (!this.active) {\n return;\n }\n // because mouseenter and mouseleave do not propagate, we cannot listen on the gridPanel\n // like we do for all the other mouse events.\n // because of the pinning, we cannot simply add / remove the class based on the eRow. we\n // have to check all eRow's (body & pinned). so the trick is if any of the rows gets a\n // mouse hover, it sets such in the rowNode, and then all three reflect the change as\n // all are listening for event on the row node.\n // step 1 - add listener, to set flag on row node\n this.addDestroyableEventListener(eRow, 'mouseenter', function () { return _this.rowNode.onMouseEnter(); });\n this.addDestroyableEventListener(eRow, 'mouseleave', function () { return _this.rowNode.onMouseLeave(); });\n // step 2 - listen for changes on row node (which any eRow can trigger)\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_MOUSE_ENTER, function () {\n // if hover turned off, we don't add the class. we do this here so that if the application\n // toggles this property mid way, we remove the hover form the last row, but we stop\n // adding hovers from that point onwards.\n if (!_this.beans.gridOptionsWrapper.isSuppressRowHoverHighlight()) {\n _.addCssClass(eRow, 'ag-row-hover');\n }\n });\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_MOUSE_LEAVE, function () {\n _.removeCssClass(eRow, 'ag-row-hover');\n });\n };\n // for animation, we don't want to animate entry or exit to a very far away pixel,\n // otherwise the row would move so fast, it would appear to disappear. so this method\n // moves the row closer to the viewport if it is far away, so the row slide in / out\n // at a speed the user can see.\n RowComp.prototype.roundRowTopToBounds = function (rowTop) {\n var range = this.beans.gridPanel.getVScrollPosition();\n var minPixel = this.applyPaginationOffset(range.top, true) - 100;\n var maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;\n return Math.min(Math.max(minPixel, rowTop), maxPixel);\n };\n RowComp.prototype.getFrameworkOverrides = function () {\n return this.beans.frameworkOverrides;\n };\n RowComp.prototype.onRowHeightChanged = function () {\n // check for exists first - if the user is resetting the row height, then\n // it will be null (or undefined) momentarily until the next time the flatten\n // stage is called where the row will then update again with a new height\n if (_.exists(this.rowNode.rowHeight)) {\n var heightPx_1 = this.rowNode.rowHeight + \"px\";\n this.eAllRowContainers.forEach(function (row) { return row.style.height = heightPx_1; });\n }\n };\n RowComp.prototype.addEventListener = function (eventType, listener) {\n if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n eventType = Events.EVENT_VIRTUAL_ROW_REMOVED;\n console.warn('ag-Grid: Since version 11, event renderedRowRemoved is now called ' + Events.EVENT_VIRTUAL_ROW_REMOVED);\n }\n _super.prototype.addEventListener.call(this, eventType, listener);\n };\n RowComp.prototype.removeEventListener = function (eventType, listener) {\n if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n eventType = Events.EVENT_VIRTUAL_ROW_REMOVED;\n console.warn('ag-Grid: Since version 11, event renderedRowRemoved and rowRemoved is now called ' + Events.EVENT_VIRTUAL_ROW_REMOVED);\n }\n _super.prototype.removeEventListener.call(this, eventType, listener);\n };\n RowComp.prototype.destroy = function (animate) {\n if (animate === void 0) { animate = false; }\n _super.prototype.destroy.call(this);\n this.active = false;\n // why do we have this method? shouldn't everything below be added as a destroy func beside\n // the corresponding create logic?\n this.destroyFullWidthComponents();\n if (animate) {\n this.removeFirstPassFuncs.forEach(function (func) { return func(); });\n this.removeSecondPassFuncs.push(this.destroyContainingCells.bind(this));\n }\n else {\n this.destroyContainingCells();\n // we are not animating, so execute the second stage of removal now.\n // we call getAndClear, so that they are only called once\n var delayedDestroyFunctions = this.getAndClearDelayedDestroyFunctions();\n delayedDestroyFunctions.forEach(function (func) { return func(); });\n }\n var event = this.createRowEvent(Events.EVENT_VIRTUAL_ROW_REMOVED);\n this.dispatchEvent(event);\n this.beans.eventService.dispatchEvent(event);\n };\n RowComp.prototype.destroyContainingCells = function () {\n this.forEachCellComp(function (renderedCell) { return renderedCell.destroy(); });\n this.destroyFullWidthComponents();\n };\n // we clear so that the functions are never executed twice\n RowComp.prototype.getAndClearDelayedDestroyFunctions = function () {\n var result = this.removeSecondPassFuncs;\n this.removeSecondPassFuncs = [];\n return result;\n };\n RowComp.prototype.onCellFocusChanged = function () {\n var rowFocused = this.beans.focusedCellController.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n if (rowFocused !== this.rowFocused) {\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-focus', rowFocused); });\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-no-focus', !rowFocused); });\n this.rowFocused = rowFocused;\n }\n // if we are editing, then moving the focus out of a row will stop editing\n if (!rowFocused && this.editingRow) {\n this.stopEditing(false);\n }\n };\n RowComp.prototype.onPaginationChanged = function () {\n var currentPage = this.beans.paginationProxy.getCurrentPage();\n // it is possible this row is in the new page, but the page number has changed, which means\n // it needs to reposition itself relative to the new page\n if (this.paginationPage !== currentPage) {\n this.paginationPage = currentPage;\n this.onTopChanged();\n }\n };\n RowComp.prototype.onTopChanged = function () {\n this.setRowTop(this.rowNode.rowTop);\n };\n // applies pagination offset, eg if on second page, and page height is 500px, then removes\n // 500px from the top position, so a row with rowTop 600px is displayed at location 100px.\n // reverse will take the offset away rather than add.\n RowComp.prototype.applyPaginationOffset = function (topPx, reverse) {\n if (reverse === void 0) { reverse = false; }\n if (this.rowNode.isRowPinned()) {\n return topPx;\n }\n var pixelOffset = this.beans.paginationProxy.getPixelOffset();\n var multiplier = reverse ? 1 : -1;\n return topPx + (pixelOffset * multiplier);\n };\n RowComp.prototype.setRowTop = function (pixels) {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return;\n }\n // need to make sure rowTop is not null, as this can happen if the node was once\n // visible (ie parent group was expanded) but is now not visible\n if (_.exists(pixels)) {\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n var afterScalingPixels = this.beans.maxDivHeightScaler.getRealPixelPosition(afterPaginationPixels);\n var topPx_1 = afterScalingPixels + \"px\";\n if (this.beans.gridOptionsWrapper.isSuppressRowTransform()) {\n this.eAllRowContainers.forEach(function (row) { return row.style.top = topPx_1; });\n }\n else {\n this.eAllRowContainers.forEach(function (row) { return row.style.transform = \"translateY(\" + topPx_1 + \")\"; });\n }\n }\n };\n // we clear so that the functions are never executed twice\n RowComp.prototype.getAndClearNextVMTurnFunctions = function () {\n var result = this.createSecondPassFuncs;\n this.createSecondPassFuncs = [];\n return result;\n };\n RowComp.prototype.getRowNode = function () {\n return this.rowNode;\n };\n RowComp.prototype.getRenderedCellForColumn = function (column) {\n var _this = this;\n var cellComp = this.cellComps[column.getColId()];\n if (cellComp) {\n return cellComp;\n }\n var spanList = Object.keys(this.cellComps)\n .map(function (name) { return _this.cellComps[name]; })\n .filter(function (cmp) { return cmp && cmp.getColSpanningList().indexOf(column) !== -1; });\n return spanList.length ? spanList[0] : undefined;\n };\n RowComp.prototype.onRowIndexChanged = function () {\n this.onCellFocusChanged();\n this.updateRowIndexes();\n };\n RowComp.prototype.updateRowIndexes = function () {\n var _this = this;\n var rowIndexStr = this.rowNode.getRowIndexString();\n var rowIsEven = this.rowNode.rowIndex % 2 === 0;\n var rowIsEvenChanged = this.rowIsEven !== rowIsEven;\n var headerRowCount = this.beans.gridPanel.headerRootComp.getHeaderRowCount();\n if (rowIsEvenChanged) {\n this.rowIsEven = rowIsEven;\n }\n this.eAllRowContainers.forEach(function (eRow) {\n eRow.setAttribute('row-index', rowIndexStr);\n eRow.setAttribute('aria-rowindex', (headerRowCount + _this.rowNode.rowIndex + 1).toString());\n if (!rowIsEvenChanged) {\n return;\n }\n _.addOrRemoveCssClass(eRow, 'ag-row-even', rowIsEven);\n _.addOrRemoveCssClass(eRow, 'ag-row-odd', !rowIsEven);\n });\n };\n RowComp.prototype.ensureDomOrder = function () {\n var sides = [\n {\n el: this.getBodyRowElement(),\n ct: this.bodyContainerComp\n },\n {\n el: this.getPinnedLeftRowElement(),\n ct: this.pinnedLeftContainerComp\n }, {\n el: this.getPinnedRightRowElement(),\n ct: this.pinnedRightContainerComp\n }, {\n el: this.getFullWidthRowElement(),\n ct: this.fullWidthContainerComp\n }\n ];\n sides.forEach(function (side) {\n if (!side.el) {\n return;\n }\n side.ct.ensureDomOrder(side.el);\n });\n };\n // returns the pinned left container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getPinnedLeftRowElement = function () {\n return this.ePinnedLeftRow ? this.ePinnedLeftRow : this.eFullWidthRowLeft;\n };\n // returns the pinned right container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getPinnedRightRowElement = function () {\n return this.ePinnedRightRow ? this.ePinnedRightRow : this.eFullWidthRowRight;\n };\n // returns the body container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getBodyRowElement = function () {\n return this.eBodyRow ? this.eBodyRow : this.eFullWidthRowBody;\n };\n // returns the full width container\n RowComp.prototype.getFullWidthRowElement = function () {\n return this.eFullWidthRow;\n };\n RowComp.DOM_DATA_KEY_RENDERED_ROW = 'renderedRow';\n RowComp.FULL_WIDTH_CELL_RENDERER = 'fullWidthCellRenderer';\n RowComp.GROUP_ROW_RENDERER = 'groupRowRenderer';\n RowComp.GROUP_ROW_RENDERER_COMP_NAME = 'agGroupRowRenderer';\n RowComp.LOADING_CELL_RENDERER = 'loadingCellRenderer';\n RowComp.LOADING_CELL_RENDERER_COMP_NAME = 'agLoadingCellRenderer';\n RowComp.DETAIL_CELL_RENDERER = 'detailCellRenderer';\n RowComp.DETAIL_CELL_RENDERER_COMP_NAME = 'agDetailCellRenderer';\n return RowComp;\n}(Component));\nexport { RowComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _ } from \"../../utils\";\nimport { RowNode } from \"../../entities/rowNode\";\nimport { BeanStub } from \"../../context/beanStub\";\nvar RowNodeBlock = /** @class */ (function (_super) {\n __extends(RowNodeBlock, _super);\n function RowNodeBlock(blockNumber, rowNodeCacheParams) {\n var _this = _super.call(this) || this;\n _this.version = 0;\n _this.state = RowNodeBlock.STATE_DIRTY;\n _this.rowNodeCacheParams = rowNodeCacheParams;\n _this.blockNumber = blockNumber;\n // we don't need to calculate these now, as the inputs don't change,\n // however it makes the code easier to read if we work them out up front\n _this.startRow = blockNumber * rowNodeCacheParams.blockSize;\n _this.endRow = _this.startRow + rowNodeCacheParams.blockSize;\n return _this;\n }\n RowNodeBlock.prototype.isAnyNodeOpen = function (rowCount) {\n var result = false;\n this.forEachNodeCallback(function (rowNode) {\n if (rowNode.expanded) {\n result = true;\n }\n }, rowCount);\n return result;\n };\n RowNodeBlock.prototype.forEachNodeCallback = function (callback, rowCount) {\n for (var rowIndex = this.startRow; rowIndex < this.endRow; rowIndex++) {\n // we check against rowCount as this page may be the last one, and if it is, then\n // the last rows are not part of the set\n if (rowIndex < rowCount) {\n var rowNode = this.getRowUsingLocalIndex(rowIndex);\n callback(rowNode, rowIndex);\n }\n }\n };\n RowNodeBlock.prototype.forEachNode = function (callback, sequence, rowCount, deep) {\n this.forEachNodeCallback(function (rowNode) {\n callback(rowNode, sequence.next());\n // this will only every happen for server side row model, as infinite\n // row model doesn't have groups\n if (deep && rowNode.childrenCache) {\n rowNode.childrenCache.forEachNodeDeep(callback, sequence);\n }\n }, rowCount);\n };\n RowNodeBlock.prototype.forEachNodeDeep = function (callback, sequence, rowCount) {\n this.forEachNode(callback, sequence, rowCount, true);\n };\n RowNodeBlock.prototype.forEachNodeShallow = function (callback, sequence, rowCount) {\n this.forEachNode(callback, sequence, rowCount, false);\n };\n RowNodeBlock.prototype.getVersion = function () {\n return this.version;\n };\n RowNodeBlock.prototype.getLastAccessed = function () {\n return this.lastAccessed;\n };\n RowNodeBlock.prototype.getRowUsingLocalIndex = function (rowIndex, dontTouchLastAccessed) {\n if (dontTouchLastAccessed === void 0) { dontTouchLastAccessed = false; }\n if (!dontTouchLastAccessed) {\n this.lastAccessed = this.rowNodeCacheParams.lastAccessedSequence.next();\n }\n var localIndex = rowIndex - this.startRow;\n return this.rowNodes[localIndex];\n };\n RowNodeBlock.prototype.init = function (beans) {\n this.beans = beans;\n this.createRowNodes();\n };\n RowNodeBlock.prototype.getStartRow = function () {\n return this.startRow;\n };\n RowNodeBlock.prototype.getEndRow = function () {\n return this.endRow;\n };\n RowNodeBlock.prototype.getBlockNumber = function () {\n return this.blockNumber;\n };\n RowNodeBlock.prototype.setDirty = function () {\n // in case any current loads in progress, this will have their results ignored\n this.version++;\n this.state = RowNodeBlock.STATE_DIRTY;\n };\n RowNodeBlock.prototype.setDirtyAndPurge = function () {\n this.setDirty();\n this.rowNodes.forEach(function (rowNode) {\n rowNode.setData(null);\n });\n };\n RowNodeBlock.prototype.getState = function () {\n return this.state;\n };\n RowNodeBlock.prototype.setRowNode = function (rowIndex, rowNode) {\n var localIndex = rowIndex - this.startRow;\n this.rowNodes[localIndex] = rowNode;\n };\n RowNodeBlock.prototype.setBlankRowNode = function (rowIndex) {\n var localIndex = rowIndex - this.startRow;\n var newRowNode = this.createBlankRowNode(rowIndex);\n this.rowNodes[localIndex] = newRowNode;\n return newRowNode;\n };\n RowNodeBlock.prototype.setNewData = function (rowIndex, dataItem) {\n var newRowNode = this.setBlankRowNode(rowIndex);\n this.setDataAndId(newRowNode, dataItem, this.startRow + rowIndex);\n return newRowNode;\n };\n RowNodeBlock.prototype.createBlankRowNode = function (rowIndex) {\n var rowNode = new RowNode();\n this.beans.context.wireBean(rowNode);\n rowNode.setRowHeight(this.rowNodeCacheParams.rowHeight);\n return rowNode;\n };\n // creates empty row nodes, data is missing as not loaded yet\n RowNodeBlock.prototype.createRowNodes = function () {\n this.rowNodes = [];\n for (var i = 0; i < this.rowNodeCacheParams.blockSize; i++) {\n var rowIndex = this.startRow + i;\n var rowNode = this.createBlankRowNode(rowIndex);\n this.rowNodes.push(rowNode);\n }\n };\n RowNodeBlock.prototype.load = function () {\n this.state = RowNodeBlock.STATE_LOADING;\n this.loadFromDatasource();\n };\n RowNodeBlock.prototype.pageLoadFailed = function () {\n this.state = RowNodeBlock.STATE_FAILED;\n var event = {\n type: RowNodeBlock.EVENT_LOAD_COMPLETE,\n success: false,\n page: this,\n lastRow: null\n };\n this.dispatchEvent(event);\n };\n RowNodeBlock.prototype.populateWithRowData = function (rows) {\n var _this = this;\n var rowNodesToRefresh = [];\n this.rowNodes.forEach(function (rowNode, index) {\n var data = rows[index];\n if (rowNode.stub) {\n rowNodesToRefresh.push(rowNode);\n }\n _this.setDataAndId(rowNode, data, _this.startRow + index);\n });\n if (rowNodesToRefresh.length > 0) {\n this.beans.rowRenderer.redrawRows(rowNodesToRefresh);\n }\n };\n RowNodeBlock.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.rowNodes.forEach(function (rowNode) {\n if (rowNode.childrenCache) {\n rowNode.childrenCache.destroy();\n rowNode.childrenCache = null;\n }\n // this is needed, so row render knows to fade out the row, otherwise it\n // sees row top is present, and thinks the row should be shown. maybe\n // rowNode should have a flag on whether it is visible???\n rowNode.clearRowTop();\n });\n };\n RowNodeBlock.prototype.pageLoaded = function (version, rows, lastRow) {\n // we need to check the version, in case there was an old request\n // from the server that was sent before we refreshed the cache,\n // if the load was done as a result of a cache refresh\n if (version === this.version) {\n this.state = RowNodeBlock.STATE_LOADED;\n this.populateWithRowData(rows);\n }\n lastRow = _.cleanNumber(lastRow);\n // check here if lastRow should be set\n var event = {\n type: RowNodeBlock.EVENT_LOAD_COMPLETE,\n success: true,\n page: this,\n lastRow: lastRow\n };\n this.dispatchEvent(event);\n };\n RowNodeBlock.EVENT_LOAD_COMPLETE = 'loadComplete';\n RowNodeBlock.STATE_DIRTY = 'dirty';\n RowNodeBlock.STATE_LOADING = 'loading';\n RowNodeBlock.STATE_LOADED = 'loaded';\n RowNodeBlock.STATE_FAILED = 'failed';\n return RowNodeBlock;\n}(BeanStub));\nexport { RowNodeBlock };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from '../widgets/component';\nimport { RowNode } from '../entities/rowNode';\nimport { Autowired } from '../context/context';\nimport { Events } from '../events';\nimport { _ } from '../utils';\nvar CheckboxSelectionComponent = /** @class */ (function (_super) {\n __extends(CheckboxSelectionComponent, _super);\n function CheckboxSelectionComponent() {\n return _super.call(this, \"\") || this;\n }\n CheckboxSelectionComponent.prototype.createAndAddIcons = function () {\n var element = this.getGui();\n if (this.gridOptionsWrapper.useNativeCheckboxes()) {\n this.checkbox = document.createElement('input');\n this.checkbox.type = 'checkbox';\n element.appendChild(this.checkbox);\n }\n else {\n this.eCheckedIcon = _.createIconNoSpan('checkboxChecked', this.gridOptionsWrapper, this.column);\n this.eUncheckedIcon = _.createIconNoSpan('checkboxUnchecked', this.gridOptionsWrapper, this.column);\n this.eIndeterminateIcon = _.createIconNoSpan('checkboxIndeterminate', this.gridOptionsWrapper, this.column);\n element.appendChild(this.eCheckedIcon);\n element.appendChild(this.eUncheckedIcon);\n element.appendChild(this.eIndeterminateIcon);\n }\n };\n CheckboxSelectionComponent.prototype.onDataChanged = function () {\n // when rows are loaded for the second time, this can impact the selection, as a row\n // could be loaded as already selected (if user scrolls down, and then up again).\n this.onSelectionChanged();\n };\n CheckboxSelectionComponent.prototype.onSelectableChanged = function () {\n this.showOrHideSelect();\n };\n CheckboxSelectionComponent.prototype.onSelectionChanged = function () {\n var state = this.rowNode.isSelected();\n if (this.gridOptionsWrapper.useNativeCheckboxes()) {\n this.checkbox.checked = state === true;\n this.checkbox.indeterminate = typeof state !== 'boolean';\n }\n else {\n _.setDisplayed(this.eCheckedIcon, state === true);\n _.setDisplayed(this.eUncheckedIcon, state === false);\n _.setDisplayed(this.eIndeterminateIcon, typeof state !== 'boolean');\n }\n };\n CheckboxSelectionComponent.prototype.onCheckedClicked = function () {\n var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();\n var updatedCount = this.rowNode.setSelectedParams({ newValue: false, groupSelectsFiltered: groupSelectsFiltered });\n return updatedCount;\n };\n CheckboxSelectionComponent.prototype.onUncheckedClicked = function (event) {\n var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();\n var updatedCount = this.rowNode.setSelectedParams({ newValue: true, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered });\n return updatedCount;\n };\n CheckboxSelectionComponent.prototype.onIndeterminateClicked = function (event) {\n var result = this.onUncheckedClicked(event);\n if (result === 0) {\n this.onCheckedClicked();\n }\n };\n CheckboxSelectionComponent.prototype.onCheckboxClicked = function (event) {\n if (this.checkbox.checked) {\n this.onUncheckedClicked(event);\n }\n else {\n this.onCheckedClicked();\n }\n };\n CheckboxSelectionComponent.prototype.init = function (params) {\n this.rowNode = params.rowNode;\n this.column = params.column;\n this.createAndAddIcons();\n this.onSelectionChanged();\n // we don't want the row clicked event to fire when selecting the checkbox, otherwise the row\n // would possibly get selected twice\n this.addGuiEventListener('click', function (event) { return _.stopPropagationForAgGrid(event); });\n // likewise we don't want double click on this icon to open a group\n this.addGuiEventListener('dblclick', function (event) { return _.stopPropagationForAgGrid(event); });\n if (this.gridOptionsWrapper.useNativeCheckboxes()) {\n this.addDestroyableEventListener(this.checkbox, 'click', this.onCheckboxClicked.bind(this));\n }\n else {\n this.addDestroyableEventListener(this.eCheckedIcon, 'click', this.onCheckedClicked.bind(this));\n this.addDestroyableEventListener(this.eUncheckedIcon, 'click', this.onUncheckedClicked.bind(this));\n this.addDestroyableEventListener(this.eIndeterminateIcon, 'click', this.onIndeterminateClicked.bind(this));\n }\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, this.onSelectionChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onDataChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_SELECTABLE_CHANGED, this.onSelectableChanged.bind(this));\n this.isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n var checkboxVisibleIsDynamic = this.isRowSelectableFunc || this.checkboxCallbackExists();\n if (checkboxVisibleIsDynamic) {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelect.bind(this));\n this.showOrHideSelect();\n }\n };\n CheckboxSelectionComponent.prototype.showOrHideSelect = function () {\n // if the isRowSelectable() is not provided the row node is selectable by default\n var selectable = this.rowNode.selectable;\n // checkboxSelection callback is deemed a legacy solution however we will still consider it's result.\n // If selectable, then also check the colDef callback. if not selectable, this it short circuits - no need\n // to call the colDef callback.\n if (selectable && this.checkboxCallbackExists()) {\n selectable = this.column.isCellCheckboxSelection(this.rowNode);\n }\n // show checkbox if both conditions are true\n this.setDisplayed(selectable);\n };\n CheckboxSelectionComponent.prototype.checkboxCallbackExists = function () {\n // column will be missing if groupUseEntireRow=true\n var colDef = this.column ? this.column.getColDef() : null;\n return colDef && typeof colDef.checkboxSelection === 'function';\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], CheckboxSelectionComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], CheckboxSelectionComponent.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], CheckboxSelectionComponent.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], CheckboxSelectionComponent.prototype, \"columnApi\", void 0);\n return CheckboxSelectionComponent;\n}(Component));\nexport { CheckboxSelectionComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../../widgets/component\";\nimport { _ } from \"../../utils\";\nimport { Autowired } from \"../../context/context\";\nvar ARROW_UP = '\\u2191';\nvar ARROW_DOWN = '\\u2193';\nvar AnimateShowChangeCellRenderer = /** @class */ (function (_super) {\n __extends(AnimateShowChangeCellRenderer, _super);\n function AnimateShowChangeCellRenderer() {\n var _this = _super.call(this, AnimateShowChangeCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n return _this;\n }\n AnimateShowChangeCellRenderer.prototype.init = function (params) {\n // this.params = params;\n this.eValue = this.queryForHtmlElement('.ag-value-change-value');\n this.eDelta = this.queryForHtmlElement('.ag-value-change-delta');\n this.refresh(params);\n };\n AnimateShowChangeCellRenderer.prototype.showDelta = function (params, delta) {\n var absDelta = Math.abs(delta);\n var valueFormatted = params.formatValue(absDelta);\n var valueToUse = _.exists(valueFormatted) ? valueFormatted : absDelta;\n var deltaUp = (delta >= 0);\n if (deltaUp) {\n this.eDelta.innerHTML = ARROW_UP + valueToUse;\n }\n else {\n // because negative, use ABS to remove sign\n this.eDelta.innerHTML = ARROW_DOWN + valueToUse;\n }\n // class makes it green (in ag-fresh)\n _.addOrRemoveCssClass(this.eDelta, 'ag-value-change-delta-up', deltaUp);\n // class makes it red (in ag-fresh)\n _.addOrRemoveCssClass(this.eDelta, 'ag-value-change-delta-down', !deltaUp);\n };\n AnimateShowChangeCellRenderer.prototype.setTimerToRemoveDelta = function () {\n var _this = this;\n // the refreshCount makes sure that if the value updates again while\n // the below timer is waiting, then the below timer will realise it\n // is not the most recent and will not try to remove the delta value.\n this.refreshCount++;\n var refreshCountCopy = this.refreshCount;\n window.setTimeout(function () {\n if (refreshCountCopy === _this.refreshCount) {\n _this.hideDeltaValue();\n }\n }, 2000);\n };\n AnimateShowChangeCellRenderer.prototype.hideDeltaValue = function () {\n _.removeCssClass(this.eValue, 'ag-value-change-value-highlight');\n _.clearElement(this.eDelta);\n };\n AnimateShowChangeCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (value === this.lastValue) {\n return;\n }\n if (_.exists(params.valueFormatted)) {\n this.eValue.innerHTML = params.valueFormatted;\n }\n else if (_.exists(params.value)) {\n this.eValue.innerHTML = value;\n }\n else {\n _.clearElement(this.eValue);\n }\n // we don't show the delta if we are in the middle of a filter. see comment on FilterManager\n // with regards processingFilterChange\n if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {\n return;\n }\n if (typeof value === 'number' && typeof this.lastValue === 'number') {\n var delta = value - this.lastValue;\n this.showDelta(params, delta);\n }\n // highlight the current value, but only if it's not new, otherwise it\n // would get highlighted first time the value is shown\n if (this.lastValue) {\n _.addCssClass(this.eValue, 'ag-value-change-value-highlight');\n }\n this.setTimerToRemoveDelta();\n this.lastValue = value;\n return true;\n };\n AnimateShowChangeCellRenderer.TEMPLATE = '' +\n '' +\n '' +\n '';\n __decorate([\n Autowired('filterManager')\n ], AnimateShowChangeCellRenderer.prototype, \"filterManager\", void 0);\n return AnimateShowChangeCellRenderer;\n}(Component));\nexport { AnimateShowChangeCellRenderer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../../widgets/component\";\nimport { _ } from \"../../utils\";\nimport { Autowired } from \"../../context/context\";\nvar AnimateSlideCellRenderer = /** @class */ (function (_super) {\n __extends(AnimateSlideCellRenderer, _super);\n function AnimateSlideCellRenderer() {\n var _this = _super.call(this, AnimateSlideCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n _this.eCurrent = _this.queryForHtmlElement('.ag-value-slide-current');\n return _this;\n }\n AnimateSlideCellRenderer.prototype.init = function (params) {\n this.params = params;\n this.refresh(params);\n };\n AnimateSlideCellRenderer.prototype.addSlideAnimation = function () {\n var _this = this;\n this.refreshCount++;\n // below we keep checking this, and stop working on the animation\n // if it no longer matches - this means another animation has started\n // and this one is stale.\n var refreshCountCopy = this.refreshCount;\n // if old animation, remove it\n if (this.ePrevious) {\n this.getGui().removeChild(this.ePrevious);\n }\n this.ePrevious = _.loadTemplate('');\n this.ePrevious.innerHTML = this.eCurrent.innerHTML;\n this.getGui().insertBefore(this.ePrevious, this.eCurrent);\n // having timeout of 0 allows use to skip to the next css turn,\n // so we know the previous css classes have been applied. so the\n // complex set of setTimeout below creates the animation\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n _.addCssClass(_this.ePrevious, 'ag-value-slide-out-end');\n }, 50);\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n _this.getGui().removeChild(_this.ePrevious);\n _this.ePrevious = null;\n }, 3000);\n };\n AnimateSlideCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (_.missing(value)) {\n value = '';\n }\n if (value === this.lastValue) {\n return;\n }\n // we don't show the delta if we are in the middle of a filter. see comment on FilterManager\n // with regards processingFilterChange\n if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {\n return;\n }\n this.addSlideAnimation();\n this.lastValue = value;\n if (_.exists(params.valueFormatted)) {\n this.eCurrent.innerHTML = params.valueFormatted;\n }\n else if (_.exists(params.value)) {\n this.eCurrent.innerHTML = value;\n }\n else {\n _.clearElement(this.eCurrent);\n }\n return true;\n };\n AnimateSlideCellRenderer.TEMPLATE = '' +\n '' +\n '';\n __decorate([\n Autowired('filterManager')\n ], AnimateSlideCellRenderer.prototype, \"filterManager\", void 0);\n return AnimateSlideCellRenderer;\n}(Component));\nexport { AnimateSlideCellRenderer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PopupComponent } from \"../../widgets/popupComponent\";\nimport { Constants } from \"../../constants\";\nimport { Autowired } from \"../../context/context\";\nimport { _ } from '../../utils';\nvar SelectCellEditor = /** @class */ (function (_super) {\n __extends(SelectCellEditor, _super);\n function SelectCellEditor() {\n var _this = _super.call(this, '
\n checkboxChecked: 'checkbox-checked',\n checkboxUnchecked: 'checkbox-unchecked',\n checkboxIndeterminate: 'checkbox-indeterminate',\n checkboxCheckedReadOnly: 'checkbox-checked-readonly',\n checkboxUncheckedReadOnly: 'checkbox-unchecked-readonly',\n checkboxIndeterminateReadOnly: 'checkbox-indeterminate-readonly',\n // \"go to first\" button in pagination controls\n first: 'first',\n // \"go to previous\" button in pagination controls\n previous: 'previous',\n // \"go to next\" button in pagination controls\n next: 'next',\n // \"go to last\" button in pagination controls\n last: 'last',\n // shown on top right of chart when chart is linked to range data (click to unlink)\n linked: 'linked',\n // shown on top right of chart when chart is not linked to range data (click to link)\n unlinked: 'unlinked',\n // \"Choose colour\" button on chart settings tab\n colorPicker: 'color-picker',\n // the following radio-button-* items are for radio buttons on themes that don't use a\n // native \n radioButtonOn: 'radio-button-on',\n radioButtonOff: 'radio-button-off',\n // rotating spinner shown by the loading cell renderer\n groupLoading: 'loading',\n // ??? doesn't seem to be used?\n data: 'data',\n // button to launch enterprise column menu\n menu: 'menu',\n // filter tool panel tab\n filter: 'filter',\n // column tool panel tab\n columns: 'columns',\n // button in chart regular size window title bar (click to maximise)\n maximize: 'maximize',\n // button in chart maximised window title bar (click to make regular size)\n minimize: 'minimize',\n // \"Pin column\" item in column header menu\n menuPin: 'pin',\n // \"Value aggregation\" column menu item (shown on numeric columns when grouping is active)\"\n menuValue: 'aggregation',\n // \"Group by {column-name}\" item in column header menu\n menuAddRowGroup: 'group',\n // \"Un-Group by {column-name}\" item in column header menu\n menuRemoveRowGroup: 'group',\n // context menu copy item\n clipboardCopy: 'copy',\n // ??? doesn't seem toi be used?\n clipboardCut: 'cut',\n // context menu paste item\n clipboardPaste: 'paste',\n // identifies the pivot drop zone\n pivotPanel: 'pivot',\n // \"Row groups\" drop zone in column tool panel\n rowGroupPanel: 'group',\n // columns tool panel Values drop zone\n valuePanel: 'aggregation',\n // drag handle used to pick up draggable columns\n columnDrag: 'grip',\n // drag handle used to pick up draggable rows\n rowDrag: 'grip',\n // context menu export item\n save: 'save',\n // version of small-right used in RTL mode\n smallLeft: 'small-left',\n // separater between column 'pills' when you add multiple columns to the header drop zone\n smallRight: 'small-right',\n // ??? doesn't seem to be used?\n smallUp: 'small-up',\n // ??? doesn't seem to be used?\n smallDown: 'small-down',\n // show on column header when column is sorted ascending\n sortAscending: 'asc',\n // show on column header when column is sorted descending\n sortDescending: 'desc',\n // show on column header when column has no sort, only when enabled with gridOptions.unSortIcon=true\n sortUnSort: 'none'\n };\n return Utils;\n}());\nexport { Utils };\nvar NumberSequence = /** @class */ (function () {\n function NumberSequence(initValue, step) {\n if (initValue === void 0) { initValue = 0; }\n if (step === void 0) { step = 1; }\n this.nextValue = initValue;\n this.step = step;\n }\n NumberSequence.prototype.next = function () {\n var valToReturn = this.nextValue;\n this.nextValue += this.step;\n return valToReturn;\n };\n NumberSequence.prototype.peek = function () {\n return this.nextValue;\n };\n NumberSequence.prototype.skip = function (count) {\n this.nextValue += count;\n };\n return NumberSequence;\n}());\nexport { NumberSequence };\nexport var _ = Utils;\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/**\n * A Util Class only used when debugging for printing time to console\n */\nvar Timer = /** @class */ (function () {\n function Timer() {\n this.timestamp = new Date().getTime();\n }\n Timer.prototype.print = function (msg) {\n var duration = (new Date().getTime()) - this.timestamp;\n console.info(msg + \" = \" + duration);\n this.timestamp = new Date().getTime();\n };\n return Timer;\n}());\nexport { Timer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport * from \"./color\";\nexport * from \"./general\";\nexport * from \"./promise\";\nexport * from \"./timer\";\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { Promise } from \"../utils\";\nexport function simpleHttpRequest(params) {\n return new Promise(function (resolve) {\n var httpRequest = new XMLHttpRequest();\n httpRequest.open('GET', params.url);\n httpRequest.send();\n httpRequest.onreadystatechange = function () {\n if (httpRequest.readyState == 4 && httpRequest.status == 200) {\n var httpResponse = JSON.parse(httpRequest.responseText);\n resolve(httpResponse);\n }\n };\n });\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { RowNodeBlock } from \"./rowNodeBlock\";\nimport { Qualifier } from \"../../context/context\";\nimport { _ } from \"../../utils\";\nvar RowNodeBlockLoader = /** @class */ (function () {\n function RowNodeBlockLoader(maxConcurrentRequests, blockLoadDebounceMillis) {\n this.activeBlockLoadsCount = 0;\n this.blocks = [];\n this.active = true;\n this.maxConcurrentRequests = maxConcurrentRequests;\n if (blockLoadDebounceMillis && blockLoadDebounceMillis > 0) {\n this.checkBlockToLoadDebounce = _.debounce(this.performCheckBlocksToLoad.bind(this), blockLoadDebounceMillis);\n }\n }\n RowNodeBlockLoader.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('RowNodeBlockLoader');\n };\n RowNodeBlockLoader.prototype.addBlock = function (block) {\n this.blocks.push(block);\n };\n RowNodeBlockLoader.prototype.removeBlock = function (block) {\n _.removeFromArray(this.blocks, block);\n };\n RowNodeBlockLoader.prototype.destroy = function () {\n this.active = false;\n };\n RowNodeBlockLoader.prototype.loadComplete = function () {\n this.activeBlockLoadsCount--;\n };\n RowNodeBlockLoader.prototype.checkBlockToLoad = function () {\n if (this.checkBlockToLoadDebounce) {\n this.checkBlockToLoadDebounce();\n }\n else {\n this.performCheckBlocksToLoad();\n }\n };\n RowNodeBlockLoader.prototype.performCheckBlocksToLoad = function () {\n if (!this.active) {\n return;\n }\n this.printCacheStatus();\n if (this.activeBlockLoadsCount >= this.maxConcurrentRequests) {\n this.logger.log(\"checkBlockToLoad: max loads exceeded\");\n return;\n }\n var blockToLoad = null;\n this.blocks.forEach(function (block) {\n if (block.getState() === RowNodeBlock.STATE_DIRTY) {\n blockToLoad = block;\n }\n });\n if (blockToLoad) {\n blockToLoad.load();\n this.activeBlockLoadsCount++;\n this.logger.log(\"checkBlockToLoad: loading page \" + blockToLoad.getBlockNumber());\n this.printCacheStatus();\n }\n else {\n this.logger.log(\"checkBlockToLoad: no pages to load\");\n }\n };\n RowNodeBlockLoader.prototype.getBlockState = function () {\n var result = {};\n this.blocks.forEach(function (block) {\n var nodeIdPrefix = block.getNodeIdPrefix();\n var stateItem = {\n blockNumber: block.getBlockNumber(),\n startRow: block.getStartRow(),\n endRow: block.getEndRow(),\n pageStatus: block.getState()\n };\n if (_.exists(nodeIdPrefix)) {\n result[nodeIdPrefix + block.getBlockNumber()] = stateItem;\n }\n else {\n result[block.getBlockNumber()] = stateItem;\n }\n });\n return result;\n };\n RowNodeBlockLoader.prototype.printCacheStatus = function () {\n if (this.logger.isLogging()) {\n this.logger.log(\"printCacheStatus: activePageLoadsCount = \" + this.activeBlockLoadsCount + \",\"\n + (\" blocks = \" + JSON.stringify(this.getBlockState())));\n }\n };\n RowNodeBlockLoader.prototype.isLoading = function () {\n return this.activeBlockLoadsCount > 0;\n };\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], RowNodeBlockLoader.prototype, \"setBeans\", null);\n return RowNodeBlockLoader;\n}());\nexport { RowNodeBlockLoader };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BeanStub } from \"../../context/beanStub\";\nimport { RowNodeBlock } from \"./rowNodeBlock\";\nimport { NumberSequence, _ } from \"../../utils\";\nvar RowNodeCache = /** @class */ (function (_super) {\n __extends(RowNodeCache, _super);\n function RowNodeCache(cacheParams) {\n var _this = _super.call(this) || this;\n _this.maxRowFound = false;\n _this.blocks = {};\n _this.blockCount = 0;\n _this.virtualRowCount = cacheParams.initialRowCount;\n _this.cacheParams = cacheParams;\n return _this;\n }\n RowNodeCache.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n this.forEachBlockInOrder(function (block) { return _this.destroyBlock(block); });\n };\n RowNodeCache.prototype.init = function () {\n var _this = this;\n this.active = true;\n this.addDestroyFunc(function () { return _this.active = false; });\n };\n RowNodeCache.prototype.isActive = function () {\n return this.active;\n };\n RowNodeCache.prototype.getVirtualRowCount = function () {\n return this.virtualRowCount;\n };\n RowNodeCache.prototype.hack_setVirtualRowCount = function (virtualRowCount) {\n this.virtualRowCount = virtualRowCount;\n };\n RowNodeCache.prototype.isMaxRowFound = function () {\n return this.maxRowFound;\n };\n // listener on EVENT_LOAD_COMPLETE\n RowNodeCache.prototype.onPageLoaded = function (event) {\n this.cacheParams.rowNodeBlockLoader.loadComplete();\n this.checkBlockToLoad();\n // if we are not active, then we ignore all events, otherwise we could end up getting the\n // grid to refresh even though we are no longer the active cache\n if (!this.isActive()) {\n return;\n }\n this.logger.log(\"onPageLoaded: page = \" + event.page.getBlockNumber() + \", lastRow = \" + event.lastRow);\n if (event.success) {\n this.checkVirtualRowCount(event.page, event.lastRow);\n }\n };\n RowNodeCache.prototype.purgeBlocksIfNeeded = function (blockToExclude) {\n var _this = this;\n // put all candidate blocks into a list for sorting\n var blocksForPurging = [];\n this.forEachBlockInOrder(function (block) {\n // we exclude checking for the page just created, as this has yet to be accessed and hence\n // the lastAccessed stamp will not be updated for the first time yet\n if (block === blockToExclude) {\n return;\n }\n blocksForPurging.push(block);\n });\n // note: need to verify that this sorts items in the right order\n blocksForPurging.sort(function (a, b) { return b.getLastAccessed() - a.getLastAccessed(); });\n // we remove (maxBlocksInCache - 1) as we already excluded the 'just created' page.\n // in other words, after the splice operation below, we have taken out the blocks\n // we want to keep, which means we are left with blocks that we can potentially purge\n var maxBlocksProvided = this.cacheParams.maxBlocksInCache > 0;\n var blocksToKeep = maxBlocksProvided ? this.cacheParams.maxBlocksInCache - 1 : null;\n var emptyBlocksToKeep = RowNodeCache.MAX_EMPTY_BLOCKS_TO_KEEP - 1;\n blocksForPurging.forEach(function (block, index) {\n var purgeBecauseBlockEmpty = block.getState() === RowNodeBlock.STATE_DIRTY && index >= emptyBlocksToKeep;\n var purgeBecauseCacheFull = maxBlocksProvided ? index >= blocksToKeep : false;\n if (purgeBecauseBlockEmpty || purgeBecauseCacheFull) {\n // we never purge blocks if they are open, as purging them would mess up with\n // our indexes, it would be very messy to restore the purged block to it's\n // previous state if it had open children (and what if open children of open\n // children, jeeeesus, just thinking about it freaks me out) so best is have a\n // rule, if block is open, we never purge.\n if (block.isAnyNodeOpen(_this.virtualRowCount)) {\n return;\n }\n // at this point, block is not needed, and no open nodes, so burn baby burn\n _this.removeBlockFromCache(block);\n }\n });\n };\n RowNodeCache.prototype.postCreateBlock = function (newBlock) {\n newBlock.addEventListener(RowNodeBlock.EVENT_LOAD_COMPLETE, this.onPageLoaded.bind(this));\n this.setBlock(newBlock.getBlockNumber(), newBlock);\n this.purgeBlocksIfNeeded(newBlock);\n this.checkBlockToLoad();\n };\n RowNodeCache.prototype.removeBlockFromCache = function (blockToRemove) {\n if (!blockToRemove) {\n return;\n }\n this.destroyBlock(blockToRemove);\n // we do not want to remove the 'loaded' event listener, as the\n // concurrent loads count needs to be updated when the load is complete\n // if the purged page is in loading state\n };\n // gets called after: 1) block loaded 2) block created 3) cache refresh\n RowNodeCache.prototype.checkBlockToLoad = function () {\n this.cacheParams.rowNodeBlockLoader.checkBlockToLoad();\n };\n RowNodeCache.prototype.checkVirtualRowCount = function (block, lastRow) {\n // if client provided a last row, we always use it, as it could change between server calls\n // if user deleted data and then called refresh on the grid.\n if (typeof lastRow === 'number' && lastRow >= 0) {\n this.virtualRowCount = lastRow;\n this.maxRowFound = true;\n this.onCacheUpdated();\n }\n else if (!this.maxRowFound) {\n // otherwise, see if we need to add some virtual rows\n var lastRowIndex = (block.getBlockNumber() + 1) * this.cacheParams.blockSize;\n var lastRowIndexPlusOverflow = lastRowIndex + this.cacheParams.overflowSize;\n if (this.virtualRowCount < lastRowIndexPlusOverflow) {\n this.virtualRowCount = lastRowIndexPlusOverflow;\n this.onCacheUpdated();\n }\n else if (this.cacheParams.dynamicRowHeight) {\n // the only other time is if dynamic row height, as loading rows\n // will change the height of the block, given the height of the rows\n // is only known after the row is loaded.\n this.onCacheUpdated();\n }\n }\n };\n RowNodeCache.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {\n this.virtualRowCount = rowCount;\n // if undefined is passed, we do not set this value, if one of {true,false}\n // is passed, we do set the value.\n if (_.exists(maxRowFound)) {\n this.maxRowFound = maxRowFound;\n }\n // if we are still searching, then the row count must not end at the end\n // of a particular page, otherwise the searching will not pop into the\n // next page\n if (!this.maxRowFound) {\n if (this.virtualRowCount % this.cacheParams.blockSize === 0) {\n this.virtualRowCount++;\n }\n }\n this.onCacheUpdated();\n };\n RowNodeCache.prototype.forEachNodeDeep = function (callback, sequence) {\n var _this = this;\n if (sequence === void 0) { sequence = new NumberSequence(); }\n this.forEachBlockInOrder(function (block) {\n block.forEachNodeDeep(callback, sequence, _this.virtualRowCount);\n });\n };\n RowNodeCache.prototype.forEachBlockInOrder = function (callback) {\n var ids = this.getBlockIdsSorted();\n this.forEachBlockId(ids, callback);\n };\n RowNodeCache.prototype.forEachBlockInReverseOrder = function (callback) {\n var ids = this.getBlockIdsSorted().reverse();\n this.forEachBlockId(ids, callback);\n };\n RowNodeCache.prototype.forEachBlockId = function (ids, callback) {\n var _this = this;\n ids.forEach(function (id) {\n var block = _this.blocks[id];\n callback(block, id);\n });\n };\n RowNodeCache.prototype.getBlockIdsSorted = function () {\n // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n var numberComparator = function (a, b) { return a - b; }; // default comparator for array is string comparison\n var blockIds = Object.keys(this.blocks).map(function (idStr) { return parseInt(idStr, 10); }).sort(numberComparator);\n return blockIds;\n };\n RowNodeCache.prototype.getBlock = function (blockId) {\n return this.blocks[blockId];\n };\n RowNodeCache.prototype.setBlock = function (id, block) {\n this.blocks[id] = block;\n this.blockCount++;\n this.cacheParams.rowNodeBlockLoader.addBlock(block);\n };\n RowNodeCache.prototype.destroyBlock = function (block) {\n delete this.blocks[block.getBlockNumber()];\n block.destroy();\n this.blockCount--;\n this.cacheParams.rowNodeBlockLoader.removeBlock(block);\n };\n // gets called 1) row count changed 2) cache purged 3) items inserted\n RowNodeCache.prototype.onCacheUpdated = function () {\n if (this.isActive()) {\n // this results in both row models (infinite and server side) firing ModelUpdated,\n // however server side row model also updates the row indexes first\n var event_1 = {\n type: RowNodeCache.EVENT_CACHE_UPDATED\n };\n this.dispatchEvent(event_1);\n }\n };\n RowNodeCache.prototype.purgeCache = function () {\n var _this = this;\n this.forEachBlockInOrder(function (block) { return _this.removeBlockFromCache(block); });\n if (this.virtualRowCount === 0) {\n // re-initialise cache - this ensures a cache with no rows can reload when purged!\n this.virtualRowCount = this.cacheParams.initialRowCount;\n this.maxRowFound = false;\n }\n this.onCacheUpdated();\n };\n RowNodeCache.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n var _this = this;\n var result = [];\n var lastBlockId = -1;\n var inActiveRange = false;\n var numberSequence = new NumberSequence();\n // if only one node passed, we start the selection at the top\n if (_.missing(firstInRange)) {\n inActiveRange = true;\n }\n var foundGapInSelection = false;\n this.forEachBlockInOrder(function (block, id) {\n if (foundGapInSelection) {\n return;\n }\n if (inActiveRange && (lastBlockId + 1 !== id)) {\n foundGapInSelection = true;\n return;\n }\n lastBlockId = id;\n block.forEachNodeShallow(function (rowNode) {\n var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n if (inActiveRange || hitFirstOrLast) {\n result.push(rowNode);\n }\n if (hitFirstOrLast) {\n inActiveRange = !inActiveRange;\n }\n }, numberSequence, _this.virtualRowCount);\n });\n // inActiveRange will be still true if we never hit the second rowNode\n var invalidRange = foundGapInSelection || inActiveRange;\n return invalidRange ? [] : result;\n };\n RowNodeCache.EVENT_CACHE_UPDATED = 'cacheUpdated';\n // this property says how many empty blocks should be in a cache, eg if scrolls down fast and creates 10\n // blocks all for loading, the grid will only load the last 2 - it will assume the blocks the user quickly\n // scrolled over are not needed to be loaded.\n RowNodeCache.MAX_EMPTY_BLOCKS_TO_KEEP = 2;\n return RowNodeCache;\n}(BeanStub));\nexport { RowNodeCache };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { AgDialog } from \"./agDialog\";\nimport { PostConstruct } from \"../context/context\";\nimport { Component } from \"./component\";\nimport { RefSelector } from \"./componentAnnotations\";\nvar MessageBox = /** @class */ (function (_super) {\n __extends(MessageBox, _super);\n function MessageBox(config) {\n var _this = _super.call(this, config) || this;\n _this.message = config.message;\n return _this;\n }\n MessageBox.prototype.postConstruct = function () {\n var _this = this;\n var messageBodyComp = new MessageBody();\n this.wireDependentBean(messageBodyComp);\n messageBodyComp.setMessage(this.message);\n this.setBodyComponent(messageBodyComp);\n _super.prototype.postConstruct.call(this);\n this.addDestroyableEventListener(messageBodyComp, 'onBtOk', function () { return _this.close(); });\n };\n return MessageBox;\n}(AgDialog));\nexport { MessageBox };\nvar MessageBody = /** @class */ (function (_super) {\n __extends(MessageBody, _super);\n function MessageBody() {\n return _super.call(this, MessageBody.TEMPLATE) || this;\n }\n MessageBody.prototype.setMessage = function (message) {\n this.eCenter.innerText = message;\n };\n MessageBody.prototype.postConstruct = function () {\n this.addDestroyableEventListener(this.eOk, 'click', this.onBtOk.bind(this));\n };\n MessageBody.prototype.onBtOk = function () {\n this.dispatchEvent({ type: 'onBtOk' });\n };\n MessageBody.TEMPLATE = \"
\\n
\\n
\\n \\n
\\n
\";\n __decorate([\n RefSelector('eCenter')\n ], MessageBody.prototype, \"eCenter\", void 0);\n __decorate([\n RefSelector('eOk')\n ], MessageBody.prototype, \"eOk\", void 0);\n __decorate([\n PostConstruct\n ], MessageBody.prototype, \"postConstruct\", null);\n return MessageBody;\n}(Component));\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"./component\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar VirtualList = /** @class */ (function (_super) {\n __extends(VirtualList, _super);\n function VirtualList() {\n var _this = _super.call(this, undefined) || this;\n _this.rowsInBodyContainer = {};\n _this.rowHeight = 20;\n return _this;\n }\n VirtualList.prototype.init = function () {\n this.setTemplate(VirtualList.TEMPLATE);\n this.eListContainer = this.queryForHtmlElement(\".ag-virtual-list-container\");\n this.addScrollListener();\n var item = document.createElement('div');\n _.addCssClass(item, 'ag-virtual-list-item');\n this.rowHeight = this.getItemHeight();\n };\n VirtualList.prototype.getItemHeight = function () {\n return this.gridOptionsWrapper.getVirtualItemHeight();\n };\n VirtualList.prototype.ensureIndexVisible = function (index) {\n var lastRow = this.model.getRowCount();\n if (typeof index !== 'number' || index < 0 || index >= lastRow) {\n console.warn('invalid row index for ensureIndexVisible: ' + index);\n return;\n }\n // let nodeAtIndex = this.rowModel.getRow(index);\n var rowTopPixel = index * this.rowHeight;\n var rowBottomPixel = rowTopPixel + this.rowHeight;\n var viewportTopPixel = this.getGui().scrollTop;\n var viewportHeight = this.getGui().offsetHeight;\n var viewportBottomPixel = viewportTopPixel + viewportHeight;\n var viewportScrolledPastRow = viewportTopPixel > rowTopPixel;\n var viewportScrolledBeforeRow = viewportBottomPixel < rowBottomPixel;\n if (viewportScrolledPastRow) {\n // if row is before, scroll up with row at top\n this.getGui().scrollTop = rowTopPixel;\n }\n else if (viewportScrolledBeforeRow) {\n // if row is below, scroll down with row at bottom\n var newScrollPosition = rowBottomPixel - viewportHeight;\n this.getGui().scrollTop = newScrollPosition;\n }\n };\n VirtualList.prototype.setComponentCreator = function (componentCreator) {\n this.componentCreator = componentCreator;\n };\n VirtualList.prototype.getRowHeight = function () {\n return this.rowHeight;\n };\n VirtualList.prototype.getScrollTop = function () {\n return this.getGui().scrollTop;\n };\n VirtualList.prototype.setRowHeight = function (rowHeight) {\n this.rowHeight = rowHeight;\n this.refresh();\n };\n VirtualList.prototype.refresh = function () {\n if (_.missing(this.model)) {\n return;\n }\n this.eListContainer.style.height = (this.model.getRowCount() * this.rowHeight) + \"px\";\n this.clearVirtualRows();\n this.drawVirtualRows();\n };\n VirtualList.prototype.clearVirtualRows = function () {\n var rowsToRemove = Object.keys(this.rowsInBodyContainer);\n this.removeVirtualRows(rowsToRemove);\n };\n VirtualList.prototype.drawVirtualRows = function () {\n var topPixel = this.getGui().scrollTop;\n var bottomPixel = topPixel + this.getGui().offsetHeight;\n var firstRow = Math.floor(topPixel / this.rowHeight);\n var lastRow = Math.floor(bottomPixel / this.rowHeight);\n this.ensureRowsRendered(firstRow, lastRow);\n };\n VirtualList.prototype.ensureRowsRendered = function (start, finish) {\n // at the end, this array will contain the items we need to remove\n var rowsToRemove = Object.keys(this.rowsInBodyContainer);\n // add in new rows\n for (var rowIndex = start; rowIndex <= finish; rowIndex++) {\n // see if item already there, and if yes, take it out of the 'to remove' array\n if (rowsToRemove.indexOf(rowIndex.toString()) >= 0) {\n rowsToRemove.splice(rowsToRemove.indexOf(rowIndex.toString()), 1);\n continue;\n }\n // check this row actually exists (in case overflow buffer window exceeds real data)\n if (this.model.getRowCount() > rowIndex) {\n var value = this.model.getRow(rowIndex);\n this.insertRow(value, rowIndex);\n }\n }\n // at this point, everything in our 'rowsToRemove' . . .\n this.removeVirtualRows(rowsToRemove);\n };\n // takes array of row id's\n VirtualList.prototype.removeVirtualRows = function (rowsToRemove) {\n var _this = this;\n rowsToRemove.forEach(function (index) {\n var component = _this.rowsInBodyContainer[index];\n _this.eListContainer.removeChild(component.eDiv);\n if (component.rowComponent.destroy) {\n component.rowComponent.destroy();\n }\n delete _this.rowsInBodyContainer[index];\n });\n };\n VirtualList.prototype.insertRow = function (value, rowIndex) {\n var eDiv = document.createElement('div');\n _.addCssClass(eDiv, 'ag-virtual-list-item');\n eDiv.style.top = (this.rowHeight * rowIndex) + \"px\";\n var rowComponent = this.componentCreator(value);\n eDiv.appendChild(rowComponent.getGui());\n this.eListContainer.appendChild(eDiv);\n this.rowsInBodyContainer[rowIndex] = {\n rowComponent: rowComponent,\n eDiv: eDiv\n };\n };\n VirtualList.prototype.addScrollListener = function () {\n var _this = this;\n this.addGuiEventListener('scroll', function () {\n _this.drawVirtualRows();\n });\n };\n VirtualList.prototype.setModel = function (model) {\n this.model = model;\n };\n VirtualList.TEMPLATE = \"
\\n
\\n
\";\n __decorate([\n Autowired('environment')\n ], VirtualList.prototype, \"environment\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], VirtualList.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], VirtualList.prototype, \"init\", null);\n return VirtualList;\n}(Component));\nexport { VirtualList };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired } from \"../../context/context\";\nimport { Component } from \"../../widgets/component\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { _ } from \"../../utils\";\nvar LoadingCellRenderer = /** @class */ (function (_super) {\n __extends(LoadingCellRenderer, _super);\n function LoadingCellRenderer() {\n return _super.call(this, LoadingCellRenderer.TEMPLATE) || this;\n }\n LoadingCellRenderer.prototype.init = function (params) {\n var eLoadingIcon = _.createIconNoSpan('groupLoading', this.gridOptionsWrapper, null);\n this.eLoadingIcon.appendChild(eLoadingIcon);\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eLoadingText.innerText = localeTextFunc('loadingOoo', 'Loading');\n };\n LoadingCellRenderer.prototype.refresh = function (params) {\n return false;\n };\n LoadingCellRenderer.TEMPLATE = \"
\\n \\n \\n
\";\n __decorate([\n Autowired('gridOptionsWrapper')\n ], LoadingCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector('eLoadingIcon')\n ], LoadingCellRenderer.prototype, \"eLoadingIcon\", void 0);\n __decorate([\n RefSelector('eLoadingText')\n ], LoadingCellRenderer.prototype, \"eLoadingText\", void 0);\n return LoadingCellRenderer;\n}(Component));\nexport { LoadingCellRenderer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired } from \"../../context/context\";\nimport { Component } from \"../../widgets/component\";\nvar LoadingOverlayComponent = /** @class */ (function (_super) {\n __extends(LoadingOverlayComponent, _super);\n function LoadingOverlayComponent() {\n return _super.call(this) || this;\n }\n LoadingOverlayComponent.prototype.init = function (params) {\n var template = this.gridOptionsWrapper.getOverlayLoadingTemplate() ?\n this.gridOptionsWrapper.getOverlayLoadingTemplate() : LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var localisedTemplate = template.replace('[LOADING...]', localeTextFunc('loadingOoo', 'Loading...'));\n this.setTemplate(localisedTemplate);\n };\n LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE = '[LOADING...]';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], LoadingOverlayComponent.prototype, \"gridOptionsWrapper\", void 0);\n return LoadingOverlayComponent;\n}(Component));\nexport { LoadingOverlayComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired } from \"../../context/context\";\nimport { Component } from \"../../widgets/component\";\nvar NoRowsOverlayComponent = /** @class */ (function (_super) {\n __extends(NoRowsOverlayComponent, _super);\n function NoRowsOverlayComponent() {\n return _super.call(this) || this;\n }\n NoRowsOverlayComponent.prototype.init = function (params) {\n var template = this.gridOptionsWrapper.getOverlayNoRowsTemplate() ?\n this.gridOptionsWrapper.getOverlayNoRowsTemplate() : NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var localisedTemplate = template.replace('[NO_ROWS_TO_SHOW]', localeTextFunc('noRowsToShow', 'No Rows To Show'));\n this.setTemplate(localisedTemplate);\n };\n NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE = '[NO_ROWS_TO_SHOW]';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], NoRowsOverlayComponent.prototype, \"gridOptionsWrapper\", void 0);\n return NoRowsOverlayComponent;\n}(Component));\nexport { NoRowsOverlayComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PopupComponent } from \"../widgets/popupComponent\";\nvar TooltipComponent = /** @class */ (function (_super) {\n __extends(TooltipComponent, _super);\n function TooltipComponent() {\n return _super.call(this, \"
\") || this;\n }\n // will need to type params\n TooltipComponent.prototype.init = function (params) {\n var value = params.value;\n this.getGui().innerHTML = value;\n };\n return TooltipComponent;\n}(PopupComponent));\nexport { TooltipComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { BeanStub } from \"../context/beanStub\";\nvar ColumnHoverService = /** @class */ (function (_super) {\n __extends(ColumnHoverService, _super);\n function ColumnHoverService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnHoverService.prototype.setMouseOver = function (columns) {\n this.selectedColumns = columns;\n var event = {\n type: Events.EVENT_COLUMN_HOVER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.clearMouseOver = function () {\n this.selectedColumns = null;\n var event = {\n type: Events.EVENT_COLUMN_HOVER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.isHovered = function (column) {\n return this.selectedColumns && this.selectedColumns.indexOf(column) >= 0;\n };\n __decorate([\n Autowired('eventService')\n ], ColumnHoverService.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ColumnHoverService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ColumnHoverService.prototype, \"gridApi\", void 0);\n ColumnHoverService = __decorate([\n Bean('columnHoverService')\n ], ColumnHoverService);\n return ColumnHoverService;\n}(BeanStub));\nexport { ColumnHoverService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"../context/context\";\nvar ColumnAnimationService = /** @class */ (function () {\n function ColumnAnimationService() {\n this.executeNextFuncs = [];\n this.executeLaterFuncs = [];\n this.active = false;\n this.animationThreadCount = 0;\n }\n ColumnAnimationService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n ColumnAnimationService.prototype.isActive = function () {\n return this.active;\n };\n ColumnAnimationService.prototype.start = function () {\n if (this.active) {\n return;\n }\n if (this.gridOptionsWrapper.isSuppressColumnMoveAnimation()) {\n return;\n }\n // if doing RTL, we don't animate open / close as due to how the pixels are inverted,\n // the animation moves all the row the the right rather than to the left (ie it's the static\n // columns that actually get their coordinates updated)\n if (this.gridOptionsWrapper.isEnableRtl()) {\n return;\n }\n this.ensureAnimationCssClassPresent();\n this.active = true;\n };\n ColumnAnimationService.prototype.finish = function () {\n if (!this.active) {\n return;\n }\n this.flush();\n this.active = false;\n };\n ColumnAnimationService.prototype.executeNextVMTurn = function (func) {\n if (this.active) {\n this.executeNextFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.executeLaterVMTurn = function (func) {\n if (this.active) {\n this.executeLaterFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.ensureAnimationCssClassPresent = function () {\n var _this = this;\n // up the count, so we can tell if someone else has updated the count\n // by the time the 'wait' func executes\n this.animationThreadCount++;\n var animationThreadCountCopy = this.animationThreadCount;\n this.gridPanel.setColumnMovingCss(true);\n this.executeLaterFuncs.push(function () {\n // only remove the class if this thread was the last one to update it\n if (_this.animationThreadCount === animationThreadCountCopy) {\n _this.gridPanel.setColumnMovingCss(false);\n }\n });\n };\n ColumnAnimationService.prototype.flush = function () {\n var nowFuncs = this.executeNextFuncs;\n this.executeNextFuncs = [];\n var waitFuncs = this.executeLaterFuncs;\n this.executeLaterFuncs = [];\n if (nowFuncs.length === 0 && waitFuncs.length === 0) {\n return;\n }\n window.setTimeout(function () { return nowFuncs.forEach(function (func) { return func(); }); }, 0);\n window.setTimeout(function () { return waitFuncs.forEach(function (func) { return func(); }); }, 300);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ColumnAnimationService.prototype, \"gridOptionsWrapper\", void 0);\n ColumnAnimationService = __decorate([\n Bean('columnAnimationService')\n ], ColumnAnimationService);\n return ColumnAnimationService;\n}());\nexport { ColumnAnimationService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Events } from \"../events\";\nimport { Autowired, Bean } from \"../context/context\";\nvar PaginationAutoPageSizeService = /** @class */ (function (_super) {\n __extends(PaginationAutoPageSizeService, _super);\n function PaginationAutoPageSizeService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PaginationAutoPageSizeService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.addDestroyableEventListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.onBodyHeightChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.notActive = function () {\n return !this.gridOptionsWrapper.isPaginationAutoPageSize();\n };\n PaginationAutoPageSizeService.prototype.onScrollVisibilityChanged = function () {\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.onBodyHeightChanged = function () {\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.checkPageSize = function () {\n if (this.notActive()) {\n return;\n }\n var rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n var bodyHeight = this.gridPanel.getBodyHeight();\n if (bodyHeight > 0) {\n var newPageSize = Math.floor(bodyHeight / rowHeight);\n this.gridOptionsWrapper.setProperty('paginationPageSize', newPageSize);\n }\n };\n __decorate([\n Autowired('eventService')\n ], PaginationAutoPageSizeService.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], PaginationAutoPageSizeService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('scrollVisibleService')\n ], PaginationAutoPageSizeService.prototype, \"scrollVisibleService\", void 0);\n PaginationAutoPageSizeService = __decorate([\n Bean('paginationAutoPageSizeService')\n ], PaginationAutoPageSizeService);\n return PaginationAutoPageSizeService;\n}(BeanStub));\nexport { PaginationAutoPageSizeService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { ChangedPath } from \"../utils/changedPath\";\nimport { Constants } from \"../constants\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { Events } from \"../events\";\nvar ChangeDetectionService = /** @class */ (function (_super) {\n __extends(ChangeDetectionService, _super);\n function ChangeDetectionService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChangeDetectionService.prototype.init = function () {\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n this.addDestroyableEventListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged.bind(this));\n };\n ChangeDetectionService.prototype.onCellValueChanged = function (event) {\n // Clipboard service manages its own change detection, so no need to do it here.\n // The clipboard manages its own as otherwise this would happen once for every cell\n // that got updated as part of a paste operation, so e.g. if 100 cells in a paste operation,\n // this doChangeDetection would get called 100 times (once for each cell), instead clipboard\n // service executes the logic we have here once (in essence batching up all cell changes\n // into one change detection).\n if (event.source === Constants.SOURCE_PASTE) {\n return;\n }\n this.doChangeDetection(event.node, event.column);\n };\n ChangeDetectionService.prototype.doChangeDetection = function (rowNode, column) {\n if (this.gridOptionsWrapper.isSuppressChangeDetection()) {\n return;\n }\n // step 1 of change detection is to update the aggregated values\n if (this.clientSideRowModel && !rowNode.isRowPinned()) {\n var onlyChangedColumns = this.gridOptionsWrapper.isAggregateOnlyChangedColumns();\n var changedPath = new ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n changedPath.addParentNode(rowNode.parent, [column]);\n this.clientSideRowModel.doAggregate(changedPath);\n }\n // step 2 of change detection is to refresh the cells\n this.rowRenderer.refreshCells();\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ChangeDetectionService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('rowModel')\n ], ChangeDetectionService.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], ChangeDetectionService.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('eventService')\n ], ChangeDetectionService.prototype, \"eventService\", void 0);\n __decorate([\n PostConstruct\n ], ChangeDetectionService.prototype, \"init\", null);\n ChangeDetectionService = __decorate([\n Bean('changeDetectionService')\n ], ChangeDetectionService);\n return ChangeDetectionService;\n}(BeanStub));\nexport { ChangeDetectionService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, Optional, PostConstruct } from \"../context/context\";\n/** Using the IoC has a slight performance consideration, which is no problem most of the\n * time, unless we are trashing objects - which is the case when scrolling and rowComp\n * and cellComp. So for performance reasons, RowComp and CellComp do not get autowired\n * with the IoC. Instead they get passed this object which is all the beans the RowComp\n * and CellComp need. Not autowiring all the cells gives performance improvement. */\nvar Beans = /** @class */ (function () {\n function Beans() {\n }\n Beans.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n Beans.prototype.postConstruct = function () {\n this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n };\n __decorate([\n Autowired('paginationProxy')\n ], Beans.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('context')\n ], Beans.prototype, \"context\", void 0);\n __decorate([\n Autowired('columnApi')\n ], Beans.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], Beans.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], Beans.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('expressionService')\n ], Beans.prototype, \"expressionService\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], Beans.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('$compile')\n ], Beans.prototype, \"$compile\", void 0);\n __decorate([\n Autowired('templateService')\n ], Beans.prototype, \"templateService\", void 0);\n __decorate([\n Autowired('valueService')\n ], Beans.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('eventService')\n ], Beans.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnController')\n ], Beans.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('columnAnimationService')\n ], Beans.prototype, \"columnAnimationService\", void 0);\n __decorate([\n Optional('rangeController')\n ], Beans.prototype, \"rangeController\", void 0);\n __decorate([\n Autowired('focusedCellController')\n ], Beans.prototype, \"focusedCellController\", void 0);\n __decorate([\n Optional('contextMenuFactory')\n ], Beans.prototype, \"contextMenuFactory\", void 0);\n __decorate([\n Autowired('cellRendererFactory')\n ], Beans.prototype, \"cellRendererFactory\", void 0);\n __decorate([\n Autowired('popupService')\n ], Beans.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('valueFormatterService')\n ], Beans.prototype, \"valueFormatterService\", void 0);\n __decorate([\n Autowired('stylingService')\n ], Beans.prototype, \"stylingService\", void 0);\n __decorate([\n Autowired('columnHoverService')\n ], Beans.prototype, \"columnHoverService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], Beans.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('animationFrameService')\n ], Beans.prototype, \"taskQueue\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], Beans.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('sortController')\n ], Beans.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('filterManager')\n ], Beans.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('maxDivHeightScaler')\n ], Beans.prototype, \"maxDivHeightScaler\", void 0);\n __decorate([\n Autowired('tooltipManager')\n ], Beans.prototype, \"tooltipManager\", void 0);\n __decorate([\n Autowired('frameworkOverrides')\n ], Beans.prototype, \"frameworkOverrides\", void 0);\n __decorate([\n Autowired('detailRowCompCache')\n ], Beans.prototype, \"detailRowCompCache\", void 0);\n __decorate([\n Autowired('cellPositionUtils')\n ], Beans.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], Beans.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n PostConstruct\n ], Beans.prototype, \"postConstruct\", null);\n Beans = __decorate([\n Bean('beans')\n ], Beans);\n return Beans;\n}());\nexport { Beans };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { Events } from \"../eventKeys\";\nvar AnimationFrameService = /** @class */ (function () {\n function AnimationFrameService() {\n // p1 and p2 are create tasks are to do with row and cell creation.\n // for them we want to execute according to row order, so we use\n // TaskItem so we know what index the item is for.\n this.createTasksP1 = { list: [], sorted: false }; // eg drawing back-ground of rows\n this.createTasksP2 = { list: [], sorted: false }; // eg cell renderers, adding hover functionality\n // destroy tasks are to do with row removal. they are done after row creation as the user will need to see new\n // rows first (as blank is scrolled into view), when we remove the old rows (no longer in view) is not as\n // important.\n this.destroyTasks = [];\n this.ticking = false;\n // we need to know direction of scroll, to build up rows in the direction of\n // the scroll. eg if user scrolls down, we extend the rows by building down.\n this.scrollGoingDown = true;\n this.lastScrollTop = 0;\n this.taskCount = 0;\n this.cancelledTasks = new Set();\n }\n AnimationFrameService.prototype.setScrollTop = function (scrollTop) {\n this.scrollGoingDown = scrollTop > this.lastScrollTop;\n this.lastScrollTop = scrollTop;\n };\n AnimationFrameService.prototype.init = function () {\n this.useAnimationFrame = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n };\n // this method is for our ag-Grid sanity only - if animation frames are turned off,\n // then no place in the code should be looking to add any work to be done in animation\n // frames. this stops bugs - where some code is asking for a frame to be executed\n // when it should not.\n AnimationFrameService.prototype.verifyAnimationFrameOn = function (methodName) {\n if (this.useAnimationFrame === false) {\n console.warn(\"ag-Grid: AnimationFrameService.\" + methodName + \" called but animation frames are off\");\n }\n };\n AnimationFrameService.prototype.createTask = function (task, index, list) {\n this.verifyAnimationFrameOn(list);\n var taskItem = { task: task, index: index, createOrder: ++this.taskCount };\n this.addTaskToList(this[list], taskItem);\n this.schedule();\n };\n AnimationFrameService.prototype.cancelTask = function (task) {\n this.cancelledTasks.add(task);\n };\n AnimationFrameService.prototype.addTaskToList = function (taskList, task) {\n taskList.list.push(task);\n taskList.sorted = false;\n };\n AnimationFrameService.prototype.sortTaskList = function (taskList) {\n if (taskList.sorted) {\n return;\n }\n var sortDirection = this.scrollGoingDown ? 1 : -1;\n // sort first by row index (taking into account scroll direction), then by\n // order of task creation (always ascending, so cells will render left-to-right)\n taskList.list.sort(function (a, b) { return a.index !== b.index ? sortDirection * (b.index - a.index) : b.createOrder - a.createOrder; });\n taskList.sorted = true;\n };\n AnimationFrameService.prototype.addDestroyTask = function (task) {\n this.verifyAnimationFrameOn('createTasksP3');\n this.destroyTasks.push(task);\n this.schedule();\n };\n AnimationFrameService.prototype.executeFrame = function (millis) {\n this.verifyAnimationFrameOn('executeFrame');\n var p1TaskList = this.createTasksP1;\n var p1Tasks = p1TaskList.list;\n var p2TaskList = this.createTasksP2;\n var p2Tasks = p2TaskList.list;\n var destroyTasks = this.destroyTasks;\n var frameStart = new Date().getTime();\n var duration = (new Date().getTime()) - frameStart;\n // 16ms is 60 fps\n var noMaxMillis = millis <= 0;\n while (noMaxMillis || duration < millis) {\n var task = void 0;\n if (p1Tasks.length) {\n this.sortTaskList(p1TaskList);\n task = p1Tasks.pop().task;\n }\n else if (p2Tasks.length) {\n this.sortTaskList(p2TaskList);\n task = p2Tasks.pop().task;\n }\n else if (destroyTasks.length) {\n task = destroyTasks.pop();\n }\n else {\n this.cancelledTasks.clear();\n break;\n }\n if (!this.cancelledTasks.has(task)) {\n task();\n }\n duration = (new Date().getTime()) - frameStart;\n }\n if (p1Tasks.length || p2Tasks.length || destroyTasks.length) {\n this.requestFrame();\n }\n else {\n this.stopTicking();\n }\n };\n AnimationFrameService.prototype.stopTicking = function () {\n this.ticking = false;\n var event = {\n type: Events.EVENT_ANIMATION_QUEUE_EMPTY,\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n api: this.gridOptionsWrapper.getApi()\n };\n this.eventService.dispatchEvent(event);\n };\n AnimationFrameService.prototype.flushAllFrames = function () {\n if (!this.useAnimationFrame) {\n return;\n }\n this.executeFrame(-1);\n };\n AnimationFrameService.prototype.schedule = function () {\n if (!this.useAnimationFrame) {\n return;\n }\n if (!this.ticking) {\n this.ticking = true;\n this.requestFrame();\n }\n };\n AnimationFrameService.prototype.requestFrame = function () {\n // check for the existence of requestAnimationFrame, and if\n // it's missing, then we polyfill it with setTimeout()\n var callback = this.executeFrame.bind(this, 60);\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(callback);\n }\n else if (window.webkitRequestAnimationFrame) {\n window.webkitRequestAnimationFrame(callback);\n }\n else {\n window.setTimeout(callback, 0);\n }\n };\n AnimationFrameService.prototype.isQueueEmpty = function () {\n return !this.ticking;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], AnimationFrameService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], AnimationFrameService.prototype, \"eventService\", void 0);\n __decorate([\n PostConstruct\n ], AnimationFrameService.prototype, \"init\", null);\n AnimationFrameService = __decorate([\n Bean('animationFrameService')\n ], AnimationFrameService);\n return AnimationFrameService;\n}());\nexport { AnimationFrameService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { Events } from \"../eventKeys\";\nimport { _ } from \"../utils\";\n/**\n * This class solves the 'max height' problem, where the user might want to show more data than\n * the max div height actually allows.\n */\nvar MaxDivHeightScaler = /** @class */ (function (_super) {\n __extends(MaxDivHeightScaler, _super);\n function MaxDivHeightScaler() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // the scrollY position\n _this.scrollY = 0;\n // how tall the body is\n _this.uiBodyHeight = 0;\n return _this;\n }\n MaxDivHeightScaler.prototype.postConstruct = function () {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.updateOffset.bind(this));\n this.scrollBarWidth = this.gridOptionsWrapper.getScrollbarWidth();\n this.maxDivHeight = _.getMaxDivHeight();\n };\n MaxDivHeightScaler.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n MaxDivHeightScaler.prototype.isScaling = function () {\n return this.scaling;\n };\n MaxDivHeightScaler.prototype.getOffset = function () {\n return this.offset;\n };\n MaxDivHeightScaler.prototype.updateOffset = function () {\n if (!this.scaling) {\n return;\n }\n var newScrollY = this.gridPanel.getVScrollPosition().top;\n var newBodyHeight = this.getUiBodyHeight();\n var atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;\n if (atLeastOneChanged) {\n this.scrollY = newScrollY;\n this.uiBodyHeight = newBodyHeight;\n this.calculateOffset();\n }\n };\n MaxDivHeightScaler.prototype.calculateOffset = function () {\n this.uiContainerHeight = this.maxDivHeight;\n this.pixelsToShave = this.modelHeight - this.uiContainerHeight;\n this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;\n var scrollPercent = this.scrollY / this.maxScrollY;\n this.setOffset(scrollPercent * this.pixelsToShave);\n };\n MaxDivHeightScaler.prototype.clearOffset = function () {\n this.uiContainerHeight = this.modelHeight;\n this.pixelsToShave = 0;\n this.setOffset(0);\n };\n MaxDivHeightScaler.prototype.setOffset = function (newOffset) {\n // because we are talking pixels, no point in confusing things with half numbers\n var newOffsetFloor = typeof newOffset === 'number' ? Math.floor(newOffset) : null;\n if (this.offset === newOffsetFloor) {\n return;\n }\n this.offset = newOffsetFloor;\n this.eventService.dispatchEvent({ type: Events.EVENT_HEIGHT_SCALE_CHANGED });\n };\n MaxDivHeightScaler.prototype.setModelHeight = function (modelHeight) {\n this.modelHeight = modelHeight;\n this.scaling = this.maxDivHeight > 0 && modelHeight > this.maxDivHeight;\n if (this.scaling) {\n this.calculateOffset();\n }\n else {\n this.clearOffset();\n }\n };\n MaxDivHeightScaler.prototype.getUiContainerHeight = function () {\n return this.uiContainerHeight;\n };\n MaxDivHeightScaler.prototype.getRealPixelPosition = function (modelPixel) {\n return modelPixel - this.offset;\n };\n MaxDivHeightScaler.prototype.getUiBodyHeight = function () {\n var pos = this.gridPanel.getVScrollPosition();\n return pos.bottom - pos.top;\n };\n MaxDivHeightScaler.prototype.getScrollPositionForPixel = function (rowTop) {\n if (this.pixelsToShave <= 0) {\n return rowTop;\n }\n var modelMaxScroll = this.modelHeight - this.getUiBodyHeight();\n var scrollPercent = rowTop / modelMaxScroll;\n var scrollPixel = this.maxScrollY * scrollPercent;\n return scrollPixel;\n };\n __decorate([\n Autowired('eventService')\n ], MaxDivHeightScaler.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], MaxDivHeightScaler.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], MaxDivHeightScaler.prototype, \"postConstruct\", null);\n MaxDivHeightScaler = __decorate([\n Bean('maxDivHeightScaler')\n ], MaxDivHeightScaler);\n return MaxDivHeightScaler;\n}(BeanStub));\nexport { MaxDivHeightScaler };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"../context/context\";\nimport { CellComp } from \"./cellComp\";\nimport { _ } from \"../utils\";\nvar AutoHeightCalculator = /** @class */ (function () {\n function AutoHeightCalculator() {\n }\n AutoHeightCalculator.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n AutoHeightCalculator.prototype.getPreferredHeightForRow = function (rowNode) {\n var _this = this;\n if (!this.eDummyContainer) {\n this.eDummyContainer = document.createElement('div');\n // so any styles on row also get applied in dummy, otherwise\n // the content in dummy may differ to the real\n _.addCssClass(this.eDummyContainer, 'ag-row ag-row-no-focus');\n }\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n var eBodyContainer = this.gridPanel.getCenterContainer();\n eBodyContainer.appendChild(this.eDummyContainer);\n var cellComps = [];\n var autoRowHeightCols = this.columnController.getAllAutoRowHeightCols();\n var visibleAutoRowHeightCols = autoRowHeightCols.filter(function (col) { return col.isVisible(); });\n visibleAutoRowHeightCols.forEach(function (col) {\n var cellComp = new CellComp(_this.$scope, _this.beans, col, rowNode, null, true, false);\n cellComp.setParentRow(_this.eDummyContainer);\n cellComps.push(cellComp);\n });\n var template = cellComps.map(function (cellComp) { return cellComp.getCreateTemplate(); }).join(' ');\n this.eDummyContainer.innerHTML = template;\n // this gets any cellComps that are using components to put the components in\n cellComps.forEach(function (cellComp) { return cellComp.afterAttached(); });\n // we should be able to just take the height of the row at this point, however\n // the row isn't expanding to cover the cell heights, i don't know why, i couldn't\n // figure it out so instead looking at the individual cells instead\n var maxCellHeight = 0;\n for (var i = 0; i < this.eDummyContainer.children.length; i++) {\n var child = this.eDummyContainer.children[i];\n if (child.offsetHeight > maxCellHeight) {\n maxCellHeight = child.offsetHeight;\n }\n }\n // we are finished with the dummy container, so get rid of it\n eBodyContainer.removeChild(this.eDummyContainer);\n cellComps.forEach(function (cellComp) {\n // dunno why we need to detach first, doing it here to be consistent with code in RowComp\n cellComp.detach();\n cellComp.destroy();\n });\n // in case anything left over from last time\n _.clearElement(this.eDummyContainer);\n return maxCellHeight;\n };\n __decorate([\n Autowired('beans')\n ], AutoHeightCalculator.prototype, \"beans\", void 0);\n __decorate([\n Autowired(\"$scope\")\n ], AutoHeightCalculator.prototype, \"$scope\", void 0);\n __decorate([\n Autowired(\"columnController\")\n ], AutoHeightCalculator.prototype, \"columnController\", void 0);\n AutoHeightCalculator = __decorate([\n Bean('autoHeightCalculator')\n ], AutoHeightCalculator);\n return AutoHeightCalculator;\n}());\nexport { AutoHeightCalculator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../widgets/component\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { RefSelector } from \"../widgets/componentAnnotations\";\nimport { Events } from \"../events\";\nimport { _ } from \"../utils\";\nimport { Constants } from \"../constants\";\nvar PaginationComp = /** @class */ (function (_super) {\n __extends(PaginationComp, _super);\n function PaginationComp() {\n return _super.call(this) || this;\n }\n PaginationComp.prototype.postConstruct = function () {\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n this.setTemplate(this.getTemplate());\n this.btFirst.insertAdjacentElement('afterbegin', _.createIconNoSpan(isRtl ? 'last' : 'first', this.gridOptionsWrapper));\n this.btPrevious.insertAdjacentElement('afterbegin', _.createIconNoSpan(isRtl ? 'next' : 'previous', this.gridOptionsWrapper));\n this.btNext.insertAdjacentElement('afterbegin', _.createIconNoSpan(isRtl ? 'previous' : 'next', this.gridOptionsWrapper));\n this.btLast.insertAdjacentElement('afterbegin', _.createIconNoSpan(isRtl ? 'first' : 'last', this.gridOptionsWrapper));\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_SERVER_SIDE) {\n this.serverSideRowModel = this.rowModel;\n }\n var isPaging = this.gridOptionsWrapper.isPagination();\n var paginationPanelEnabled = isPaging && !this.gridOptionsWrapper.isSuppressPaginationPanel();\n if (!paginationPanelEnabled) {\n this.setDisplayed(false);\n return;\n }\n this.addDestroyableEventListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n this.addDestroyableEventListener(this.btFirst, 'click', this.onBtFirst.bind(this));\n this.addDestroyableEventListener(this.btLast, 'click', this.onBtLast.bind(this));\n this.addDestroyableEventListener(this.btNext, 'click', this.onBtNext.bind(this));\n this.addDestroyableEventListener(this.btPrevious, 'click', this.onBtPrevious.bind(this));\n this.onPaginationChanged();\n };\n PaginationComp.prototype.onPaginationChanged = function () {\n this.enableOrDisableButtons();\n this.updateRowLabels();\n this.setCurrentPageLabel();\n this.setTotalLabels();\n };\n PaginationComp.prototype.setCurrentPageLabel = function () {\n var pagesExist = this.paginationProxy.getTotalPages() > 0;\n var currentPage = this.paginationProxy.getCurrentPage();\n var toDisplay = pagesExist ? currentPage + 1 : 0;\n this.lbCurrent.innerHTML = this.formatNumber(toDisplay);\n };\n PaginationComp.prototype.formatNumber = function (value) {\n var userFunc = this.gridOptionsWrapper.getPaginationNumberFormatterFunc();\n if (userFunc) {\n return userFunc({ value: value });\n }\n else {\n return _.formatNumberCommas(value);\n }\n };\n PaginationComp.prototype.getTemplate = function () {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var strPage = localeTextFunc('page', 'Page');\n var strTo = localeTextFunc('to', 'to');\n var strOf = localeTextFunc('of', 'of');\n var strFirst = localeTextFunc('first', 'First');\n var strPrevious = localeTextFunc('previous', 'Previous');\n var strNext = localeTextFunc('next', 'Next');\n var strLast = localeTextFunc('last', 'Last');\n return \"
\\n \\n \" + strTo + \" \" + strOf + \" \\n \\n \\n
\\n \\n
\\n
\\n \\n
\\n \" + strPage + \" \" + strOf + \" \\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\";\n };\n PaginationComp.prototype.onBtNext = function () {\n this.paginationProxy.goToNextPage();\n };\n PaginationComp.prototype.onBtPrevious = function () {\n this.paginationProxy.goToPreviousPage();\n };\n PaginationComp.prototype.onBtFirst = function () {\n this.paginationProxy.goToFirstPage();\n };\n PaginationComp.prototype.onBtLast = function () {\n this.paginationProxy.goToLastPage();\n };\n PaginationComp.prototype.enableOrDisableButtons = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n var disablePreviousAndFirst = currentPage === 0;\n _.addOrRemoveCssClass(this.btPrevious, 'ag-disabled', disablePreviousAndFirst);\n _.addOrRemoveCssClass(this.btFirst, 'ag-disabled', disablePreviousAndFirst);\n var zeroPagesToDisplay = this.isZeroPagesToDisplay();\n var onLastPage = maxRowFound && currentPage === (totalPages - 1);\n var disableNext = onLastPage || zeroPagesToDisplay;\n _.addOrRemoveCssClass(this.btNext, 'ag-disabled', disableNext);\n var disableLast = !maxRowFound || zeroPagesToDisplay || currentPage === (totalPages - 1);\n _.addOrRemoveCssClass(this.btLast, 'ag-disabled', disableLast);\n };\n PaginationComp.prototype.updateRowLabels = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var pageSize = this.paginationProxy.getPageSize();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var rowCount = this.paginationProxy.isLastPageFound() ?\n this.paginationProxy.getMasterRowCount() : null;\n var startRow;\n var endRow;\n if (this.isZeroPagesToDisplay()) {\n startRow = 0;\n endRow = 0;\n }\n else {\n startRow = (pageSize * currentPage) + 1;\n endRow = startRow + pageSize - 1;\n if (maxRowFound && endRow > rowCount) {\n endRow = rowCount;\n }\n }\n this.lbFirstRowOnPage.innerHTML = this.formatNumber(startRow);\n if (this.serverSideRowModel && this.serverSideRowModel.isLoading()) {\n this.lbLastRowOnPage.innerHTML = '?';\n }\n else {\n this.lbLastRowOnPage.innerHTML = this.formatNumber(endRow);\n }\n };\n PaginationComp.prototype.isZeroPagesToDisplay = function () {\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n return maxRowFound && totalPages === 0;\n };\n PaginationComp.prototype.setTotalLabels = function () {\n var lastPageFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n var rowCount = this.paginationProxy.isLastPageFound() ?\n this.paginationProxy.getMasterRowCount() : null;\n if (lastPageFound) {\n this.lbTotal.innerHTML = this.formatNumber(totalPages);\n this.lbRecordCount.innerHTML = this.formatNumber(rowCount);\n }\n else {\n var moreText = this.gridOptionsWrapper.getLocaleTextFunc()('more', 'more');\n this.lbTotal.innerHTML = moreText;\n this.lbRecordCount.innerHTML = moreText;\n }\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], PaginationComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], PaginationComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], PaginationComp.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], PaginationComp.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('rowModel')\n ], PaginationComp.prototype, \"rowModel\", void 0);\n __decorate([\n RefSelector('btFirst')\n ], PaginationComp.prototype, \"btFirst\", void 0);\n __decorate([\n RefSelector('btPrevious')\n ], PaginationComp.prototype, \"btPrevious\", void 0);\n __decorate([\n RefSelector('btNext')\n ], PaginationComp.prototype, \"btNext\", void 0);\n __decorate([\n RefSelector('btLast')\n ], PaginationComp.prototype, \"btLast\", void 0);\n __decorate([\n RefSelector('lbRecordCount')\n ], PaginationComp.prototype, \"lbRecordCount\", void 0);\n __decorate([\n RefSelector('lbFirstRowOnPage')\n ], PaginationComp.prototype, \"lbFirstRowOnPage\", void 0);\n __decorate([\n RefSelector('lbLastRowOnPage')\n ], PaginationComp.prototype, \"lbLastRowOnPage\", void 0);\n __decorate([\n RefSelector('eSummaryPanel')\n ], PaginationComp.prototype, \"eSummaryPanel\", void 0);\n __decorate([\n RefSelector('lbCurrent')\n ], PaginationComp.prototype, \"lbCurrent\", void 0);\n __decorate([\n RefSelector('lbTotal')\n ], PaginationComp.prototype, \"lbTotal\", void 0);\n __decorate([\n PostConstruct\n ], PaginationComp.prototype, \"postConstruct\", null);\n return PaginationComp;\n}(Component));\nexport { PaginationComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { Component } from \"../../widgets/component\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { _ } from '../../utils';\nvar LoadingType;\n(function (LoadingType) {\n LoadingType[LoadingType[\"Loading\"] = 0] = \"Loading\";\n LoadingType[LoadingType[\"NoRows\"] = 1] = \"NoRows\";\n})(LoadingType || (LoadingType = {}));\nvar OverlayWrapperComponent = /** @class */ (function (_super) {\n __extends(OverlayWrapperComponent, _super);\n function OverlayWrapperComponent() {\n var _this = _super.call(this, OverlayWrapperComponent.TEMPLATE) || this;\n _this.inProgress = false;\n _this.destroyRequested = false;\n return _this;\n }\n OverlayWrapperComponent.prototype.postConstruct = function () {\n this.gridOptionsWrapper.addLayoutElement(this.eOverlayWrapper);\n this.setDisplayed(false);\n };\n OverlayWrapperComponent.prototype.setWrapperTypeClass = function (loadingType) {\n _.addOrRemoveCssClass(this.eOverlayWrapper, 'ag-overlay-loading-wrapper', loadingType === LoadingType.Loading);\n _.addOrRemoveCssClass(this.eOverlayWrapper, 'ag-overlay-no-rows-wrapper', loadingType === LoadingType.NoRows);\n };\n OverlayWrapperComponent.prototype.showLoadingOverlay = function () {\n var workItem = this.userComponentFactory.newLoadingOverlayComponent({\n api: this.gridOptionsWrapper.getApi()\n });\n this.showOverlay(workItem);\n };\n OverlayWrapperComponent.prototype.showNoRowsOverlay = function () {\n var workItem = this.userComponentFactory.newNoRowsOverlayComponent({\n api: this.gridOptionsWrapper.getApi()\n });\n this.showOverlay(workItem);\n };\n OverlayWrapperComponent.prototype.showOverlay = function (workItem) {\n var _this = this;\n if (this.inProgress) {\n return;\n }\n this.setWrapperTypeClass(LoadingType.NoRows);\n this.destroyActiveOverlay();\n this.inProgress = true;\n workItem.then(function (comp) {\n _this.inProgress = false;\n _this.eOverlayWrapper.appendChild(comp.getGui());\n _this.activeOverlay = comp;\n if (_this.destroyRequested) {\n _this.destroyRequested = false;\n _this.destroyActiveOverlay();\n }\n });\n this.setDisplayed(true);\n };\n OverlayWrapperComponent.prototype.destroyActiveOverlay = function () {\n if (this.inProgress) {\n this.destroyRequested = true;\n return;\n }\n if (!this.activeOverlay) {\n return;\n }\n if (this.activeOverlay.destroy) {\n this.activeOverlay.destroy();\n }\n this.activeOverlay = undefined;\n _.clearElement(this.eOverlayWrapper);\n };\n OverlayWrapperComponent.prototype.hideOverlay = function () {\n this.destroyActiveOverlay();\n this.setDisplayed(false);\n };\n OverlayWrapperComponent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.destroyActiveOverlay();\n };\n // wrapping in outer div, and wrapper, is needed to center the loading icon\n // The idea for centering came from here: http://www.vanseodesign.com/css/vertical-centering/\n OverlayWrapperComponent.TEMPLATE = \"
\\n
\\n
\\n
\\n
\";\n __decorate([\n Autowired('gridOptionsWrapper')\n ], OverlayWrapperComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], OverlayWrapperComponent.prototype, \"userComponentFactory\", void 0);\n __decorate([\n RefSelector('eOverlayWrapper')\n ], OverlayWrapperComponent.prototype, \"eOverlayWrapper\", void 0);\n __decorate([\n PostConstruct\n ], OverlayWrapperComponent.prototype, \"postConstruct\", null);\n return OverlayWrapperComponent;\n}(Component));\nexport { OverlayWrapperComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct, PreDestroy } from \"../context/context\";\nimport { Constants } from \"../constants\";\n/**\n * For Master Detail, it is required to keep components between expanding & collapsing parents.\n * For example a user expands row A (and shows a detail grid for this row), then when row A\n * is closed, we want to keep the detail grid, so next time row A is expanded the detail grid\n * is showed with it's context intact, eg if user sorted in the detail grid, that sort should\n * still be applied after the detail grid is shown for the second time.\n */\nvar DetailRowCompCache = /** @class */ (function () {\n function DetailRowCompCache() {\n this.cacheItems = [];\n }\n DetailRowCompCache.prototype.postConstruct = function () {\n this.active = this.gridOptionsWrapper.isKeepDetailRows();\n this.maxCacheSize = this.gridOptionsWrapper.getKeepDetailRowsCount();\n };\n DetailRowCompCache.prototype.addOrDestroy = function (rowNode, pinned, comp) {\n // only accept detail rows\n var doNotUseCache = !this.active || !rowNode.detail;\n if (doNotUseCache) {\n this.destroyFullWidthRow(comp);\n return;\n }\n var item = this.getCacheItem(rowNode, true);\n // put the comp in the right location of the item.\n // we also destroy any previous comp - this should never happen\n // as the logic outside of this class shouldn't be adding same item to the\n // cache twice, however we cater for it in case in future releases code\n // outside of this class is changed and this could happen.\n switch (pinned) {\n case Constants.PINNED_LEFT:\n this.destroyFullWidthRow(item.left);\n item.left = comp;\n break;\n case Constants.PINNED_RIGHT:\n this.destroyFullWidthRow(item.right);\n item.right = comp;\n break;\n default:\n this.destroyFullWidthRow(item.center);\n item.center = comp;\n break;\n }\n this.cacheItems.sort(function (a, b) {\n return b.lastAccessedTime - a.lastAccessedTime;\n });\n this.purgeCache(this.maxCacheSize);\n };\n DetailRowCompCache.prototype.getCacheItem = function (rowNode, autoCreate) {\n if (autoCreate === void 0) { autoCreate = false; }\n var res;\n for (var i = 0; i < this.cacheItems.length; i++) {\n var item = this.cacheItems[i];\n if (item.rowNode === rowNode) {\n res = item;\n break;\n }\n }\n if (!res && autoCreate) {\n res = {\n rowNode: rowNode\n };\n this.cacheItems.push(res);\n }\n if (res) {\n this.stampCacheItem(res);\n }\n return res;\n };\n DetailRowCompCache.prototype.stampCacheItem = function (item) {\n item.lastAccessedTime = new Date().getTime();\n };\n DetailRowCompCache.prototype.destroyFullWidthRow = function (comp) {\n if (comp && comp.destroy) {\n comp.destroy();\n }\n };\n DetailRowCompCache.prototype.purgeCache = function (startIndex) {\n // delete all rows past the index of interest\n for (var i = startIndex; i < this.cacheItems.length; i++) {\n var item = this.cacheItems[i];\n this.destroyFullWidthRow(item.center);\n this.destroyFullWidthRow(item.left);\n this.destroyFullWidthRow(item.right);\n }\n // change the length of the array so it no longer contains the deleted items\n if (this.cacheItems.length > startIndex) {\n this.cacheItems.length = startIndex;\n }\n };\n DetailRowCompCache.prototype.get = function (rowNode, pinned) {\n if (!rowNode.detail) {\n return undefined;\n }\n var item = this.getCacheItem(rowNode);\n var res;\n if (item) {\n switch (pinned) {\n case Constants.PINNED_LEFT:\n if (item.left) {\n res = item.left;\n item.left = undefined;\n }\n break;\n case Constants.PINNED_RIGHT:\n if (item.right) {\n res = item.right;\n item.right = undefined;\n }\n break;\n default:\n if (item.center) {\n res = item.center;\n item.center = undefined;\n }\n break;\n }\n }\n return res;\n };\n DetailRowCompCache.prototype.destroy = function () {\n this.purgeCache(0);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], DetailRowCompCache.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], DetailRowCompCache.prototype, \"postConstruct\", null);\n __decorate([\n PreDestroy\n ], DetailRowCompCache.prototype, \"destroy\", null);\n DetailRowCompCache = __decorate([\n Bean('detailRowCompCache')\n ], DetailRowCompCache);\n return DetailRowCompCache;\n}());\nexport { DetailRowCompCache };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar UndoRedoAction = /** @class */ (function () {\n function UndoRedoAction(cellValueChanges) {\n this.cellValueChanges = cellValueChanges;\n }\n return UndoRedoAction;\n}());\nexport { UndoRedoAction };\nvar FillUndoRedoAction = /** @class */ (function (_super) {\n __extends(FillUndoRedoAction, _super);\n function FillUndoRedoAction(cellValueChanges, initialRange, finalRange) {\n var _this = _super.call(this, cellValueChanges) || this;\n _this.initialRange = initialRange;\n _this.finalRange = finalRange;\n return _this;\n }\n return FillUndoRedoAction;\n}(UndoRedoAction));\nexport { FillUndoRedoAction };\nvar UndoRedoStack = /** @class */ (function () {\n function UndoRedoStack(maxStackSize) {\n this.actionStack = [];\n this.maxStackSize = maxStackSize ? maxStackSize : UndoRedoStack.DEFAULT_STACK_SIZE;\n this.actionStack = new Array(this.maxStackSize);\n }\n UndoRedoStack.prototype.pop = function () {\n return this.actionStack.pop();\n };\n UndoRedoStack.prototype.push = function (item) {\n var shouldAddActions = item.cellValueChanges && item.cellValueChanges.length > 0;\n if (!shouldAddActions) {\n return;\n }\n if (this.actionStack.length === this.maxStackSize) {\n this.actionStack.shift();\n }\n this.actionStack.push(item);\n };\n UndoRedoStack.prototype.clear = function () {\n this.actionStack = [];\n };\n UndoRedoStack.DEFAULT_STACK_SIZE = 10;\n return UndoRedoStack;\n}());\nexport { UndoRedoStack };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { Events } from \"../eventKeys\";\nimport { FillUndoRedoAction, UndoRedoAction, UndoRedoStack } from \"./undoRedoStack\";\nimport { Constants } from \"../constants\";\nimport { ModuleNames } from \"../modules/moduleNames\";\nimport { ModuleRegistry } from \"../modules/moduleRegistry\";\nvar UndoRedoService = /** @class */ (function () {\n function UndoRedoService() {\n var _this = this;\n this.cellValueChanges = [];\n this.isCellEditing = false;\n this.isRowEditing = false;\n this.isPasting = false;\n this.isFilling = false;\n this.onCellValueChanged = function (event) {\n var shouldCaptureAction = _this.isCellEditing || _this.isRowEditing || _this.isPasting || _this.isFilling;\n if (!shouldCaptureAction) {\n return;\n }\n var rowPinned = event.rowPinned, rowIndex = event.rowIndex, column = event.column, oldValue = event.oldValue, value = event.value;\n var cellValueChange = {\n rowPinned: rowPinned,\n rowIndex: rowIndex,\n columnId: column.getColId(),\n oldValue: oldValue,\n newValue: value\n };\n _this.cellValueChanges.push(cellValueChange);\n };\n this.clearStacks = function () {\n _this.undoStack.clear();\n _this.redoStack.clear();\n };\n }\n UndoRedoService.prototype.init = function () {\n if (!this.gridOptionsWrapper.isUndoRedoCellEditing()) {\n return;\n }\n var undoRedoLimit = this.gridOptionsWrapper.getUndoRedoCellEditingLimit();\n if (undoRedoLimit <= 0) {\n return;\n }\n this.undoStack = new UndoRedoStack(undoRedoLimit);\n this.redoStack = new UndoRedoStack(undoRedoLimit);\n this.addRowEditingListeners();\n this.addCellEditingListeners();\n this.addPasteListeners();\n this.addFillListeners();\n this.eventService.addEventListener(Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged);\n // undo / redo is restricted to actual editing so we clear the stacks when other operations are\n // performed that change the order of the row / cols.\n this.eventService.addEventListener(Events.EVENT_MODEL_UPDATED, this.clearStacks);\n this.eventService.addEventListener(Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.clearStacks);\n this.eventService.addEventListener(Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.clearStacks);\n this.eventService.addEventListener(Events.EVENT_COLUMN_GROUP_OPENED, this.clearStacks);\n this.eventService.addEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.clearStacks);\n this.eventService.addEventListener(Events.EVENT_COLUMN_MOVED, this.clearStacks);\n this.eventService.addEventListener(Events.EVENT_COLUMN_PINNED, this.clearStacks);\n this.eventService.addEventListener(Events.EVENT_COLUMN_VISIBLE, this.clearStacks);\n this.eventService.addEventListener(Events.EVENT_ROW_DRAG_END, this.clearStacks);\n };\n UndoRedoService.prototype.undo = function () {\n if (!this.undoStack) {\n return;\n }\n var undoAction = this.undoStack.pop();\n if (!undoAction || !undoAction.cellValueChanges) {\n return;\n }\n this.processAction(undoAction, function (cellValueChange) { return cellValueChange.oldValue; });\n if (undoAction instanceof FillUndoRedoAction) {\n this.processRangeAndCellFocus(undoAction.cellValueChanges, undoAction.initialRange);\n }\n else {\n this.processRangeAndCellFocus(undoAction.cellValueChanges);\n }\n this.redoStack.push(undoAction);\n };\n UndoRedoService.prototype.redo = function () {\n if (!this.redoStack) {\n return;\n }\n var redoAction = this.redoStack.pop();\n if (!redoAction || !redoAction.cellValueChanges) {\n return;\n }\n this.processAction(redoAction, function (cellValueChange) { return cellValueChange.newValue; });\n if (redoAction instanceof FillUndoRedoAction) {\n this.processRangeAndCellFocus(redoAction.cellValueChanges, redoAction.finalRange);\n }\n else {\n this.processRangeAndCellFocus(redoAction.cellValueChanges);\n }\n this.undoStack.push(redoAction);\n };\n UndoRedoService.prototype.processAction = function (action, valueExtractor) {\n var _this = this;\n action.cellValueChanges.forEach(function (cellValueChange) {\n var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned, columnId = cellValueChange.columnId;\n var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };\n var currentRow = _this.getRowNode(rowPosition);\n // checks if the row has been filtered out\n if (currentRow.rowTop == null) {\n return;\n }\n currentRow.setDataValue(columnId, valueExtractor(cellValueChange));\n });\n };\n UndoRedoService.prototype.processRangeAndCellFocus = function (cellValueChanges, range) {\n if (range) {\n var startRow = range.startRow;\n var endRow = range.endRow;\n var lastFocusedCell_1 = {\n rowPinned: startRow.rowPinned,\n rowIndex: startRow.rowIndex,\n columnId: range.startColumn.getColId()\n };\n this.setLastFocusedCell(lastFocusedCell_1);\n var cellRangeParams = {\n rowStartIndex: startRow.rowIndex,\n rowStartPinned: startRow.rowPinned,\n rowEndIndex: endRow.rowIndex,\n rowEndPinned: endRow.rowPinned,\n columnStart: range.startColumn,\n columns: range.columns\n };\n this.gridApi.addCellRange(cellRangeParams);\n return;\n }\n var cellValueChange = cellValueChanges[0];\n var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned;\n var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };\n var row = this.getRowNode(rowPosition);\n var lastFocusedCell = {\n rowPinned: cellValueChange.rowPinned,\n rowIndex: row.rowIndex,\n columnId: cellValueChange.columnId\n };\n this.setLastFocusedCell(lastFocusedCell);\n };\n UndoRedoService.prototype.setLastFocusedCell = function (lastFocusedCell) {\n var rowIndex = lastFocusedCell.rowIndex, columnId = lastFocusedCell.columnId, rowPinned = lastFocusedCell.rowPinned;\n this.gridApi.ensureIndexVisible(rowIndex);\n this.gridApi.ensureColumnVisible(columnId);\n if (ModuleRegistry.isRegistered(ModuleNames.RangeSelectionModule)) {\n this.gridApi.clearRangeSelection();\n }\n this.focusedCellController.setFocusedCell(rowIndex, columnId, rowPinned, true);\n };\n UndoRedoService.prototype.addRowEditingListeners = function () {\n var _this = this;\n this.eventService.addEventListener(Events.EVENT_ROW_EDITING_STARTED, function () {\n _this.isRowEditing = true;\n });\n this.eventService.addEventListener(Events.EVENT_ROW_EDITING_STOPPED, function () {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n _this.isRowEditing = false;\n });\n };\n UndoRedoService.prototype.addCellEditingListeners = function () {\n var _this = this;\n this.eventService.addEventListener(Events.EVENT_CELL_EDITING_STARTED, function () {\n _this.isCellEditing = true;\n });\n this.eventService.addEventListener(Events.EVENT_CELL_EDITING_STOPPED, function () {\n _this.isCellEditing = false;\n var shouldPushAction = !_this.isRowEditing && !_this.isPasting && !_this.isFilling;\n if (shouldPushAction) {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n }\n });\n };\n UndoRedoService.prototype.addPasteListeners = function () {\n var _this = this;\n this.eventService.addEventListener(Events.EVENT_PASTE_START, function () {\n _this.isPasting = true;\n });\n this.eventService.addEventListener(Events.EVENT_PASTE_END, function () {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n _this.isPasting = false;\n });\n };\n UndoRedoService.prototype.addFillListeners = function () {\n var _this = this;\n this.eventService.addEventListener(Events.EVENT_FILL_START, function () {\n _this.isFilling = true;\n });\n this.eventService.addEventListener(Events.EVENT_FILL_END, function (event) {\n var action = new FillUndoRedoAction(_this.cellValueChanges, event.initialRange, event.finalRange);\n _this.pushActionsToUndoStack(action);\n _this.isFilling = false;\n });\n };\n UndoRedoService.prototype.pushActionsToUndoStack = function (action) {\n this.undoStack.push(action);\n this.cellValueChanges = [];\n this.redoStack.clear();\n };\n UndoRedoService.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case Constants.PINNED_TOP:\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case Constants.PINNED_BOTTOM:\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], UndoRedoService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('focusedCellController')\n ], UndoRedoService.prototype, \"focusedCellController\", void 0);\n __decorate([\n Autowired('eventService')\n ], UndoRedoService.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], UndoRedoService.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('rowModel')\n ], UndoRedoService.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], UndoRedoService.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n PostConstruct\n ], UndoRedoService.prototype, \"init\", null);\n UndoRedoService = __decorate([\n Bean('undoRedoService')\n ], UndoRedoService);\n return UndoRedoService;\n}());\nexport { UndoRedoService };\n"],"sourceRoot":""}