{"version":3,"file":"ag-grid-angular.mjs","sources":["../../../projects/ag-grid-angular/src/lib/angularFrameworkComponentWrapper.ts","../../../projects/ag-grid-angular/src/lib/angularFrameworkEventListenerService.ts","../../../projects/ag-grid-angular/src/lib/angularFrameworkOverrides.ts","../../../projects/ag-grid-angular/src/lib/ag-grid-angular.component.ts","../../../projects/ag-grid-angular/src/lib/ag-grid-angular.module.ts","../../../projects/ag-grid-angular/src/ag-grid-angular.ts"],"sourcesContent":["import type { ComponentRef } from '@angular/core';\nimport { Component, Injectable, ViewContainerRef, inject } from '@angular/core';\n\nimport type { FrameworkComponentWrapper, IFilter, WrappableInterface } from 'ag-grid-community';\nimport { BaseComponentWrapper, _removeFromParent } from 'ag-grid-community';\n\nimport type { AngularFrameworkOverrides } from './angularFrameworkOverrides';\nimport type { AgFrameworkComponent } from './interfaces';\n\n// To speed up the removal of custom components we create a number of shards to contain them.\n// Removing a single component calls a function within Angular called removeFromArray.\n// This is a lot faster if the array is smaller.\n@Component({\n    selector: 'ag-component-container',\n    template: '',\n})\nexport class AgComponentContainer {\n    public vcr = inject(ViewContainerRef);\n}\nconst NUM_SHARDS = 16;\nlet shardIdx = 0;\n\nfunction createComponentContainers(vcr: ViewContainerRef): Map<number, ComponentRef<AgComponentContainer>> {\n    const containerMap = new Map<number, ComponentRef<AgComponentContainer>>();\n    for (let i = 0; i < NUM_SHARDS; i++) {\n        const container = vcr.createComponent(AgComponentContainer);\n        containerMap.set(i, container);\n        _removeFromParent(container.location.nativeElement);\n    }\n    return containerMap;\n}\n\n/**\n * These methods are called on a hot path for every row so we do not want to enter / exit NgZone each time.\n * Also these methods should not be used to update the UI, so we don't need to run them inside Angular.\n */\nconst runOutsideMethods = new Set<keyof IFilter>(['doesFilterPass', 'isFilterActive']);\n\n@Injectable()\nexport class AngularFrameworkComponentWrapper\n    extends BaseComponentWrapper<WrappableInterface>\n    implements FrameworkComponentWrapper\n{\n    private viewContainerRef: ViewContainerRef;\n    private angularFrameworkOverrides: AngularFrameworkOverrides;\n    private compShards: Map<number, ComponentRef<AgComponentContainer>>;\n\n    public setViewContainerRef(\n        viewContainerRef: ViewContainerRef,\n        angularFrameworkOverrides: AngularFrameworkOverrides\n    ) {\n        this.viewContainerRef = viewContainerRef;\n        this.angularFrameworkOverrides = angularFrameworkOverrides;\n    }\n\n    protected createWrapper(OriginalConstructor: { new (): any }): WrappableInterface {\n        const angularFrameworkOverrides = this.angularFrameworkOverrides;\n        const that = this;\n        that.compShards ??= createComponentContainers(this.viewContainerRef);\n\n        class DynamicAgNg2Component\n            extends BaseGuiComponent<any, AgFrameworkComponent<any>>\n            implements WrappableInterface\n        {\n            override init(params: any): void {\n                angularFrameworkOverrides.runInsideAngular(() => {\n                    super.init(params);\n                    this._componentRef.changeDetectorRef.detectChanges();\n                });\n            }\n\n            protected createComponent(): ComponentRef<AgFrameworkComponent<any>> {\n                return that.createComponent(OriginalConstructor);\n            }\n\n            hasMethod(name: string): boolean {\n                return wrapper.getFrameworkComponentInstance()[name] != null;\n            }\n\n            callMethod(name: string, args: IArguments): void {\n                const componentRef = this.getFrameworkComponentInstance();\n                const methodCall = componentRef[name];\n\n                if (runOutsideMethods.has(name as any)) {\n                    return methodCall.apply(componentRef, args);\n                }\n                return angularFrameworkOverrides.runInsideAngular(() => methodCall.apply(componentRef, args));\n            }\n\n            addMethod(name: string, callback: (...args: any[]) => any): void {\n                (wrapper as any)[name] = callback;\n            }\n        }\n        const wrapper = new DynamicAgNg2Component();\n        return wrapper;\n    }\n\n    public createComponent<T>(componentType: { new (...args: any[]): T }): ComponentRef<T> {\n        shardIdx = (shardIdx + 1) % NUM_SHARDS;\n        const container = this.compShards.get(shardIdx)!;\n        return container.instance.vcr.createComponent(componentType);\n    }\n}\n\nabstract class BaseGuiComponent<P, T extends AgFrameworkComponent<P>> {\n    protected _params: P;\n    protected _eGui: HTMLElement;\n    protected _componentRef: ComponentRef<T>;\n    protected _agAwareComponent: T;\n    protected _frameworkComponentInstance: any; // the users component - for accessing methods they create\n\n    protected init(params: P): void {\n        this._params = params;\n\n        this._componentRef = this.createComponent();\n        this._agAwareComponent = this._componentRef.instance;\n        this._frameworkComponentInstance = this._componentRef.instance;\n        this._eGui = this._componentRef.location.nativeElement;\n        // Angular appends the component to the DOM, so remove it\n        _removeFromParent(this._eGui);\n\n        this._agAwareComponent.agInit(this._params);\n    }\n\n    public getGui(): HTMLElement {\n        return this._eGui;\n    }\n\n    /** `getGui()` returns the `ng-component` element. This returns the actual root element. */\n    public getRootElement(): HTMLElement {\n        const firstChild = this._eGui.firstChild;\n        return firstChild as HTMLElement;\n    }\n\n    public destroy(): void {\n        if (this._frameworkComponentInstance && typeof this._frameworkComponentInstance.destroy === 'function') {\n            this._frameworkComponentInstance.destroy();\n        }\n        this._componentRef?.destroy();\n    }\n\n    public getFrameworkComponentInstance(): any {\n        return this._frameworkComponentInstance;\n    }\n\n    protected abstract createComponent(): ComponentRef<T>;\n}\n","import type { AngularFrameworkOverrides } from './angularFrameworkOverrides';\n\ntype EventTypeToWrap = string;\n\nexport class AngularFrameworkEventListenerService<\n    TEventListener extends (e: any) => void,\n    TGlobalEventListener extends (name: string, e: any) => void,\n> {\n    // Map from user listener to wrapped listener so we can remove listener provided by user\n    private readonly wrappedListeners: Map<EventTypeToWrap, Map<TEventListener, TEventListener>> = new Map();\n    private readonly wrappedGlobalListeners: Map<TGlobalEventListener, TGlobalEventListener> = new Map();\n\n    constructor(private readonly frameworkOverrides: AngularFrameworkOverrides) {}\n\n    public wrap(eventType: EventTypeToWrap, userListener: TEventListener): TEventListener {\n        const { frameworkOverrides, wrappedListeners } = this;\n        let listener: any = userListener;\n\n        if (frameworkOverrides.shouldWrapOutgoing) {\n            listener = (event: any) => {\n                frameworkOverrides.wrapOutgoing(() => userListener(event));\n            };\n\n            let eventListeners = wrappedListeners.get(eventType);\n            if (!eventListeners) {\n                eventListeners = new Map();\n                wrappedListeners.set(eventType, eventListeners);\n            }\n            eventListeners.set(userListener, listener);\n        }\n        return listener;\n    }\n\n    public wrapGlobal(userListener: TGlobalEventListener): TGlobalEventListener {\n        const { frameworkOverrides, wrappedGlobalListeners } = this;\n        let listener: any = userListener;\n\n        if (frameworkOverrides.shouldWrapOutgoing) {\n            listener = (eventType: any, event: any) => {\n                frameworkOverrides.wrapOutgoing(() => userListener(eventType, event));\n            };\n            wrappedGlobalListeners.set(userListener, listener);\n        }\n        return listener;\n    }\n\n    public unwrap(eventType: EventTypeToWrap, userListener: TEventListener): TEventListener {\n        const { wrappedListeners } = this;\n        const eventListeners = wrappedListeners.get(eventType);\n        if (eventListeners) {\n            const wrapped = eventListeners.get(userListener);\n            if (wrapped) {\n                eventListeners.delete(userListener);\n                if (eventListeners.size === 0) {\n                    wrappedListeners.delete(eventType);\n                }\n                return wrapped;\n            }\n        }\n        return userListener;\n    }\n    public unwrapGlobal(userListener: TGlobalEventListener): TGlobalEventListener {\n        const { wrappedGlobalListeners } = this;\n        const wrapped = wrappedGlobalListeners.get(userListener);\n        if (wrapped) {\n            wrappedGlobalListeners.delete(userListener);\n            return wrapped;\n        }\n        return userListener;\n    }\n}\n","import { Injectable, NgZone } from '@angular/core';\n\nimport type {\n    FrameworkOverridesIncomingSource,\n    IFrameworkEventListenerService,\n    LocalEventService,\n} from 'ag-grid-community';\nimport { VanillaFrameworkOverrides } from 'ag-grid-community';\n\nimport { AngularFrameworkEventListenerService } from './angularFrameworkEventListenerService';\n\n@Injectable()\nexport class AngularFrameworkOverrides extends VanillaFrameworkOverrides {\n    public override readonly batchFrameworkComps: boolean = true;\n\n    // Flag used to control Zone behaviour when running tests as many test features rely on Zone.\n    private readonly isRunningWithinTestZone: boolean = false;\n\n    private readonly runOutside: <T>(callback: () => T, source?: FrameworkOverridesIncomingSource) => T;\n\n    constructor(private readonly _ngZone: NgZone) {\n        super('angular');\n\n        this.isRunningWithinTestZone =\n            (window as any)?.AG_GRID_UNDER_TEST ?? !!(window as any)?.Zone?.AsyncTestZoneSpec;\n\n        if (!this._ngZone) {\n            this.runOutside = (callback) => callback();\n        } else if (this.isRunningWithinTestZone) {\n            this.runOutside = (callback, source) => {\n                if (source === 'resize-observer' || source === 'popupPositioning') {\n                    // ensure resize observer callbacks are run outside of Angular even under test due to Jest not supporting ResizeObserver\n                    // which means it just loops continuously with a setTimeout with no way to flush the queue or have fixture.whenStable() resolve.\n                    return this._ngZone.runOutsideAngular(callback);\n                }\n                // When under test run inside Angular so that tests can use fixture.whenStable() to wait for async operations to complete.\n                return callback();\n            };\n        } else {\n            this.runOutside = (callback) => this._ngZone.runOutsideAngular(callback);\n        }\n    }\n\n    // Make all events run outside Angular as they often trigger the setup of event listeners\n    // By having the event listeners outside Angular we can avoid triggering change detection\n    // This also means that if a user calls an AG Grid API method from within their component\n    // the internal side effects will not trigger change detection. Without this the events would\n    // run inside Angular and trigger change detection as the source of the event was within the angular zone.\n    override wrapIncoming: <T>(callback: () => T, source?: FrameworkOverridesIncomingSource) => T = (\n        callback,\n        source\n    ) => this.runOutside(callback, source);\n\n    /**\n     * The shouldWrapOutgoing property is used to determine if events should be run outside of Angular or not.\n     * If an event handler is registered outside of Angular then we should not wrap the event handler\n     * with runInsideAngular() as the user may not have wanted this.\n     * This is also used to not wrap internal event listeners that are registered with RowNodes and Columns.\n     */\n    public get shouldWrapOutgoing() {\n        return this._ngZone && NgZone.isInAngularZone();\n    }\n\n    /**\n     * Make sure that any code that is executed outside of AG Grid is running within the Angular zone.\n     * This means users can update templates and use binding without having to do anything extra.\n     */\n    override wrapOutgoing: <T>(callback: () => T) => T = (callback) => this.runInsideAngular(callback);\n\n    public createLocalEventListenerWrapper(\n        existingFrameworkEventListenerService: IFrameworkEventListenerService<any, any> | undefined,\n        localEventService: LocalEventService<any>\n    ): IFrameworkEventListenerService<any, any> | undefined {\n        if (this.shouldWrapOutgoing) {\n            return (\n                existingFrameworkEventListenerService ??\n                (() => {\n                    localEventService.setFrameworkOverrides(this);\n                    return new AngularFrameworkEventListenerService(this);\n                })()\n            );\n        }\n\n        return undefined;\n    }\n\n    public createGlobalEventListenerWrapper(): IFrameworkEventListenerService<any, any> {\n        return new AngularFrameworkEventListenerService(this);\n    }\n\n    override isFrameworkComponent(comp: any): boolean {\n        if (!comp) {\n            return false;\n        }\n        const prototype = comp.prototype;\n        return prototype && 'agInit' in prototype;\n    }\n\n    runInsideAngular<T>(callback: () => T): T {\n        if (!this._ngZone || NgZone.isInAngularZone()) {\n            return callback();\n        }\n\n        // Check for _ngZone existence as it is not present when Zoneless\n        return this._ngZone.run(callback);\n    }\n\n    runOutsideAngular<T>(callback: () => T, source?: FrameworkOverridesIncomingSource): T {\n        return this.runOutside(callback, source);\n    }\n}\n","/* eslint-disable no-duplicate-imports */\n// False positive lint error, ElementRef and co can't be type imports\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    ViewContainerRef,\n    ViewEncapsulation,\n    booleanAttribute,\n} from '@angular/core';\nimport type { AgChartThemeOverrides } from 'ag-charts-types';\n\n// @START_IMPORTS@\nimport type {\n    AdvancedFilterBuilderVisibleChangedEvent,\n    AlignedGrid,\n    AlwaysPassFilter,\n    AsyncTransactionsFlushedEvent,\n    AutoGroupColumnDef,\n    AutoSizeStrategy,\n    BatchEditingStartedEvent,\n    BatchEditingStoppedEvent,\n    BodyScrollEndEvent,\n    BodyScrollEvent,\n    BulkEditingStartedEvent,\n    BulkEditingStoppedEvent,\n    CellClickedEvent,\n    CellContextMenuEvent,\n    CellDoubleClickedEvent,\n    CellEditRequestEvent,\n    CellEditingStartedEvent,\n    CellEditingStoppedEvent,\n    CellFocusedEvent,\n    CellKeyDownEvent,\n    CellMouseDownEvent,\n    CellMouseOutEvent,\n    CellMouseOverEvent,\n    CellSelectionChangedEvent,\n    CellSelectionDeleteEndEvent,\n    CellSelectionDeleteStartEvent,\n    CellSelectionOptions,\n    CellValueChangedEvent,\n    ChartCreatedEvent,\n    ChartDestroyedEvent,\n    ChartOptionsChangedEvent,\n    ChartRangeSelectionChangedEvent,\n    ChartToolPanelsDef,\n    ColDef,\n    ColGroupDef,\n    ColTypeDefs,\n    ColumnEverythingChangedEvent,\n    ColumnGroupOpenedEvent,\n    ColumnHeaderClickedEvent,\n    ColumnHeaderContextMenuEvent,\n    ColumnHeaderMouseLeaveEvent,\n    ColumnHeaderMouseOverEvent,\n    ColumnMenuVisibleChangedEvent,\n    ColumnMovedEvent,\n    ColumnPinnedEvent,\n    ColumnPivotChangedEvent,\n    ColumnPivotModeChangedEvent,\n    ColumnResizedEvent,\n    ColumnRowGroupChangedEvent,\n    ColumnValueChangedEvent,\n    ColumnVisibleEvent,\n    ColumnsResetEvent,\n    ComponentStateChangedEvent,\n    Components,\n    ContextMenuVisibleChangedEvent,\n    CreateChartContainer,\n    CsvExportParams,\n    CustomChartThemes,\n    CutEndEvent,\n    CutStartEvent,\n    DataTypeDefinitions,\n    DefaultChartMenuItem,\n    DisplayedColumnsChangedEvent,\n    DoesExternalFilterPass,\n    DomLayoutType,\n    DragCancelledEvent,\n    DragStartedEvent,\n    DragStoppedEvent,\n    EditStrategyType,\n    EditValidationCommitType,\n    ExcelExportParams,\n    ExcelStyle,\n    ExpandOrCollapseAllEvent,\n    FillEndEvent,\n    FillOperation,\n    FillStartEvent,\n    FilterChangedEvent,\n    FilterHandlers,\n    FilterModifiedEvent,\n    FilterOpenedEvent,\n    FilterUiChangedEvent,\n    FindChangedEvent,\n    FindOptions,\n    FirstDataRenderedEvent,\n    FloatingFilterUiChangedEvent,\n    FocusGridInnerElement,\n    FormulaDataSource,\n    FormulaFuncs,\n    FullWidthCellKeyDownEvent,\n    GetBusinessKeyForNode,\n    GetChartMenuItems,\n    GetChartToolbarItems,\n    GetChildCount,\n    GetContextMenuItems,\n    GetDataPath,\n    GetDocument,\n    GetFullRowEditValidationErrors,\n    GetGroupRowAgg,\n    GetLocaleText,\n    GetMainMenuItems,\n    GetRowClass,\n    GetRowHeight,\n    GetRowIdFunc,\n    GetRowStyle,\n    GetServerSideGroupKey,\n    GetServerSideGroupLevelParams,\n    GridColumnsChangedEvent,\n    GridReadyEvent,\n    GridSizeChangedEvent,\n    GridState,\n    GroupHierarchyConfig,\n    HeaderFocusedEvent,\n    IAdvancedFilterBuilderParams,\n    IAdvancedFilterParams,\n    IAggFuncs,\n    IDatasource,\n    IServerSideDatasource,\n    IViewportDatasource,\n    Icons,\n    InitialGroupOrderComparator,\n    IsApplyServerSideTransaction,\n    IsExternalFilterPresent,\n    IsFullWidthRow,\n    IsGroupOpenByDefault,\n    IsRowFilterable,\n    IsRowMaster,\n    IsRowPinnable,\n    IsRowPinned,\n    IsRowSelectable,\n    IsRowValidDropPositionCallback,\n    IsServerSideGroup,\n    IsServerSideGroupOpenByDefault,\n    LoadingCellRendererSelectorFunc,\n    LocaleText,\n    MenuItemDef,\n    ModelUpdatedEvent,\n    NavigateToNextCell,\n    NavigateToNextHeader,\n    NewColumnsLoadedEvent,\n    OverlaySelectorFunc,\n    OverlayType,\n    PaginationChangedEvent,\n    PaginationNumberFormatter,\n    PasteEndEvent,\n    PasteStartEvent,\n    PinnedRowDataChangedEvent,\n    PinnedRowsChangedEvent,\n    PivotMaxColumnsExceededEvent,\n    PostProcessPopup,\n    PostSortRows,\n    ProcessCellForClipboard,\n    ProcessCellFromClipboard,\n    ProcessDataFromClipboard,\n    ProcessGroupHeaderForClipboard,\n    ProcessHeaderForClipboard,\n    ProcessPivotResultColDef,\n    ProcessPivotResultColGroupDef,\n    ProcessRowPostCreate,\n    ProcessUnpinnedColumns,\n    QuickFilterMatcher,\n    QuickFilterParser,\n    RangeDeleteEndEvent,\n    RangeDeleteStartEvent,\n    RangeSelectionChangedEvent,\n    RedoEndedEvent,\n    RedoStartedEvent,\n    RowClassRules,\n    RowClickedEvent,\n    RowDataUpdatedEvent,\n    RowDoubleClickedEvent,\n    RowDragCancelEvent,\n    RowDragEndEvent,\n    RowDragEnterEvent,\n    RowDragLeaveEvent,\n    RowDragMoveEvent,\n    RowDragTextFunc,\n    RowEditingStartedEvent,\n    RowEditingStoppedEvent,\n    RowGroupOpenedEvent,\n    RowGroupingDisplayType,\n    RowModelType,\n    RowNumbersOptions,\n    RowResizeEndedEvent,\n    RowResizeStartedEvent,\n    RowSelectedEvent,\n    RowSelectionOptions,\n    RowStyle,\n    RowValueChangedEvent,\n    SelectionChangedEvent,\n    SelectionColumnDef,\n    SendToClipboard,\n    SideBarDef,\n    SortChangedEvent,\n    SortDirection,\n    StateUpdatedEvent,\n    StatusBar,\n    StoreRefreshedEvent,\n    TabToNextCell,\n    TabToNextGridContainer,\n    TabToNextHeader,\n    Theme,\n    ToolPanelSizeChangedEvent,\n    ToolPanelVisibleChangedEvent,\n    TooltipHideEvent,\n    TooltipShowEvent,\n    TreeDataDisplayType,\n    UndoEndedEvent,\n    UndoStartedEvent,\n    UseGroupTotalRow,\n    ViewportChangedEvent,\n    VirtualColumnsChangedEvent,\n    VirtualRowRemovedEvent,\n} from 'ag-grid-community';\n// @END_IMPORTS@\nimport type { GridApi, GridOptions, GridParams, Module } from 'ag-grid-community';\nimport {\n    _BOOLEAN_MIXED_GRID_OPTIONS,\n    _combineAttributesAndGridOptions,\n    _processOnChange,\n    createGrid,\n} from 'ag-grid-community';\n\nimport { AngularFrameworkComponentWrapper } from './angularFrameworkComponentWrapper';\nimport { AngularFrameworkOverrides } from './angularFrameworkOverrides';\n\n@Component({\n    selector: 'ag-grid-angular',\n    standalone: true,\n    template: '',\n    providers: [AngularFrameworkOverrides, AngularFrameworkComponentWrapper],\n    // tell angular we don't want view encapsulation, we don't want a shadow root\n    encapsulation: ViewEncapsulation.None,\n})\nexport class AgGridAngular<TData = any, TColDef extends ColDef<TData> = ColDef<any>>\n    implements AfterViewInit, OnChanges, OnDestroy\n{\n    // not intended for user to interact with. so putting _ in so if user gets reference\n    // to this object, they kind'a know it's not part of the agreed interface\n    private readonly _nativeElement: any;\n    private _initialised = false;\n    private _destroyed = false;\n\n    // in order to ensure firing of gridReady is deterministic\n    private _holdEvents = true;\n    private _resolveFullyReady: () => void;\n    private readonly _fullyReady: Promise<void> = new Promise((resolve) => {\n        this._resolveFullyReady = resolve;\n    });\n\n    /** Grid Api available after onGridReady event has fired. */\n    public api: GridApi<TData>;\n\n    constructor(\n        elementDef: ElementRef,\n        private readonly _viewContainerRef: ViewContainerRef,\n        private readonly _angularFrameworkOverrides: AngularFrameworkOverrides,\n        private readonly _frameworkCompWrapper: AngularFrameworkComponentWrapper\n    ) {\n        this._nativeElement = elementDef.nativeElement;\n        this._fullyReady.then(() => {\n            // Register the status flag reset before any events are fired\n            // so that we can swap to synchronous event firing as soon as the grid is ready\n            this._holdEvents = false;\n        });\n    }\n\n    ngAfterViewInit(): void {\n        // Run the setup outside of angular so all the event handlers that are created do not trigger change detection\n        this._angularFrameworkOverrides.runOutsideAngular(() => {\n            this._frameworkCompWrapper.setViewContainerRef(this._viewContainerRef, this._angularFrameworkOverrides);\n\n            // Get all the inputs that are valid GridOptions\n            const gridOptionKeys = Object.keys(this).filter(\n                (key) =>\n                    !(\n                        key.startsWith('_') ||\n                        key == 'gridOptions' ||\n                        key == 'modules' ||\n                        this[key as keyof AgGridAngular] instanceof EventEmitter\n                    )\n            );\n\n            const coercedGridOptions = {} as GridOptions<TData>;\n            for (const key of gridOptionKeys) {\n                const valueToUse = getValueOrCoercedValue(key, this[key as keyof AgGridAngular]);\n                coercedGridOptions[key as keyof GridOptions] = valueToUse;\n            }\n\n            const mergedGridOps = _combineAttributesAndGridOptions(\n                this.gridOptions,\n                coercedGridOptions,\n                gridOptionKeys\n            );\n\n            const gridParams: GridParams = {\n                globalListener: this.globalListener.bind(this),\n                frameworkOverrides: this._angularFrameworkOverrides,\n                providedBeanInstances: {\n                    frameworkCompWrapper: this._frameworkCompWrapper,\n                },\n                modules: (this.modules || []) as any,\n                setThemeOnGridDiv: true,\n            };\n\n            const api = createGrid(this._nativeElement, mergedGridOps, gridParams);\n            if (api) {\n                this.api = api;\n            }\n\n            this._initialised = true;\n\n            // sometimes, especially in large client apps gridReady can fire before ngAfterViewInit\n            // this ties these together so that gridReady will always fire after agGridAngular's ngAfterViewInit\n            // the actual containing component's ngAfterViewInit will fire just after agGridAngular's\n            this._resolveFullyReady();\n        });\n    }\n\n    public ngOnChanges(changes: any): void {\n        if (this._initialised) {\n            // Run the changes outside of angular so any event handlers that are created do not trigger change detection\n            this._angularFrameworkOverrides.runOutsideAngular(() => {\n                const gridOptions: GridOptions = {};\n                for (const key of Object.keys(changes)) {\n                    const value = changes[key];\n                    gridOptions[key as keyof GridOptions] = value.currentValue;\n                }\n                _processOnChange(gridOptions, this.api);\n            });\n        }\n    }\n\n    public ngOnDestroy(): void {\n        if (this._initialised) {\n            // need to do this before the destroy, so we know not to emit any events\n            // while tearing down the grid.\n            this._destroyed = true;\n            // could be null if grid failed to initialise\n            this.api?.destroy();\n        }\n    }\n\n    // we'll emit the emit if a user is listening for a given event either on the component via normal angular binding\n    // or via gridOptions\n    protected isEmitterUsed(eventType: string): boolean {\n        const emitter = <EventEmitter<any>>(<any>this)[eventType];\n        // For RxJs compatibility we need to check for observed v7+ or observers v6\n        const emitterAny = emitter as any;\n        const hasEmitter = emitterAny?.observed ?? emitterAny?.observers?.length > 0;\n\n        // gridReady => onGridReady\n        const asEventName = `on${eventType.charAt(0).toUpperCase()}${eventType.substring(1)}`;\n        const hasGridOptionListener = !!this.gridOptions && !!(this.gridOptions as any)[asEventName];\n\n        return hasEmitter || hasGridOptionListener;\n    }\n\n    private globalListener(eventType: string, event: any): void {\n        // if we are tearing down, don't emit angular events, as this causes\n        // problems with the angular router\n        if (this._destroyed) {\n            return;\n        }\n\n        // generically look up the eventType\n        const emitter = <EventEmitter<any>>(<any>this)[eventType];\n        if (emitter && this.isEmitterUsed(eventType)) {\n            // Make sure we emit within the angular zone, so change detection works properly\n            const fireEmitter = () => this._angularFrameworkOverrides.runInsideAngular(() => emitter.emit(event));\n\n            if (this._holdEvents) {\n                // if the user is listening to events, wait for ngAfterViewInit to fire first, then emit the grid events\n                this._fullyReady.then(() => fireEmitter());\n            } else {\n                fireEmitter();\n            }\n        }\n    }\n\n    /** Provided an initial gridOptions configuration to the component. If a property is specified in both gridOptions and via component binding the component binding takes precedence.  */\n    @Input() public gridOptions: GridOptions<TData> | undefined;\n    /**\n     * Used to register AG Grid Modules directly with this instance of the grid.\n     * See [Providing Modules To Individual Grids](https://www.ag-grid.com/angular-data-grid/modules/#providing-modules-to-individual-grids) for more information.\n     */\n    @Input() public modules: Module[] | undefined;\n\n    // @START@\n    /** Specifies the status bar components to use in the status bar.\n     * @agModule `StatusBarModule`\n     */\n    @Input() public statusBar: StatusBar | undefined = undefined;\n    /** Specifies the side bar components.\n     * @agModule `SideBarModule`\n     */\n    @Input() public sideBar: SideBarDef | string | string[] | boolean | null | undefined = undefined;\n    /** Set to `true` to not show the context menu. Use if you don't want to use the default 'right click' context menu.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressContextMenu: boolean | undefined = undefined;\n    /** When using `suppressContextMenu`, you can use the `onCellContextMenu` function to provide your own code to handle cell `contextmenu` events.\n     * This flag is useful to prevent the browser from showing its default context menu.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public preventDefaultOnContextMenu: boolean | undefined = undefined;\n    /** Allows context menu to show, even when `Ctrl` key is held down.\n     * @default false\n     * @agModule `ContextMenuModule`\n     */\n    @Input({ transform: booleanAttribute }) public allowContextMenuWithControlKey: boolean | undefined = undefined;\n    /** Changes the display type of the column menu.\n     * `'new'` just displays the main list of menu items. `'legacy'` displays a tabbed menu.\n     * @default 'new'\n     * @initial\n     */\n    @Input() public columnMenu: 'legacy' | 'new' | undefined = undefined;\n    /** Only recommended for use if `columnMenu = 'legacy'`.\n     * When `true`, the column menu button will always be shown.\n     * When `false`, the column menu button will only show when the mouse is over the column header.\n     * When using `columnMenu = 'legacy'`, this will default to `false` instead of `true`.\n     * @default true\n     */\n    @Input({ transform: booleanAttribute }) public suppressMenuHide: boolean | undefined = undefined;\n    /** Set to `true` to use the browser's default tooltip instead of using the grid's Tooltip Component.\n     * @default false\n     * @initial\n     * @agModule `TooltipModule`\n     */\n    @Input({ transform: booleanAttribute }) public enableBrowserTooltips: boolean | undefined = undefined;\n    /** The trigger that will cause tooltips to show and hide.\n     *  - `hover` - The tooltip will show/hide when a cell/header is hovered.\n     *  - `focus` - The tooltip will show/hide when a cell/header is focused.\n     * @default 'hover'\n     * @initial\n     * @agModule `TooltipModule`\n     */\n    @Input() public tooltipTrigger: 'hover' | 'focus' | undefined = undefined;\n    /** The delay in milliseconds that it takes for tooltips to show up once an element is hovered over.\n     *     **Note:** This property does not work if `enableBrowserTooltips` is `true`.\n     * @default 2000\n     * @agModule `TooltipModule`\n     */\n    @Input() public tooltipShowDelay: number | undefined = undefined;\n    /** The delay in milliseconds before a tooltip is shown when moving the pointer from one tooltip-enabled element to\n     * another while the previous tooltip is still visible or pending hide.\n     *     **Note:** This property does not work if `enableBrowserTooltips` is `true`.\n     * @default 200\n     * @agModule `TooltipModule`\n     */\n    @Input() public tooltipSwitchShowDelay: number | undefined = undefined;\n    /** The delay in milliseconds that it takes for tooltips to hide once they have been displayed.\n     *     **Note:** This property does not work if `enableBrowserTooltips` is `true` and `tooltipHideTriggers` includes `timeout`.\n     * @default 10000\n     * @agModule `TooltipModule`\n     */\n    @Input() public tooltipHideDelay: number | undefined = undefined;\n    /** Set to `true` to have tooltips follow the cursor once they are displayed.\n     * @default false\n     * @initial\n     * @agModule `TooltipModule`\n     */\n    @Input({ transform: booleanAttribute }) public tooltipMouseTrack: boolean | undefined = undefined;\n    /** This defines when tooltip will show up for Cells, Headers and SetFilter Items.\n     *  - `standard` - The tooltip always shows up when the items configured with Tooltips are hovered.\n     * - `whenTruncated` - The tooltip will only be displayed when the items hovered have truncated (showing ellipsis) values. This property does not work when `enableBrowserTooltips={true}`.\n     * @default `standard`\n     * @agModule `TooltipModule`\n     */\n    @Input() public tooltipShowMode: 'standard' | 'whenTruncated' | undefined = undefined;\n    /** Set to `true` to enable tooltip interaction. When this option is enabled, the tooltip will not hide while the\n     * tooltip itself it being hovered or has focus.\n     * @default false\n     * @initial\n     * @agModule `TooltipModule`\n     */\n    @Input({ transform: booleanAttribute }) public tooltipInteraction: boolean | undefined = undefined;\n    /** DOM element to use as the popup parent for grid popups (context menu, column menu etc).\n     */\n    @Input() public popupParent: HTMLElement | null | undefined = undefined;\n    /** Set to `true` to also include headers when copying to clipboard using `Ctrl + C` clipboard.\n     * @default false\n     * @agModule `ClipboardModule`\n     */\n    @Input({ transform: booleanAttribute }) public copyHeadersToClipboard: boolean | undefined = undefined;\n    /** Set to `true` to also include group headers when copying to clipboard using `Ctrl + C` clipboard.\n     * @default false\n     * @agModule `ClipboardModule`\n     */\n    @Input({ transform: booleanAttribute }) public copyGroupHeadersToClipboard: boolean | undefined = undefined;\n    /** Specify the delimiter to use when copying to clipboard.\n     * @default '\\t'\n     * @agModule `ClipboardModule`\n     */\n    @Input() public clipboardDelimiter: string | undefined = undefined;\n    /** Set to `true` to copy the cell range or focused cell to the clipboard and never the selected rows.\n     * @default false\n     * @deprecated v32.2 Use `rowSelection.copySelectedRows` instead.\n     */\n    @Input({ transform: booleanAttribute }) public suppressCopyRowsToClipboard: boolean | undefined = undefined;\n    /** Set to `true` to copy rows instead of ranges when a range with only a single cell is selected.\n     * @default false\n     * @deprecated v32.2 Use `rowSelection.copySelectedRows` instead.\n     */\n    @Input({ transform: booleanAttribute }) public suppressCopySingleCellRanges: boolean | undefined = undefined;\n    /** Set to `true` to work around a bug with Excel (Windows) that adds an extra empty line at the end of ranges copied to the clipboard.\n     * @default false\n     * @agModule `ClipboardModule`\n     */\n    @Input({ transform: booleanAttribute }) public suppressLastEmptyLineOnPaste: boolean | undefined = undefined;\n    /** Set to `true` to turn off paste operations within the grid.\n     * @default false\n     * @agModule `ClipboardModule`\n     */\n    @Input({ transform: booleanAttribute }) public suppressClipboardPaste: boolean | undefined = undefined;\n    /** Set to `true` to stop the grid trying to use the Clipboard API, if it is blocked, and immediately fallback to the workaround.\n     * @default false\n     * @agModule `ClipboardModule`\n     */\n    @Input({ transform: booleanAttribute }) public suppressClipboardApi: boolean | undefined = undefined;\n    /** Set to `true` to block     **cut** operations within the grid.\n     * @default false\n     * @agModule `ClipboardModule`\n     */\n    @Input({ transform: booleanAttribute }) public suppressCutToClipboard: boolean | undefined = undefined;\n    /** Array of Column / Column Group definitions.\n     */\n    @Input() public columnDefs: (TColDef | ColGroupDef<TData>)[] | null | undefined = undefined;\n    /** A default column definition. Items defined in the actual column definitions get precedence.\n     */\n    @Input() public defaultColDef: ColDef<TData> | undefined = undefined;\n    /** A default column group definition. All column group definitions will use these properties. Items defined in the actual column group definition get precedence.\n     * @initial\n     */\n    @Input() public defaultColGroupDef: Partial<ColGroupDef<TData>> | undefined = undefined;\n    /** An object map of custom column types which contain groups of properties that column definitions can reuse by referencing in their `type` property.\n     */\n    @Input() public columnTypes: ColTypeDefs<TData> | undefined = undefined;\n    /** An object map of cell data types to their definitions.\n     * Cell data types can either override/update the pre-defined data types\n     * (`'text'`, `'number'`, `'boolean'`, `'date'`, `'dateString'`, `'dateTime'`, `'dateTimeString'` or `'object'`),\n     * or can be custom data types.\n     */\n    @Input() public dataTypeDefinitions: DataTypeDefinitions<TData> | undefined = undefined;\n    /** Keeps the order of Columns maintained after new Column Definitions are updated.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public maintainColumnOrder: boolean | undefined = undefined;\n    /** Resets pivot column order when impacted by filters, data or configuration changes\n     *\n     * @default false\n     * @agModule `PivotModule`\n     */\n    @Input({ transform: booleanAttribute }) public enableStrictPivotColumnOrder: boolean | undefined = undefined;\n    /** If `true`, then dots in field names (e.g. `'address.firstLine'`) are not treated as deep references. Allows you to use dots in your field name if you prefer.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressFieldDotNotation: boolean | undefined = undefined;\n    /** The height in pixels for the row containing the column label header. If not specified, it uses the theme value of `header-height`.\n     */\n    @Input() public headerHeight: number | undefined = undefined;\n    /** The height in pixels for the rows containing header column groups. If not specified, it uses `headerHeight`.\n     */\n    @Input() public groupHeaderHeight: number | undefined = undefined;\n    /** The height in pixels for the row containing the floating filters. If not specified, it uses the theme value of `header-height`.\n     */\n    @Input() public floatingFiltersHeight: number | undefined = undefined;\n    /** The height in pixels for the row containing the columns when in pivot mode. If not specified, it uses `headerHeight`.\n     */\n    @Input() public pivotHeaderHeight: number | undefined = undefined;\n    /** The height in pixels for the row containing header column groups when in pivot mode. If not specified, it uses `groupHeaderHeight`.\n     */\n    @Input() public pivotGroupHeaderHeight: number | undefined = undefined;\n    /** Hide any column header rows that would only contain padded groups.\n     */\n    @Input({ transform: booleanAttribute }) public hidePaddedHeaderRows: boolean | undefined = undefined;\n    /** Allow reordering and pinning columns by dragging columns from the Columns Tool Panel to the grid.\n     * @default false\n     * @agModule `ColumnsToolPanelModule`\n     */\n    @Input({ transform: booleanAttribute }) public allowDragFromColumnsToolPanel: boolean | undefined = undefined;\n    /** Set to `true` to suppress column moving, i.e. to make the columns fixed position.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressMovableColumns: boolean | undefined = undefined;\n    /** If `true`, the `ag-column-moving` class is not added to the grid while columns are moving. In the default themes, this results in no animation when moving columns.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressColumnMoveAnimation: boolean | undefined = undefined;\n    /** Set to `true` to suppress moving columns while dragging the Column Header. This option highlights the position where the column will be placed and it will only move it on mouse up.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressMoveWhenColumnDragging: boolean | undefined = undefined;\n    /** If `true`, when you drag a column out of the grid (e.g. to the group zone) the column is not hidden.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressDragLeaveHidesColumns: boolean | undefined = undefined;\n    /** Enable to prevent column visibility changing when grouped columns are changed.\n     * @default false\n     */\n    @Input() public suppressGroupChangesColumnVisibility:\n        | boolean\n        | 'suppressHideOnGroup'\n        | 'suppressShowOnUngroup'\n        | undefined = undefined;\n    /** By default, when a column is un-grouped, i.e. using the Row Group Panel, it is made visible in the grid. This property stops the column becoming visible again when un-grouping.\n     * @default false\n     * @deprecated v33.0.0 - Use `suppressGroupChangesColumnVisibility: 'suppressShowOnUngroup'` instead.\n     */\n    @Input({ transform: booleanAttribute }) public suppressMakeColumnVisibleAfterUnGroup: boolean | undefined =\n        undefined;\n    /** If `true`, when you drag a column into a row group panel the column is not hidden.\n     * @default false\n     * @deprecated v33.0.0 - Use `suppressGroupChangesColumnVisibility: 'suppressHideOnGroup'` instead.\n     */\n    @Input({ transform: booleanAttribute }) public suppressRowGroupHidesColumns: boolean | undefined = undefined;\n    /** Set to `'shift'` to have shift-resize as the default resize operation (same as user holding down `Shift` while resizing).\n     */\n    @Input() public colResizeDefault: 'shift' | undefined = undefined;\n    /** Suppresses auto-sizing columns for columns. In other words, double clicking a column's header's edge will not auto-size.\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public suppressAutoSize: boolean | undefined = undefined;\n    /** Number of pixels to add to a column width after the [auto-sizing](./column-sizing/#auto-size-columns-to-fit-cell-contents) calculation.\n     * Set this if you want to add extra room to accommodate (for example) sort icons, or some other dynamic nature of the header.\n     * @default 20\n     */\n    @Input() public autoSizePadding: number | undefined = undefined;\n    /** Set this to `true` to skip the `headerName` when `autoSize` is called by default.\n     * @default false\n     * @initial\n     * @agModule `ColumnAutoSizeModule`\n     */\n    @Input({ transform: booleanAttribute }) public skipHeaderOnAutoSize: boolean | undefined = undefined;\n    /** Auto-size the columns when the grid is loaded. Can size to fit the grid width, fit a provided width, or fit the cell contents.\n     * @initial\n     * @agModule `ColumnAutoSizeModule`\n     */\n    @Input() public autoSizeStrategy: AutoSizeStrategy | undefined = undefined;\n    /** Set to `true` to animate changes to column width when auto-sizing the columns.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public animateColumnResizing: boolean | undefined = undefined;\n    /** A map of component names to components.\n     * @initial\n     */\n    @Input() public components: Components | undefined = undefined;\n    /** Set to `'fullRow'` to enable Full Row Editing. Otherwise leave blank to edit one cell at a time.\n     * @agModule `TextEditorModule` / `LargeTextEditorModule` / `NumberEditorModule` / `DateEditorModule` / `CheckboxEditorModule` / `CustomEditorModule` / `SelectEditorModule` / `RichSelectModule`\n     */\n    @Input() public editType: EditStrategyType | undefined = undefined;\n    /** Determine the behavior when navigating to the next/previous editable cell. Default is to begin editing the cell.\n     */\n    @Input({ transform: booleanAttribute }) public suppressStartEditOnTab: boolean | undefined = undefined;\n    /** Validates the Full Row Edit. Only relevant when `editType=\"fullRow\"`.\n     * @agModule `TextEditorModule` / `LargeTextEditorModule` / `NumberEditorModule` / `DateEditorModule` / `CheckboxEditorModule` / `CustomEditorModule` / `SelectEditorModule` / `RichSelectModule`\n     */\n    @Input() public getFullRowEditValidationErrors: GetFullRowEditValidationErrors | undefined = undefined;\n    /** Set to `block` to block the commit of invalid cell edits, keeping editors open.\n     */\n    @Input() public invalidEditValueMode: EditValidationCommitType | undefined = undefined;\n    /** Set to `true` to enable Single Click Editing for cells, to start editing with a single click.\n     * @default false\n     * @agModule `TextEditorModule` / `LargeTextEditorModule` / `NumberEditorModule` / `DateEditorModule` / `CheckboxEditorModule` / `CustomEditorModule` / `SelectEditorModule` / `RichSelectModule`\n     */\n    @Input({ transform: booleanAttribute }) public singleClickEdit: boolean | undefined = undefined;\n    /** Set to `true` so that neither single nor double click starts editing.\n     * @default false\n     * @agModule `TextEditorModule` / `LargeTextEditorModule` / `NumberEditorModule` / `DateEditorModule` / `CheckboxEditorModule` / `CustomEditorModule` / `SelectEditorModule` / `RichSelectModule`\n     */\n    @Input({ transform: booleanAttribute }) public suppressClickEdit: boolean | undefined = undefined;\n    /** Set to `true` to stop the grid updating data after `Edit`, `Clipboard` and `Fill Handle` operations. When this is set, it is intended the application will update the data, eg in an external immutable store, and then pass the new dataset to the grid. <br />**Note:** `rowNode.setDataValue()` does not update the value of the cell when this is `True`, it fires `onCellEditRequest` instead.\n     * @default false\n     * @agModule `TextEditorModule` / `LargeTextEditorModule` / `NumberEditorModule` / `DateEditorModule` / `CheckboxEditorModule` / `CustomEditorModule` / `SelectEditorModule` / `RichSelectModule`\n     */\n    @Input({ transform: booleanAttribute }) public readOnlyEdit: boolean | undefined = undefined;\n    /** Set this to `true` to stop cell editing when grid loses focus.\n     * The default is that the grid stays editing until focus goes onto another cell.\n     * @default false\n     * @initial\n     * @agModule `TextEditorModule` / `LargeTextEditorModule` / `NumberEditorModule` / `DateEditorModule` / `CheckboxEditorModule` / `CustomEditorModule` / `SelectEditorModule` / `RichSelectModule`\n     */\n    @Input({ transform: booleanAttribute }) public stopEditingWhenCellsLoseFocus: boolean | undefined = undefined;\n    /** Set to `true` along with `enterNavigatesVerticallyAfterEdit` to have Excel-style behaviour for the `Enter` key.\n     * i.e. pressing the `Enter` key will move down to the cell beneath and `Shift+Enter` will move up to the cell above.\n     * @default false\n     * @agModule `TextEditorModule` / `LargeTextEditorModule` / `NumberEditorModule` / `DateEditorModule` / `CheckboxEditorModule` / `CustomEditorModule` / `SelectEditorModule` / `RichSelectModule`\n     */\n    @Input({ transform: booleanAttribute }) public enterNavigatesVertically: boolean | undefined = undefined;\n    /** Set to `true` along with `enterNavigatesVertically` to have Excel-style behaviour for the 'Enter' key.\n     * i.e. pressing the Enter key will move down to the cell beneath and Shift+Enter key will move up to the cell above.\n     * @default false\n     * @agModule `TextEditorModule` / `LargeTextEditorModule` / `NumberEditorModule` / `DateEditorModule` / `CheckboxEditorModule` / `CustomEditorModule` / `SelectEditorModule` / `RichSelectModule`\n     */\n    @Input({ transform: booleanAttribute }) public enterNavigatesVerticallyAfterEdit: boolean | undefined = undefined;\n    /** Forces Cell Editing to start when backspace is pressed. This is only relevant for MacOS users.\n     * @agModule `TextEditorModule` / `LargeTextEditorModule` / `NumberEditorModule` / `DateEditorModule` / `CheckboxEditorModule` / `CustomEditorModule` / `SelectEditorModule` / `RichSelectModule`\n     */\n    @Input({ transform: booleanAttribute }) public enableCellEditingOnBackspace: boolean | undefined = undefined;\n    /** Set to `true` to enable Undo / Redo while editing.\n     * @initial\n     * @agModule `UndoRedoEditModule`\n     */\n    @Input({ transform: booleanAttribute }) public undoRedoCellEditing: boolean | undefined = undefined;\n    /** Set the size of the undo / redo stack.\n     * @default 10\n     * @initial\n     * @agModule `UndoRedoEditModule`\n     */\n    @Input() public undoRedoCellEditingLimit: number | undefined = undefined;\n    /** A default configuration object used to export to CSV.\n     * @agModule `CsvExportModule`\n     */\n    @Input() public defaultCsvExportParams: CsvExportParams | undefined = undefined;\n    /** Prevents the user from exporting the grid to CSV.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressCsvExport: boolean | undefined = undefined;\n    /** A default configuration object used to export to Excel.\n     * @agModule `ExcelExportModule`\n     */\n    @Input() public defaultExcelExportParams: ExcelExportParams | undefined = undefined;\n    /** Prevents the user from exporting the grid to Excel.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressExcelExport: boolean | undefined = undefined;\n    /** A list (array) of Excel styles to be used when exporting to Excel with styles.\n     * @initial\n     * @agModule `ExcelExportModule`\n     */\n    @Input() public excelStyles: ExcelStyle[] | undefined = undefined;\n    /** Text to find within the grid.\n     * @agModule `FindModule`\n     */\n    @Input() public findSearchValue: string | undefined = undefined;\n    /** Options for the Find feature.\n     * @agModule `FindModule`\n     */\n    @Input() public findOptions: FindOptions | undefined = undefined;\n    /** Rows are filtered using this text as a Quick Filter.\n     * Only supported for Client-Side Row Model.\n     * @agModule `QuickFilterModule`\n     */\n    @Input() public quickFilterText: string | undefined = undefined;\n    /** Set to `true` to turn on the Quick Filter cache, used to improve performance when using the Quick Filter.\n     * @default false\n     * @initial\n     * @agModule `QuickFilterModule`\n     */\n    @Input({ transform: booleanAttribute }) public cacheQuickFilter: boolean | undefined = undefined;\n    /** Hidden columns are excluded from the Quick Filter by default.\n     * To include hidden columns, set to `true`.\n     * @default false\n     * @agModule `QuickFilterModule`\n     */\n    @Input({ transform: booleanAttribute }) public includeHiddenColumnsInQuickFilter: boolean | undefined = undefined;\n    /** Changes how the Quick Filter splits the Quick Filter text into search terms.\n     * @agModule `QuickFilterModule`\n     */\n    @Input() public quickFilterParser: QuickFilterParser | undefined = undefined;\n    /** Changes the matching logic for whether a row passes the Quick Filter.\n     * @agModule `QuickFilterModule`\n     */\n    @Input() public quickFilterMatcher: QuickFilterMatcher | undefined = undefined;\n    /** When pivoting, Quick Filter is only applied on the pivoted data\n     * (or aggregated data if `groupAggFiltering = true`).\n     * Set to `true` to apply Quick Filter before pivoting (/aggregating) instead.\n     * @default false\n     * @agModule `QuickFilterModule`\n     */\n    @Input({ transform: booleanAttribute }) public applyQuickFilterBeforePivotOrAgg: boolean | undefined = undefined;\n    /** Set to `true` to override the default tree data filtering behaviour to instead exclude child nodes from filter results.\n     * @default false\n     * @agModule `TreeDataModule`\n     */\n    @Input({ transform: booleanAttribute }) public excludeChildrenWhenTreeDataFiltering: boolean | undefined =\n        undefined;\n    /** Set to true to enable the Advanced Filter.\n     * @default false\n     * @agModule `AdvancedFilterModule`\n     */\n    @Input({ transform: booleanAttribute }) public enableAdvancedFilter: boolean | undefined = undefined;\n    /** Allows rows to always be displayed, even if they don't match the applied filtering.\n     * Return `true` for the provided row to always be displayed.\n     * Only works with the Client-Side Row Model.\n     * @agModule `TextFilterModule` / `NumberFilterModule` / `DateFilterModule` / `SetFilterModule` / `MultiFilterModule` / `CustomFilterModule` / `QuickFilterModule` / `ExternalFilterModule` / `AdvancedFilterModule`\n     */\n    @Input() public alwaysPassFilter: AlwaysPassFilter<TData> | undefined = undefined;\n    /** Hidden columns are excluded from the Advanced Filter by default.\n     * To include hidden columns, set to `true`.\n     * @default false\n     * @agModule `AdvancedFilterModule`\n     */\n    @Input({ transform: booleanAttribute }) public includeHiddenColumnsInAdvancedFilter: boolean | undefined =\n        undefined;\n    /** DOM element to use as the parent for the Advanced Filter to allow it to appear outside of the grid.\n     * Set to `null` or `undefined` to appear inside the grid.\n     * @agModule `AdvancedFilterModule`\n     */\n    @Input() public advancedFilterParent: HTMLElement | null | undefined = undefined;\n    /** Customise the parameters passed to the Advanced Filter Builder.\n     * @agModule `AdvancedFilterModule`\n     */\n    @Input() public advancedFilterBuilderParams: IAdvancedFilterBuilderParams | undefined = undefined;\n    /** Customise the parameters passed to the Advanced Filter\n     * @agModule `AdvancedFilterModule`\n     */\n    @Input() public advancedFilterParams: IAdvancedFilterParams | undefined = undefined;\n    /** @deprecated As of v34, advanced filter no longer uses function evaluation, so this option has no effect.\n     * @default true\n     * @agModule `AdvancedFilterModule`\n     */\n    @Input({ transform: booleanAttribute }) public suppressAdvancedFilterEval: boolean | undefined = undefined;\n    /** When using AG Grid Enterprise, the Set Filter is used by default when `filter: true` is set on column definitions.\n     * Set to `true` to prevent this and instead use the Text Filter, Number Filter or Date Filter based on the cell data type,\n     * the same as when using AG Grid Community.\n     * @default false\n     * @initial\n     * @agModule TextFilterModule / NumberFilterModule / DateFilterModule / MultiFilterModule / CustomFilterModule\n     */\n    @Input({ transform: booleanAttribute }) public suppressSetFilterByDefault: boolean | undefined = undefined;\n    /** Enable filter handlers for custom filter components.\n     * Requires all custom filters to be implemented using handlers.\n     *\n     * Note that grid-provided filters (except for the Multi Filter) always use filter handlers.\n     * The Multi Filter will also use a filter handler if this is enabled.\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public enableFilterHandlers: boolean | undefined = undefined;\n    /** A map of filter handler key to filter handler function.\n     * Allows for filter handler keys to be used in `colDef.filter.handler`.\n     * @initial\n     */\n    @Input() public filterHandlers: FilterHandlers<TData> | undefined = undefined;\n    /** Set to `true` to Enable Charts.\n     * @default false\n     * @agModule `IntegratedChartsModule`\n     */\n    @Input({ transform: booleanAttribute }) public enableCharts: boolean | undefined = undefined;\n    /** The list of chart themes that a user can choose from in the chart panel.\n     * @default ['ag-default', 'ag-material', 'ag-sheets', 'ag-polychroma', 'ag-vivid'];\n     * @initial\n     * @agModule `IntegratedChartsModule`\n     */\n    @Input() public chartThemes: string[] | undefined = undefined;\n    /** A map containing custom chart themes.\n     * @initial\n     * @agModule `IntegratedChartsModule`\n     */\n    @Input() public customChartThemes: CustomChartThemes | undefined = undefined;\n    /** Chart theme overrides applied to all themes.\n     * @initial\n     * @agModule `IntegratedChartsModule`\n     */\n    @Input() public chartThemeOverrides: AgChartThemeOverrides | undefined = undefined;\n    /** Allows customisation of the Chart Tool Panels, such as changing the tool panels visibility and order, as well as choosing which charts should be displayed in the chart panel.\n     * @initial\n     * @agModule `IntegratedChartsModule`\n     */\n    @Input() public chartToolPanelsDef: ChartToolPanelsDef | undefined = undefined;\n    /** Get chart menu items. Only applies when using AG Charts Enterprise.\n     * @agModule `IntegratedChartsModule`\n     */\n    @Input() public chartMenuItems:\n        | (DefaultChartMenuItem | MenuItemDef<TData>)[]\n        | GetChartMenuItems<TData>\n        | undefined = undefined;\n    /** Provide your own loading cell renderer to use when data is loading via a DataSource or when a cell renderer is deferred.\n     * See [Loading Cell Renderer](https://www.ag-grid.com/javascript-data-grid/component-loading-cell-renderer/) for framework specific implementation details.\n     */\n    @Input() public loadingCellRenderer: any = undefined;\n    /** Params to be passed to the `loadingCellRenderer` component.\n     */\n    @Input() public loadingCellRendererParams: any = undefined;\n    /** Callback to select which loading cell renderer to be used when data is loading via a DataSource or when a cell renderer is deferred.\n     * @initial\n     */\n    @Input() public loadingCellRendererSelector: LoadingCellRendererSelectorFunc<TData> | undefined = undefined;\n    /** A map of key->value pairs for localising text within the grid.\n     * @initial\n     * @agModule `LocaleModule`\n     */\n    @Input() public localeText: LocaleText | undefined = undefined;\n    /** Set to `true` to enable Master Detail.\n     * @default false\n     * @agModule `MasterDetailModule`\n     */\n    @Input({ transform: booleanAttribute }) public masterDetail: boolean | undefined = undefined;\n    /** Set to `true` to keep detail rows for when they are displayed again.\n     * @default false\n     * @initial\n     * @agModule `MasterDetailModule`\n     */\n    @Input({ transform: booleanAttribute }) public keepDetailRows: boolean | undefined = undefined;\n    /** Sets the number of details rows to keep.\n     * @default 10\n     * @initial\n     * @agModule `MasterDetailModule`\n     */\n    @Input() public keepDetailRowsCount: number | undefined = undefined;\n    /** Provide a custom `detailCellRenderer` to use when a master row is expanded.\n     * See [Detail Cell Renderer](https://www.ag-grid.com/javascript-data-grid/master-detail-custom-detail/) for framework specific implementation details.\n     * @agModule `MasterDetailModule`\n     */\n    @Input() public detailCellRenderer: any = undefined;\n    /** Specifies the params to be used by the Detail Cell Renderer. Can also be a function that provides the params to enable dynamic definitions of the params.\n     * @agModule `MasterDetailModule`\n     */\n    @Input() public detailCellRendererParams: any = undefined;\n    /** Set fixed height in pixels for each detail row.\n     * @initial\n     * @agModule `MasterDetailModule`\n     */\n    @Input() public detailRowHeight: number | undefined = undefined;\n    /** Set to `true` to have the detail grid dynamically change it's height to fit it's rows.\n     * @initial\n     * @agModule `MasterDetailModule`\n     */\n    @Input({ transform: booleanAttribute }) public detailRowAutoHeight: boolean | undefined = undefined;\n    /** Provides a context object that is provided to different callbacks the grid uses. Used for passing additional information to the callbacks used by your application.\n     * @initial\n     */\n    @Input() public context: any = undefined;\n    /**\n     * A list of grids to treat as Aligned Grids.\n     * Provide a list if the grids / apis already exist or return via a callback to allow the aligned grids to be retrieved asynchronously.\n     * If grids are aligned then the columns and horizontal scrolling will be kept in sync.\n     * @agModule `AlignedGridsModule`\n     */\n    @Input() public alignedGrids: (AlignedGrid[] | (() => AlignedGrid[])) | undefined = undefined;\n    /** Change this value to set the tabIndex order of the Grid within your application.\n     * @default 0\n     * @initial\n     */\n    @Input() public tabIndex: number | undefined = undefined;\n    /** The number of rows rendered outside the viewable area the grid renders.\n     * Having a buffer means the grid will have rows ready to show as the user slowly scrolls vertically.\n     * @default 10\n     */\n    @Input() public rowBuffer: number | undefined = undefined;\n    /** Set to `true` to turn on the value cache.\n     * @default false\n     * @initial\n     * @agModule `ValueCacheModule`\n     */\n    @Input({ transform: booleanAttribute }) public valueCache: boolean | undefined = undefined;\n    /** Set to `true` to configure the value cache to not expire after data updates.\n     * @default false\n     * @initial\n     * @agModule `ValueCacheModule`\n     */\n    @Input({ transform: booleanAttribute }) public valueCacheNeverExpires: boolean | undefined = undefined;\n    /** Set to `true` to allow cell expressions.\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public enableCellExpressions: boolean | undefined = undefined;\n    /** Disables touch support (but does not remove the browser's efforts to simulate mouse events on touch).\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public suppressTouch: boolean | undefined = undefined;\n    /** Set to `true` to not set focus back on the grid after a refresh. This can avoid issues where you want to keep the focus on another part of the browser.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressFocusAfterRefresh: boolean | undefined = undefined;\n    /** @deprecated As of v32.2 the grid always uses the browser's ResizeObserver, this grid option has no effect\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public suppressBrowserResizeObserver: boolean | undefined = undefined;\n    /** @deprecated As of v33 `gridOptions` and `columnDefs` both have a `context` property that should be used for arbitrary user data. This means that column definitions and gridOptions should only contain valid properties making this property redundant.\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public suppressPropertyNamesCheck: boolean | undefined = undefined;\n    /** Disables change detection.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressChangeDetection: boolean | undefined = undefined;\n    /** Set this to `true` to enable debug information from the grid and related components. Will result in additional logging being output, but very useful when investigating problems.\n     * It is also recommended to register the `ValidationModule` to identify any misconfigurations.\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public debug: boolean | undefined = undefined;\n    /** Show or hide the loading overlay.\n     * - `true`: the loading overlay is shown.\n     * - `false`: the loading overlay is hidden.\n     * - `undefined`: the grid will automatically show the loading overlay until `rowData` and `columnDefs` are provided. (Client Side Row Model only)\n     * @default undefined\n     */\n    @Input({ transform: booleanAttribute }) public loading: boolean | undefined = undefined;\n    /** Provide a HTML string to override the default loading overlay. Supports non-empty plain text or HTML with a single root element.\n     *\n     * -     **Prefer `overlayComponent` / `overlayComponentSelector`**\n     */\n    @Input() public overlayLoadingTemplate: string | undefined = undefined;\n    /** Provide a custom loading overlay component.\n     *\n     * -     **Prefer `overlayComponent` / `overlayComponentSelector`**\n     */\n    @Input() public loadingOverlayComponent: any = undefined;\n    /** Customise the parameters provided to the loading overlay component.\n     *\n     * -     **Prefer using `overlayComponentParams`**\n     */\n    @Input() public loadingOverlayComponentParams: any = undefined;\n    /** Disables the 'loading' overlay.\n     * @deprecated v32 - Deprecated. Use `suppressOverlays=['loading']` or `loading=false` instead.\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public suppressLoadingOverlay: boolean | undefined = undefined;\n    /** Provide a HTML string to override the default no-rows overlay. Supports non-empty plain text or HTML with a single root element.\n     *\n     * -     **Prefer `overlayComponent` / `overlayComponentSelector`**\n     */\n    @Input() public overlayNoRowsTemplate: string | undefined = undefined;\n    /** Provide a custom no-rows overlay component.\n     *\n     * -     **Prefer `overlayComponent` / `overlayComponentSelector`**\n     */\n    @Input() public noRowsOverlayComponent: any = undefined;\n    /** Customise the parameters provided to the no-rows overlay component.\n     *\n     * -     **Prefer using `overlayComponentParams`**\n     */\n    @Input() public noRowsOverlayComponentParams: any = undefined;\n    /** Set to `true` to prevent the no-rows overlay being shown when there is no row data.\n     *\n     * -     **Prefer `suppressOverlays=['noRows']`**\n     *\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public suppressNoRowsOverlay: boolean | undefined = undefined;\n    /** List of provided overlay names to suppress. One of `loading`, `noRows`, `noMatchingRows`, `exporting`.\n     */\n    @Input() public suppressOverlays: OverlayType[] | undefined = undefined;\n    /** Provide a custom overlay component to be used for all grid provided overlays (loading, no rows, no matching rows, exporting etc).\n     * @initial\n     */\n    @Input() public overlayComponent: any = undefined;\n    /** Customise the parameters provided to the `overlayComponent`.\n     * Provided overlays accept parameters specified on the `OverlayComponentUserParams` interface.\n     * Any custom parameters can also be provided for custom overlay components.\n     */\n    @Input() public overlayComponentParams: any = undefined;\n    /** Callback to dynamically provide a custom overlay component complete with custom params based on the selector params.\n     * @initial\n     */\n    @Input() public overlayComponentSelector: OverlaySelectorFunc<TData> | undefined = undefined;\n    /** Display an overlay on demand. If provided takes precedence over the grid provided overlays.\n     * - name of a provided overlay, i.e `agLoadingOverlay`, `agNoRowsOverlay`, `agNoMatchingRowsOverlay`, `agExportingOverlay`\n     * - component class/function.\n     * - key of a custom component registered in the `components` map.\n     * - `undefined` to clear.\n     */\n    @Input() public activeOverlay: any = undefined;\n    /** Custom parameters to be supplied to the `activeOverlay` component in addition to `IOverlayParams`. Updating the params will trigger a refresh of the active overlay.\n     */\n    @Input() public activeOverlayParams: any = undefined;\n    /** Set whether pagination is enabled.\n     * @default false\n     * @agModule `PaginationModule`\n     */\n    @Input({ transform: booleanAttribute }) public pagination: boolean | undefined = undefined;\n    /** How many rows to load per page. If `paginationAutoPageSize` is specified, this property is ignored.\n     * @default 100\n     * @agModule `PaginationModule`\n     */\n    @Input() public paginationPageSize: number | undefined = undefined;\n    /** Determines if the page size selector is shown in the pagination panel or not.\n     * Set to an array of values to show the page size selector with custom list of possible page sizes.\n     * Set to `true` to show the page size selector with the default page sizes `[20, 50, 100]`.\n     * Set to `false` to hide the page size selector.\n     * @default true\n     * @initial\n     * @agModule `PaginationModule`\n     */\n    @Input() public paginationPageSizeSelector: number[] | boolean | undefined = undefined;\n    /** Set to `true` so that the number of rows to load per page is automatically adjusted by the grid so each page shows enough rows to just fill the area designated for the grid. If `false`, `paginationPageSize` is used.\n     * @default false\n     * @agModule `PaginationModule`\n     */\n    @Input({ transform: booleanAttribute }) public paginationAutoPageSize: boolean | undefined = undefined;\n    /** Set to `true` to have pages split children of groups when using Row Grouping or detail rows with Master Detail.\n     * @default false\n     * @initial\n     * @agModule `PaginationModule`\n     */\n    @Input({ transform: booleanAttribute }) public paginateChildRows: boolean | undefined = undefined;\n    /** If `true`, the default grid controls for navigation are hidden.\n     * This is useful if `pagination=true` and you want to provide your own pagination controls.\n     * Otherwise, when `pagination=true` the grid automatically shows the necessary controls at the bottom so that the user can navigate through the different pages.\n     * @default false\n     * @agModule `PaginationModule`\n     */\n    @Input({ transform: booleanAttribute }) public suppressPaginationPanel: boolean | undefined = undefined;\n    /** Set to `true` to enable pivot mode.\n     * @default false\n     * @agModule `PivotModule`\n     */\n    @Input({ transform: booleanAttribute }) public pivotMode: boolean | undefined = undefined;\n    /** When to show the 'pivot panel' (where you drag rows to pivot) at the top. Note that the pivot panel will never show if `pivotMode` is off.\n     * @default 'never'\n     * @initial\n     * @agModule `RowGroupingPanelModule`\n     */\n    @Input() public pivotPanelShow: 'always' | 'onlyWhenPivoting' | 'never' | undefined = undefined;\n    /** The maximum number of generated columns before the grid halts execution. Upon reaching this number, the grid halts generation of columns\n     * and triggers a `pivotMaxColumnsExceeded` event. `-1` for no limit.\n     * @default -1\n     * @agModule `PivotModule`\n     */\n    @Input() public pivotMaxGeneratedColumns: number | undefined = undefined;\n    /** If pivoting, set to the number of column group levels to expand by default, e.g. `0` for none, `1` for first level only, etc. Set to `-1` to expand everything.\n     * @default 0\n     * @agModule `PivotModule`\n     */\n    @Input() public pivotDefaultExpanded: number | undefined = undefined;\n    /** When set and the grid is in pivot mode, automatically calculated totals will appear within the Pivot Column Groups, in the position specified.\n     * @agModule `PivotModule`\n     */\n    @Input() public pivotColumnGroupTotals: 'before' | 'after' | undefined = undefined;\n    /** When set and the grid is in pivot mode, automatically calculated totals will appear for each value column in the position specified.\n     * @agModule `PivotModule`\n     */\n    @Input() public pivotRowTotals: 'before' | 'after' | undefined = undefined;\n    /** If `true`, the grid will not swap in the grouping column when pivoting. Useful if pivoting using Server Side Row Model or Viewport Row Model and you want full control of all columns including the group column.\n     * @default false\n     * @initial\n     * @agModule `PivotModule`\n     */\n    @Input({ transform: booleanAttribute }) public pivotSuppressAutoColumn: boolean | undefined = undefined;\n    /** When enabled, pivot column groups will appear 'fixed', without the ability to expand and collapse the column groups.\n     * @default false\n     * @initial\n     * @agModule `PivotModule`\n     */\n    @Input({ transform: booleanAttribute }) public suppressExpandablePivotGroups: boolean | undefined = undefined;\n    /** If `true`, then row group, pivot and value aggregation will be read-only from the GUI. The grid will display what values are used for each, but will not allow the user to change the selection.\n     * @default false\n     * @agModule `RowGroupingModule` / `PivotModule` / `TreeDataModule` / `ServerSideRowModelModule`\n     */\n    @Input({ transform: booleanAttribute }) public functionsReadOnly: boolean | undefined = undefined;\n    /** A map of 'function name' to 'function' for custom aggregation functions.\n     * @initial\n     * @agModule `RowGroupingModule` / `PivotModule` / `TreeDataModule` / `ServerSideRowModelModule`\n     */\n    @Input() public aggFuncs: IAggFuncs<TData> | undefined = undefined;\n    /** Provide a data source to control where formulas are stored and retrieved.\n     * If not supplied, formulas are read from and written to the row data.\n     * @initial\n     * @agModule `FormulaModule`\n     */\n    @Input() public formulaDataSource: FormulaDataSource | undefined = undefined;\n    /** A map of 'function name' to 'function' for custom functions that are used for formulas.\n     * @initial\n     * @agModule `FormulaModule`\n     */\n    @Input() public formulaFuncs: FormulaFuncs | undefined = undefined;\n    /** When `true`, column headers won't include the `aggFunc` name, e.g. `'sum(Bank Balance)`' will just be `'Bank Balance'`.\n     * @default false\n     * @agModule `RowGroupingModule` / `PivotModule` / `TreeDataModule` / `ServerSideRowModelModule`\n     */\n    @Input({ transform: booleanAttribute }) public suppressAggFuncInHeader: boolean | undefined = undefined;\n    /** When using aggregations, the grid will always calculate the root level aggregation value.\n     * @default false\n     * @agModule `RowGroupingModule` / `PivotModule` / `TreeDataModule` / `ServerSideRowModelModule`\n     */\n    @Input({ transform: booleanAttribute }) public alwaysAggregateAtRootLevel: boolean | undefined = undefined;\n    /** When using change detection, only the updated column will be re-aggregated.\n     * @default false\n     * @agModule `RowGroupingModule` / `PivotModule` / `TreeDataModule` / `ServerSideRowModelModule`\n     */\n    @Input({ transform: booleanAttribute }) public aggregateOnlyChangedColumns: boolean | undefined = undefined;\n    /** Set to `true` so that aggregations are not impacted by filtering.\n     * @default false\n     * @agModule `RowGroupingModule` / `PivotModule` / `TreeDataModule` / `ServerSideRowModelModule`\n     */\n    @Input({ transform: booleanAttribute }) public suppressAggFilteredOnly: boolean | undefined = undefined;\n    /** Set to `true` to omit the value Column header when there is only a single value column.\n     * @default false\n     * @agModule `PivotModule`\n     */\n    @Input({ transform: booleanAttribute }) public removePivotHeaderRowWhenSingleValueColumn: boolean | undefined =\n        undefined;\n    /** Set to `false` to disable Row Animation which is enabled by default.\n     * @default true\n     */\n    @Input({ transform: booleanAttribute }) public animateRows: boolean | undefined = undefined;\n    /** Sets the duration in milliseconds of how long a cell should remain in its \"flashed\" state.\n     * If `0`, the cell will not flash.\n     * @default 500\n     */\n    @Input() public cellFlashDuration: number | undefined = undefined;\n    /** Sets the duration in milliseconds of how long the \"flashed\" state animation takes to fade away after the timer set by `cellFlashDuration` has completed.\n     * @default 1000\n     */\n    @Input() public cellFadeDuration: number | undefined = undefined;\n    /** Set to `true` to have cells flash after data changes even when the change is due to filtering.\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public allowShowChangeAfterFilter: boolean | undefined = undefined;\n    /** Switch between layout options: `normal`, `autoHeight`, `print`.\n     * @default 'normal'\n     */\n    @Input() public domLayout: DomLayoutType | undefined = undefined;\n    /** When `true`, the order of rows and columns in the DOM are consistent with what is on screen.\n     * Disables row animations.\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public ensureDomOrder: boolean | undefined = undefined;\n    /** When `true`, enables the cell span feature allowing for the use of the `colDef.spanRows` property.\n     * @default false\n     * @initial\n     * @agModule `CellSpanModule`\n     */\n    @Input({ transform: booleanAttribute }) public enableCellSpan: boolean | undefined = undefined;\n    /** Set to `true` to operate the grid in RTL (Right to Left) mode.\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public enableRtl: boolean | undefined = undefined;\n    /** Set to `true` so that the grid doesn't virtualise the columns. For example, if you have 100 columns, but only 10 visible due to scrolling, all 100 will always be rendered.\n     *     **It is not recommended to set this to `true` as it may cause performance issues.**\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public suppressColumnVirtualisation: boolean | undefined = undefined;\n    /** By default the grid has a limit of rendering a maximum of 500 rows at once (remember the grid only renders rows you can see, so unless your display shows more than 500 rows without vertically scrolling this will never be an issue).\n     * <br />**This is only relevant if you are manually setting `rowBuffer` to a high value (rendering more rows than can be seen), or `suppressRowVirtualisation` is true, or if your grid height is able to display more than 500 rows at once.**\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public suppressMaxRenderedRowRestriction: boolean | undefined = undefined;\n    /** Set to `true` so that the grid doesn't virtualise the rows. For example, if you have 100 rows, but only 10 visible due to scrolling, all 100 will always be rendered.\n     *     **It is not recommended to set this to `true` as it may cause performance issues.**\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public suppressRowVirtualisation: boolean | undefined = undefined;\n    /** Set to `true` to enable Managed Row Dragging.\n     * @default false\n     * @agModule `RowDragModule`\n     */\n    @Input({ transform: booleanAttribute }) public rowDragManaged: boolean | undefined = undefined;\n    /** When `true`, the grid re-evaluates the grouping hierarchy after editing a grouped column value,\n     * moving the row to the correct group instantly. Also enables managed row dragging to update\n     * grouped column values so rows can move between groups.\n     * @default false\n     * @agModule `RowGroupingModule` / `TreeDataModule`\n     */\n    @Input({ transform: booleanAttribute }) public refreshAfterGroupEdit: boolean | undefined = undefined;\n    /** Used if rowDragManaged is enabled and treeData is enabled,\n     * - If the row is already a group, but is not expanded, it will be expanded after rowDragInsertDelay milliseconds of dragging over it.\n     * - If the row is a leaf (no children), it will be converted to a group and the row inserted into it after rowDragInsertDelay milliseconds of dragging over it.\n     * @default 500\n     * @agModule `RowDragModule`\n     */\n    @Input() public rowDragInsertDelay: number | undefined = undefined;\n    /** Set to `true` to suppress row dragging.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressRowDrag: boolean | undefined = undefined;\n    /** Set to `true` to suppress moving rows while dragging the `rowDrag` waffle. This option highlights the position where the row will be placed and it will only move the row on mouse up.\n     * @default false\n     * @agModule `RowDragModule`\n     */\n    @Input({ transform: booleanAttribute }) public suppressMoveWhenRowDragging: boolean | undefined = undefined;\n    /** Set to `true` to enable clicking and dragging anywhere on the row without the need for a drag handle.\n     * @default false\n     * @agModule `RowDragModule`\n     */\n    @Input({ transform: booleanAttribute }) public rowDragEntireRow: boolean | undefined = undefined;\n    /** Set to `true` to enable dragging multiple rows at the same time.\n     * @default false\n     * @agModule `RowDragModule`\n     */\n    @Input({ transform: booleanAttribute }) public rowDragMultiRow: boolean | undefined = undefined;\n    /** A callback that should return a string to be displayed by the `rowDragComp` while dragging a row.\n     * If this callback is not set, the current cell value will be used.\n     * If the `rowDragText` callback is set in the ColDef it will take precedence over this, except when\n     * `rowDragEntireRow=true`.\n     * @initial\n     * @agModule `RowDragModule`\n     */\n    @Input() public rowDragText: RowDragTextFunc | undefined = undefined;\n    /** Provide a custom drag and drop image component.\n     * @initial\n     * @agModule `RowDragModule`\n     */\n    @Input() public dragAndDropImageComponent: any = undefined;\n    /** Customise the parameters provided to the Drag and Drop Image Component.\n     * @agModule `RowDragModule`\n     */\n    @Input() public dragAndDropImageComponentParams: any = undefined;\n    /** Provide your own cell renderer component to use for full width rows.\n     * See [Full Width Rows](https://www.ag-grid.com/javascript-data-grid/full-width-rows/) for framework specific implementation details.\n     */\n    @Input() public fullWidthCellRenderer: any = undefined;\n    /** Customise the parameters provided to the `fullWidthCellRenderer` component.\n     */\n    @Input() public fullWidthCellRendererParams: any = undefined;\n    /** Set to `true` to have the Full Width Rows embedded in grid's main container so they can be scrolled horizontally.\n     */\n    @Input({ transform: booleanAttribute }) public embedFullWidthRows: boolean | undefined = undefined;\n    /** Specifies how the results of row grouping should be displayed.\n     *\n     *  The options are:\n     *\n     * - `'singleColumn'`: single group column automatically added by the grid.\n     * - `'multipleColumns'`: a group column per row group is added automatically.\n     * - `'groupRows'`: group rows are automatically added instead of group columns.\n     * - `'custom'`: informs the grid that group columns will be provided.\n     * @agModule `RowGroupingModule`\n     */\n    @Input() public groupDisplayType: RowGroupingDisplayType | undefined = undefined;\n    /** If grouping, set to the number of levels to expand by default, e.g. `0` for none, `1` for first level only, etc. Set to `-1` to expand everything.\n     * @default 0\n     * @agModule `RowGroupingModule` / `TreeDataModule`\n     */\n    @Input() public groupDefaultExpanded: number | undefined = undefined;\n    /** Allows specifying the group 'auto column' if you are not happy with the default. If grouping, this column definition is included as the first column in the grid. If not grouping, this column is not included.\n     * @agModule `RowGroupingModule` / `TreeDataModule`\n     */\n    @Input() public autoGroupColumnDef: AutoGroupColumnDef<TData> | undefined = undefined;\n    /** When `true`, preserves the current group order when sorting on non-group columns.\n     * If a user explicitly resets the current group sort direction, then the current group column order is not preserved.\n     * @default false\n     * @agModule `RowGroupingModule`\n     */\n    @Input({ transform: booleanAttribute }) public groupMaintainOrder: boolean | undefined = undefined;\n    /** When `true`, if you select a group, the children of the group will also be selected.\n     * @default false\n     * @deprecated v32.2 Use `rowSelection.groupSelects` instead\n     */\n    @Input({ transform: booleanAttribute }) public groupSelectsChildren: boolean | undefined = undefined;\n    /** If grouping, locks the group settings of a number of columns, e.g. `0` for no group locking. `1` for first group column locked, `-1` for all group columns locked.\n     * @default 0\n     * @initial\n     * @agModule `RowGroupingModule`\n     */\n    @Input() public groupLockGroupColumns: number | undefined = undefined;\n    /** Set to determine whether filters should be applied on aggregated group values.\n     * @default false\n     * @agModule `RowGroupingModule`\n     */\n    @Input() public groupAggFiltering: boolean | IsRowFilterable<TData> | undefined = undefined;\n    /** When provided, an extra row group total row will be inserted into row groups at the specified position, to display\n     * when the group is expanded. This row will contain the aggregate values for the group. If a callback function is\n     * provided, it can be used to selectively determine which groups will have a total row added.\n     * @agModule `RowGroupingModule` / `ServerSideRowModelModule`\n     */\n    @Input() public groupTotalRow: 'top' | 'bottom' | UseGroupTotalRow<TData> | undefined = undefined;\n    /** When provided, an extra grand total row will be inserted into the grid at the specified position.\n     * This row displays the aggregate totals of all rows in the grid.\n     * @agModule `RowGroupingModule` / `ServerSideRowModelModule`\n     */\n    @Input() public grandTotalRow: 'top' | 'bottom' | 'pinnedTop' | 'pinnedBottom' | undefined = undefined;\n    /** Suppress the sticky behaviour of the total rows, can be suppressed individually by passing `'grand'` or `'group'`.\n     * @agModule `RowGroupingModule` / `ServerSideRowModelModule`\n     */\n    @Input() public suppressStickyTotalRow: boolean | 'grand' | 'group' | undefined = undefined;\n    /** If `true`, and showing footer, aggregate data will always be displayed at both the header and footer levels. This stops the possibly undesirable behaviour of the header details 'jumping' to the footer on expand.\n     * @default false\n     * @agModule `RowGroupingModule` / `PivotModule` / `TreeDataModule` / `ServerSideRowModelModule`\n     */\n    @Input({ transform: booleanAttribute }) public groupSuppressBlankHeader: boolean | undefined = undefined;\n    /** If using `groupSelectsChildren`, then only the children that pass the current filter will get selected.\n     * @default false\n     * @deprecated v32.2 Use `rowSelection.groupSelects` instead\n     */\n    @Input({ transform: booleanAttribute }) public groupSelectsFiltered: boolean | undefined = undefined;\n    /** Shows the open group in the group column for non-group rows.\n     * @default false\n     * @agModule `RowGroupingModule`\n     */\n    @Input({ transform: booleanAttribute }) public showOpenedGroup: boolean | undefined = undefined;\n    /** Enable to display the child row in place of the group row when the group only has a single child.\n     * @default false\n     * @agModule `RowGroupingModule`\n     */\n    @Input() public groupHideParentOfSingleChild: boolean | 'leafGroupsOnly' | undefined = undefined;\n    /** Set to `true` to collapse groups that only have one child.\n     * @default false\n     * @deprecated v33.0.0 - use `groupHideParentOfSingleChild` instead.\n     */\n    @Input({ transform: booleanAttribute }) public groupRemoveSingleChildren: boolean | undefined = undefined;\n    /** Set to `true` to collapse lowest level groups that only have one child.\n     * @default false\n     * @deprecated v33.0.0 - use `groupHideParentOfSingleChild: 'leafGroupsOnly'` instead.\n     */\n    @Input({ transform: booleanAttribute }) public groupRemoveLowestSingleChildren: boolean | undefined = undefined;\n    /** Set to `true` to hide parents that are open. When used with multiple columns for showing groups, it can give a more pleasing user experience.\n     * @default false\n     * @agModule `RowGroupingModule`\n     */\n    @Input({ transform: booleanAttribute }) public groupHideOpenParents: boolean | undefined = undefined;\n    /** When using `groupDisplayType='multipleColumns'` or `groupHideOpenParents=true`, hides group columns for levels\n     * that have not yet been expanded. Only the top-level group column is initially\n     * visible; each subsequent level becomes visible when at least one group at the\n     * preceding level is expanded. (Client Side Row Model only)\n     * @default false\n     * @agModule `RowGroupingModule`\n     */\n    @Input({ transform: booleanAttribute }) public groupHideColumnsUntilExpanded: boolean | undefined = undefined;\n    /** Set to `true` to prevent the grid from creating a '(Blanks)' group for nodes which do not belong to a group, and display the unbalanced nodes alongside group nodes.\n     * @default false\n     * @agModule `RowGroupingModule`\n     */\n    @Input({ transform: booleanAttribute }) public groupAllowUnbalanced: boolean | undefined = undefined;\n    /** When to show the 'row group panel' (where you drag rows to group) at the top.\n     * @default 'never'\n     * @agModule `RowGroupingPanelModule`\n     */\n    @Input() public rowGroupPanelShow: 'always' | 'onlyWhenGrouping' | 'never' | undefined = undefined;\n    /** Provide the Cell Renderer to use when `groupDisplayType = 'groupRows'`.\n     * See [Group Row Cell Renderer](https://www.ag-grid.com/javascript-data-grid/grouping-group-rows/#providing-cell-renderer) for framework specific implementation details.\n     * @agModule `RowGroupingModule`\n     */\n    @Input() public groupRowRenderer: any = undefined;\n    /** Customise the parameters provided to the `groupRowRenderer` component.\n     * @agModule `RowGroupingModule`\n     */\n    @Input() public groupRowRendererParams: any = undefined;\n    /** Set to `true` to enable the Grid to work with Tree Data.\n     * You must also implement the `getDataPath(data)` callback.\n     * @default false\n     * @agModule `TreeDataModule`\n     */\n    @Input({ transform: booleanAttribute }) public treeData: boolean | undefined = undefined;\n    /** The name of the field to use in a data item to retrieve the array of children nodes of a node when while using treeData=true.\n     * It supports accessing nested fields using the dot notation.\n     * @agModule `TreeDataModule`\n     */\n    @Input() public treeDataChildrenField: string | undefined = undefined;\n    /** The name of the field to use in a data item to find the parent node of a node when using treeData=true.\n     * The tree will be constructed via relationships between nodes using this field.\n     * getRowId callback need to be provided as well for this to work.\n     * It supports accessing nested fields using the dot notation.\n     * @agModule `TreeDataModule`\n     */\n    @Input() public treeDataParentIdField: string | undefined = undefined;\n    /** Set to `true` to suppress sort indicators and actions from the row group panel.\n     * @default false\n     * @agModule `RowGroupingPanelModule`\n     */\n    @Input({ transform: booleanAttribute }) public rowGroupPanelSuppressSort: boolean | undefined = undefined;\n    /** Set to `true` prevent Group Rows from sticking to the top of the grid.\n     * @default false\n     * @initial\n     * @agModule `RowGroupingModule` / `TreeDataModule`\n     */\n    @Input({ transform: booleanAttribute }) public suppressGroupRowsSticky: boolean | undefined = undefined;\n    /** Custom group hierarchy components can be defined here for later use in `colDef.groupHierarchy`\n     * @agModule `RowGroupingModule`\n     */\n    @Input() public groupHierarchyConfig: GroupHierarchyConfig | undefined = undefined;\n    /** Data to be displayed as pinned top rows in the grid.\n     * @agModule `PinnedRowModule`\n     */\n    @Input() public pinnedTopRowData: any[] | undefined = undefined;\n    /** Data to be displayed as pinned bottom rows in the grid.\n     * @agModule `PinnedRowModule`\n     */\n    @Input() public pinnedBottomRowData: any[] | undefined = undefined;\n    /** Determines whether manual row pinning is enabled via the row context menu.\n     *\n     * Set to `true` to allow pinning rows to top or bottom.\n     * Set to `'top'` to allow pinning rows to the top only.\n     * Set to `'bottom'` to allow pinning rows to the bottom only.\n     * @agModule `PinnedRowModule`\n     */\n    @Input() public enableRowPinning: boolean | 'top' | 'bottom' | undefined = undefined;\n    /** Return `true` if the grid should allow the row to be manually pinned.\n     * Return `false` if the grid should prevent the row from being pinned\n     *\n     * When not defined, all rows default to pinnable.\n     * @agModule `PinnedRowModule`\n     */\n    @Input() public isRowPinnable: IsRowPinnable<TData> | undefined = undefined;\n    /** Called for every row in the grid.\n     *\n     * Return \"top\", \"bottom\" if the row should be initially pinned to the top or bottom respectively.\n     * Return `null` or `undefined` otherwise.\n     * User interactions can subsequently still change the pinned state of a row.\n     * @agModule `PinnedRowModule`\n     */\n    @Input() public isRowPinned: IsRowPinned<TData> | undefined = undefined;\n    /** Sets the row model type.\n     * @default 'clientSide'\n     * @initial\n     * @agModule `ClientSideRowModelModule` / `InfiniteRowModelModule` / `ServerSideRowModelModule` / `ViewportRowModelModule`\n     */\n    @Input() public rowModelType: RowModelType | undefined = undefined;\n    /** Set the data to be displayed as rows in the grid.\n     * @agModule `ClientSideRowModelModule`\n     */\n    @Input() public rowData: TData[] | null | undefined = undefined;\n    /** How many milliseconds to wait before executing a batch of async transactions.\n     */\n    @Input() public asyncTransactionWaitMillis: number | undefined = undefined;\n    /** Prevents Transactions changing sort, filter, group or pivot state when transaction only contains updates.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressModelUpdateAfterUpdateTransaction: boolean | undefined =\n        undefined;\n    /** Provide the datasource for infinite scrolling.\n     * @agModule `InfiniteRowModelModule`\n     */\n    @Input() public datasource: IDatasource | undefined = undefined;\n    /** How many extra blank rows to display to the user at the end of the dataset, which sets the vertical scroll and then allows the grid to request viewing more rows of data.\n     * @default 1\n     * @initial\n     * @agModule `InfiniteRowModelModule`\n     */\n    @Input() public cacheOverflowSize: number | undefined = undefined;\n    /** How many extra blank rows to display to the user at the end of the dataset, which sets the vertical scroll and then allows the grid to request viewing more rows of data.\n     * @default 1\n     * @initial\n     * @agModule `InfiniteRowModelModule`\n     */\n    @Input() public infiniteInitialRowCount: number | undefined = undefined;\n    /** Set how many loading rows to display to the user for the root level group.\n     * @default 1\n     * @initial\n     * @agModule `ServerSideRowModelModule`\n     */\n    @Input() public serverSideInitialRowCount: number | undefined = undefined;\n    /** When `true`, the Server-side Row Model will not use a full width loading renderer, instead using the colDef `loadingCellRenderer` if present.\n     * @agModule `ServerSideRowModelModule`\n     */\n    @Input({ transform: booleanAttribute }) public suppressServerSideFullWidthLoadingRow: boolean | undefined =\n        undefined;\n    /** How many rows for each block in the store, i.e. how many rows returned from the server at a time.\n     * @default 100\n     * @agModule `ServerSideRowModelModule` / `InfiniteRowModelModule`\n     */\n    @Input() public cacheBlockSize: number | undefined = undefined;\n    /** How many blocks to keep in the store. Default is no limit, so every requested block is kept. Use this if you have memory concerns, and blocks that were least recently viewed will be purged when the limit is hit. The grid will additionally make sure it has all the blocks needed to display what is currently visible, in case this property is set to a low value.\n     * @initial\n     * @agModule `ServerSideRowModelModule` / `InfiniteRowModelModule`\n     */\n    @Input() public maxBlocksInCache: number | undefined = undefined;\n    /** How many requests to hit the server with concurrently. If the max is reached, requests are queued.\n     * Set to `-1` for no maximum restriction on requests.\n     * @default 2\n     * @initial\n     * @agModule `ServerSideRowModelModule` / `InfiniteRowModelModule`\n     */\n    @Input() public maxConcurrentDatasourceRequests: number | undefined = undefined;\n    /** How many milliseconds to wait before loading a block. Useful when scrolling over many blocks, as it prevents blocks loading until scrolling has settled.\n     * @initial\n     * @agModule `ServerSideRowModelModule` / `InfiniteRowModelModule`\n     */\n    @Input() public blockLoadDebounceMillis: number | undefined = undefined;\n    /** When enabled, closing group rows will remove children of that row. Next time the row is opened, child rows will be read from the datasource again. This property only applies when there is Row Grouping or Tree Data.\n     * @default false\n     * @agModule `ServerSideRowModelModule`\n     */\n    @Input({ transform: booleanAttribute }) public purgeClosedRowNodes: boolean | undefined = undefined;\n    /** Provide the `serverSideDatasource` for server side row model.\n     * @agModule `ServerSideRowModelModule`\n     */\n    @Input() public serverSideDatasource: IServerSideDatasource | undefined = undefined;\n    /** When enabled, always refreshes top level groups regardless of which column was sorted. This property only applies when there is Row Grouping & sorting is handled on the server.\n     * @default false\n     * @agModule `ServerSideRowModelModule`\n     */\n    @Input({ transform: booleanAttribute }) public serverSideSortAllLevels: boolean | undefined = undefined;\n    /** When enabled, sorts fully loaded groups in the browser instead of requesting from the server.\n     * @default false\n     * @agModule `ServerSideRowModelModule`\n     */\n    @Input({ transform: booleanAttribute }) public serverSideEnableClientSideSort: boolean | undefined = undefined;\n    /** When enabled, only refresh groups directly impacted by a filter. This property only applies when there is Row Grouping & filtering is handled on the server.\n     * @default false\n     * @initial\n     * @agModule `ServerSideRowModelModule`\n     */\n    @Input({ transform: booleanAttribute }) public serverSideOnlyRefreshFilteredGroups: boolean | undefined = undefined;\n    /** Used to split pivot field strings for generating pivot result columns when `pivotResultFields` is provided as part of a `getRows` success.\n     * @default '_'\n     * @initial\n     * @agModule `ServerSideRowModelModule`\n     */\n    @Input() public serverSidePivotResultFieldSeparator: string | undefined = undefined;\n    /** To use the viewport row model you need to provide the grid with a `viewportDatasource`.\n     * @agModule `ViewportRowModelModule`\n     */\n    @Input() public viewportDatasource: IViewportDatasource | undefined = undefined;\n    /** When using viewport row model, sets the page size for the viewport.\n     * @initial\n     * @agModule `ViewportRowModelModule`\n     */\n    @Input() public viewportRowModelPageSize: number | undefined = undefined;\n    /** When using viewport row model, sets the buffer size for the viewport.\n     * @initial\n     * @agModule `ViewportRowModelModule`\n     */\n    @Input() public viewportRowModelBufferSize: number | undefined = undefined;\n    /** Set to `true` to always show the horizontal scrollbar.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public alwaysShowHorizontalScroll: boolean | undefined = undefined;\n    /** Set to `true` to always show the vertical scrollbar.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public alwaysShowVerticalScroll: boolean | undefined = undefined;\n    /** Set to `true` to debounce the vertical scrollbar. Can provide smoother scrolling on slow machines.\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public debounceVerticalScrollbar: boolean | undefined = undefined;\n    /** Set to `true` to never show the horizontal scroll. This is useful if the grid is aligned with another grid and will scroll when the other grid scrolls. (Should not be used in combination with `alwaysShowHorizontalScroll`.)\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressHorizontalScroll: boolean | undefined = undefined;\n    /** When `true`, the grid will not scroll to the top when new row data is provided. Use this if you don't want the default behaviour of scrolling to the top every time you load new data.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressScrollOnNewData: boolean | undefined = undefined;\n    /** When `true`, the grid will not allow mousewheel / touchpad scroll when popup elements are present.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressScrollWhenPopupsAreOpen: boolean | undefined = undefined;\n    /** When `true`, the grid will not use animation frames when drawing rows while scrolling. Use this if and only if the grid is working fast enough on all users machines and you want to avoid the temporarily empty rows.\n     *     **Note:** It is not recommended to set suppressAnimationFrame to `true` in most use cases as this can seriously degrade the user experience as all cells are rendered synchronously blocking the UI thread from scrolling.\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public suppressAnimationFrame: boolean | undefined = undefined;\n    /** If `true`, middle clicks will result in `click` events for cells and rows. Otherwise the browser will use middle click to scroll the grid.<br />**Note:** Not all browsers fire `click` events with the middle button. Most will fire only `mousedown` and `mouseup` events, which can be used to focus a cell, but will not work to call the `onCellClicked` function.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressMiddleClickScrolls: boolean | undefined = undefined;\n    /** If `true`, mouse wheel events will be passed to the browser. Useful if your grid has no vertical scrolls and you want the mouse to scroll the browser page.\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public suppressPreventDefaultOnMouseWheel: boolean | undefined = undefined;\n    /** Tell the grid how wide in pixels the scrollbar is, which is used in grid width calculations. Set only if using non-standard browser-provided scrollbars, so the grid can use the non-standard size in its calculations.\n     * @initial\n     */\n    @Input() public scrollbarWidth: number | undefined = undefined;\n    /** Use the `RowSelectionOptions` object to configure row selection. The string values `'single'` and `'multiple'` are deprecated.\n     * @agModule `RowSelectionModule`\n     */\n    @Input() public rowSelection: RowSelectionOptions<TData> | 'single' | 'multiple' | undefined = undefined;\n    /** Configure cell selection.\n     * @agModule `CellSelectionModule`\n     */\n    @Input() public cellSelection: boolean | CellSelectionOptions<TData> | undefined = undefined;\n    /** Set to `true` to allow multiple rows to be selected using single click.\n     * @default false\n     * @deprecated v32.2 Use `rowSelection.enableSelectionWithoutKeys` instead\n     */\n    @Input({ transform: booleanAttribute }) public rowMultiSelectWithClick: boolean | undefined = undefined;\n    /** If `true`, rows will not be deselected if you hold down `Ctrl` and click the row or press `Space`.\n     * @default false\n     * @deprecated v32.2 Use `rowSelection.enableClickSelection` instead\n     */\n    @Input({ transform: booleanAttribute }) public suppressRowDeselection: boolean | undefined = undefined;\n    /** If `true`, row selection won't happen when rows are clicked. Use when you only want checkbox selection.\n     * @default false\n     * @deprecated v32.2 Use `rowSelection.enableClickSelection` instead\n     */\n    @Input({ transform: booleanAttribute }) public suppressRowClickSelection: boolean | undefined = undefined;\n    /** If `true`, cells won't be focusable. This means keyboard navigation will be disabled for grid cells, but remain enabled in other elements of the grid such as column headers, floating filters, tool panels.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressCellFocus: boolean | undefined = undefined;\n    /** If `true`, header cells won't be focusable. This means keyboard navigation will be disabled for grid header cells, but remain enabled in other elements of the grid such as grid cells and tool panels.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressHeaderFocus: boolean | undefined = undefined;\n    /** Configure the selection column, used for displaying checkboxes.\n     *\n     * Note that due to the nature of this column, this type is a subset of `ColDef`, which does not support several normal column features such as editing, pivoting and grouping.\n     */\n    @Input() public selectionColumnDef: SelectionColumnDef | undefined = undefined;\n    /** Configure the Row Numbers Feature.\n     * @default false\n     * @agModule `RowNumbersModule`\n     */\n    @Input() public rowNumbers: boolean | RowNumbersOptions | undefined = undefined;\n    /** If `true`, only a single range can be selected.\n     * @default false\n     * @deprecated v32.2 Use `cellSelection.suppressMultiRanges` instead\n     */\n    @Input({ transform: booleanAttribute }) public suppressMultiRangeSelection: boolean | undefined = undefined;\n    /** Set to `true` to be able to select the text within cells.\n     *\n     *     **Note:** When this is set to `true`, the clipboard service is disabled and only selected text is copied.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public enableCellTextSelection: boolean | undefined = undefined;\n    /** Set to `true` to enable Range Selection.\n     * @default false\n     * @deprecated v32.2 Use `cellSelection = true` instead\n     * @agModule `CellSelectionModule`\n     */\n    @Input({ transform: booleanAttribute }) public enableRangeSelection: boolean | undefined = undefined;\n    /** Set to `true` to enable the Range Handle.\n     * @default false\n     * @deprecated v32.2 Use `cellSelection.handle` instead\n     */\n    @Input({ transform: booleanAttribute }) public enableRangeHandle: boolean | undefined = undefined;\n    /** Set to `true` to enable the Fill Handle.\n     * @default false\n     * @deprecated v32.2 Use `cellSelection.handle` instead\n     */\n    @Input({ transform: booleanAttribute }) public enableFillHandle: boolean | undefined = undefined;\n    /** Set to `'x'` to force the fill handle direction to horizontal, or set to `'y'` to force the fill handle direction to vertical.\n     * @default 'xy'\n     * @deprecated v32.2 Use `cellSelection.handle.direction` instead\n     */\n    @Input() public fillHandleDirection: 'x' | 'y' | 'xy' | undefined = undefined;\n    /** Set this to `true` to prevent cell values from being cleared when the Range Selection is reduced by the Fill Handle.\n     * @default false\n     * @deprecated v32.2 Use `cellSelection.suppressClearOnFillReduction` instead\n     */\n    @Input({ transform: booleanAttribute }) public suppressClearOnFillReduction: boolean | undefined = undefined;\n    /** Array defining the order in which sorting occurs (if sorting is enabled). Values can be `'asc'`, `'desc'` or `null`. For example: `sortingOrder: ['asc', 'desc']`.\n     * @default [null, 'asc', 'desc']\n     * @deprecated v33 Use `defaultColDef.sortingOrder` instead\n     */\n    @Input() public sortingOrder: SortDirection[] | undefined = undefined;\n    /** Set to `true` to specify that the sort should take accented characters into account. If this feature is turned on the sort will be slower.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public accentedSort: boolean | undefined = undefined;\n    /** Set to `true` to show the 'no sort' icon.\n     * @default false\n     * @deprecated v33 Use `defaultColDef.unSortIcon` instead\n     */\n    @Input({ transform: booleanAttribute }) public unSortIcon: boolean | undefined = undefined;\n    /** Set to `true` to suppress multi-sort when the user shift-clicks a column header.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressMultiSort: boolean | undefined = undefined;\n    /** Set to `true` to always multi-sort when the user clicks a column header, regardless of key presses.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public alwaysMultiSort: boolean | undefined = undefined;\n    /** Set to `'ctrl'` to have multi sorting by clicking work using the `Ctrl` (or `Command ⌘` for Mac) key.\n     */\n    @Input() public multiSortKey: 'ctrl' | undefined = undefined;\n    /** Set to `true` to suppress sorting of un-sorted data to match original row data.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressMaintainUnsortedOrder: boolean | undefined = undefined;\n    /** Icons to use inside the grid instead of the grid's default icons.\n     * @initial\n     */\n    @Input() public icons: Icons | undefined = undefined;\n    /** Default row height in pixels.\n     * @default 25\n     */\n    @Input() public rowHeight: number | undefined = undefined;\n    /** The style properties to apply to all rows. Set to an object of key (style names) and values (style values).\n     * @agModule `RowStyleModule`\n     */\n    @Input() public rowStyle: RowStyle | undefined = undefined;\n    /** CSS class(es) for all rows. Provide either a string (class name) or array of strings (array of class names).\n     * @agModule `RowStyleModule`\n     */\n    @Input() public rowClass: string | string[] | undefined = undefined;\n    /** Rules which can be applied to include certain CSS classes.\n     * @agModule `RowStyleModule`\n     */\n    @Input() public rowClassRules: RowClassRules<TData> | undefined = undefined;\n    /** Set to `true` to not highlight rows by adding the `ag-row-hover` CSS class.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public suppressRowHoverHighlight: boolean | undefined = undefined;\n    /** Uses CSS `top` instead of CSS `transform` for positioning rows. Useful if the transform function is causing issues such as used in row spanning.\n     * @default false\n     * @initial\n     */\n    @Input({ transform: booleanAttribute }) public suppressRowTransform: boolean | undefined = undefined;\n    /** Set to `true` to highlight columns by adding the `ag-column-hover` CSS class.\n     * @default false\n     * @agModule `ColumnHoverModule`\n     */\n    @Input({ transform: booleanAttribute }) public columnHoverHighlight: boolean | undefined = undefined;\n    /** Provide a custom `gridId` for this instance of the grid. Value will be set on the root DOM node using the attribute `grid-id` as well as being accessible via the `gridApi.getGridId()` method.\n     * @initial\n     */\n    @Input() public gridId: string | undefined = undefined;\n    /** When enabled, sorts only the rows added/updated by a transaction.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) public deltaSort: boolean | undefined = undefined;\n    /** Specifies how tree data should be displayed.\n     *\n     * The options are:\n     *\n     * - `'auto'`: group column automatically added by the grid.\n     * - `'custom'`: informs the grid that group columns will be provided.\n     * @agModule `TreeDataModule`\n     */\n    @Input() public treeDataDisplayType: TreeDataDisplayType | undefined = undefined;\n    /** @initial\n     */\n    @Input({ transform: booleanAttribute }) public enableGroupEdit: boolean | undefined = undefined;\n    /** Initial state for the grid. Only read once on initialization. Can be used in conjunction with `api.getState()` to save and restore grid state.\n     * @initial\n     * @agModule `GridStateModule`\n     */\n    @Input() public initialState: GridState | undefined = undefined;\n    /** Theme to apply to the grid, or the string \"legacy\" to opt back into the\n     * v32 style of theming where themes were imported as CSS files and applied\n     * by setting a class name on the parent element.\n     *\n     * @default themeQuartz\n     */\n    @Input() public theme: Theme | 'legacy' | undefined = undefined;\n    /** If your theme uses a font that is available on Google Fonts, pass true to load it from Google's CDN.\n     */\n    @Input({ transform: booleanAttribute }) public loadThemeGoogleFonts: boolean | undefined = undefined;\n    /** The CSS layer that this theme should be rendered onto. When specified,\n     * grid CSS will be wrapped in a `@layer ${themeCssLayer} { ... }` block.\n     *\n     * NOTE: when specifying `themeCssLayer` we recommend setting\n     * `themeStyleContainer` to `document.body` to ensure that the grid CSS\n     * comes after your application CSS, allowing your application to set the\n     * order of layers.\n     *\n     * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@layer\n     */\n    @Input() public themeCssLayer: string | undefined = undefined;\n    /** The nonce attribute to set on style elements added to the document by\n     * themes. If \"foo\" is passed to this property, the grid can use the Content\n     * Security Policy `style-src 'nonce-foo'`, instead of the less secure\n     * `style-src 'unsafe-inline'`.\n     *\n     * Note: CSP nonces are global to a page, where a page has multiple grids,\n     * every one must have the same styleNonce set.\n     */\n    @Input() public styleNonce: string | undefined = undefined;\n    /** An element to insert style elements into when injecting styles into the\n     * grid. Styles are inserted at the start of the element.\n     *\n     * If undefined, styles will be added to the document head for grids\n     * rendered in the main document fragment, or to the grid wrapper element\n     * for other grids (e.g. those rendered in a shadow DOM or detached from the\n     * document).\n     *\n     * @initial\n     */\n    @Input() public themeStyleContainer: (HTMLElement | (() => HTMLElement | void)) | undefined = undefined;\n    /** For customising the context menu.\n     * @agModule `ContextMenuModule`\n     */\n    @Input() public getContextMenuItems: GetContextMenuItems<TData> | undefined = undefined;\n    /** For customising the main 'column header' menu.\n     * @initial\n     * @agModule `ColumnMenuModule`\n     */\n    @Input() public getMainMenuItems: GetMainMenuItems<TData> | undefined = undefined;\n    /** Allows user to process popups after they are created. Applications can use this if they want to, for example, reposition the popup.\n     */\n    @Input() public postProcessPopup: PostProcessPopup<TData> | undefined = undefined;\n    /** Allows the user to process the columns being removed from the pinned section because the viewport is too small to accommodate them.\n     * Returns an array of columns to be removed from the pinned areas.\n     * @initial\n     */\n    @Input() public processUnpinnedColumns: ProcessUnpinnedColumns<TData> | undefined = undefined;\n    /** Allows you to process cells for the clipboard. Handy if for example you have `Date` objects that need to have a particular format if importing into Excel.\n     * @agModule `ClipboardModule`\n     */\n    @Input() public processCellForClipboard: ProcessCellForClipboard<TData> | undefined = undefined;\n    /** Allows you to process header values for the clipboard.\n     * @agModule `ClipboardModule`\n     */\n    @Input() public processHeaderForClipboard: ProcessHeaderForClipboard<TData> | undefined = undefined;\n    /** Allows you to process group header values for the clipboard.\n     * @agModule `ClipboardModule`\n     */\n    @Input() public processGroupHeaderForClipboard: ProcessGroupHeaderForClipboard<TData> | undefined = undefined;\n    /** Allows you to process cells from the clipboard. Handy if for example you have number fields and want to block non-numbers from getting into the grid.\n     * @agModule `ClipboardModule`\n     */\n    @Input() public processCellFromClipboard: ProcessCellFromClipboard<TData> | undefined = undefined;\n    /** Allows you to get the data that would otherwise go to the clipboard. To be used when you want to control the 'copy to clipboard' operation yourself.\n     * @agModule `ClipboardModule`\n     */\n    @Input() public sendToClipboard: SendToClipboard<TData> | undefined = undefined;\n    /** Allows complete control of the paste operation, including cancelling the operation (so nothing happens) or replacing the data with other data.\n     * @agModule `ClipboardModule`\n     */\n    @Input() public processDataFromClipboard: ProcessDataFromClipboard<TData> | undefined = undefined;\n    /** Grid calls this method to know if an external filter is present.\n     * @agModule `ExternalFilterModule`\n     */\n    @Input() public isExternalFilterPresent: IsExternalFilterPresent<TData> | undefined = undefined;\n    /** Should return `true` if external filter passes, otherwise `false`.\n     * @agModule `ExternalFilterModule`\n     */\n    @Input() public doesExternalFilterPass: DoesExternalFilterPass<TData> | undefined = undefined;\n    /** Callback to be used to customise the chart toolbar items.\n     * @initial\n     * @agModule `IntegratedChartsModule`\n     */\n    @Input() public getChartToolbarItems: GetChartToolbarItems<TData> | undefined = undefined;\n    /** Callback to enable displaying the chart in an alternative chart container.\n     * @initial\n     * @agModule `IntegratedChartsModule`\n     */\n    @Input() public createChartContainer: CreateChartContainer<TData> | undefined = undefined;\n    /** Allows overriding the element that will be focused when the grid receives focus from outside elements (tabbing into the grid).\n     * @returns `True` if this function should override the grid's default behavior, `False` to allow the grid's default behavior.\n     */\n    @Input() public focusGridInnerElement: FocusGridInnerElement<TData> | undefined = undefined;\n    /** Allows overriding the default behaviour for when user hits navigation (arrow) key when a header is focused. Return the next Header position to navigate to or `null` to stay on current header.\n     */\n    @Input() public navigateToNextHeader: NavigateToNextHeader<TData> | undefined = undefined;\n    /** Allows overriding the default behaviour for when user hits `Tab` key when a header is focused.\n     * Return the next header position to navigate to, `true` to stay on the current header,\n     * or `false` to let the browser handle the tab behaviour.\n     */\n    @Input() public tabToNextHeader: TabToNextHeader<TData> | undefined = undefined;\n    /** Allows overriding the default behaviour for when user hits navigation (arrow) key when a cell is focused. Return the next Cell position to navigate to or `null` to stay on current cell.\n     */\n    @Input() public navigateToNextCell: NavigateToNextCell<TData> | undefined = undefined;\n    /** Allows overriding the default behaviour for when user hits `Tab` key when a cell is focused.\n     * Return the next cell position to navigate to, `true` to stay on the current cell,\n     * or `false` to let the browser handle the tab behaviour.\n     */\n    @Input() public tabToNextCell: TabToNextCell<TData> | undefined = undefined;\n    /** Allows overriding the default behaviour when tabbing between core grid containers.\n     * Return a container name, a cell position, or a header position to focus that target,\n     * `true` to stay on the current focus, `false` to let the browser handle tab behaviour,\n     * or `undefined` to use the grid's default behaviour.\n     */\n    @Input() public tabToNextGridContainer: TabToNextGridContainer<TData> | undefined = undefined;\n    /** A callback for localising text within the grid.\n     * @initial\n     * @agModule `LocaleModule`\n     */\n    @Input() public getLocaleText: GetLocaleText<TData> | undefined = undefined;\n    /** Allows overriding what `document` is used. Currently used by Drag and Drop (may extend to other places in the future). Use this when you want the grid to use a different `document` than the one available on the global scope. This can happen if docking out components (something which Electron supports)\n     */\n    @Input() public getDocument: GetDocument | undefined = undefined;\n    /** Allows user to format the numbers in the pagination panel, i.e. 'row count' and 'page number' labels. This is for pagination panel only, to format numbers inside the grid's cells (i.e. your data), then use `valueFormatter` in the column definitions.\n     * @initial\n     * @agModule `PaginationModule`\n     */\n    @Input() public paginationNumberFormatter: PaginationNumberFormatter<TData> | undefined = undefined;\n    /** Callback to use when you need access to more then the current column for aggregation.\n     * @agModule `RowGroupingModule` / `PivotModule` / `TreeDataModule` / `ServerSideRowModelModule`\n     */\n    @Input() public getGroupRowAgg: GetGroupRowAgg<TData> | undefined = undefined;\n    /** (Client-side Row Model only) Allows groups to be open by default.\n     * @agModule `RowGroupingModule` / `TreeDataModule`\n     */\n    @Input() public isGroupOpenByDefault: IsGroupOpenByDefault<TData> | undefined = undefined;\n    /** Controls how expand/collapse operations affect all rows and group interactions.\n     * If `true`, expandAll / collapseAll applies to all rows (not just loaded ones),\n     * and interacting with the group overrides the default expansion state set by `isServerSideGroupOpenByDefault`.\n     * @agModule RowGroupingModule / TreeDataModule\n     */\n    @Input({ transform: booleanAttribute }) public ssrmExpandAllAffectsAllRows: boolean | undefined = undefined;\n    /** Allows default sorting of groups.\n     * @agModule `RowGroupingModule`\n     */\n    @Input() public initialGroupOrderComparator: InitialGroupOrderComparator<TData> | undefined = undefined;\n    /** Callback for the mutation of the generated pivot result column definitions\n     * @agModule `PivotModule`\n     */\n    @Input() public processPivotResultColDef: ProcessPivotResultColDef<TData> | undefined = undefined;\n    /** Callback for the mutation of the generated pivot result column group definitions\n     * @agModule `PivotModule`\n     */\n    @Input() public processPivotResultColGroupDef: ProcessPivotResultColGroupDef<TData> | undefined = undefined;\n    /** Callback to be used when working with Tree Data when `treeData = true`.\n     * @initial\n     * @agModule `TreeDataModule`\n     */\n    @Input() public getDataPath: GetDataPath<TData> | undefined = undefined;\n    /** Allows setting the child count for a group row.\n     * @initial\n     * @agModule `ServerSideRowModelModule`\n     */\n    @Input() public getChildCount: GetChildCount | undefined = undefined;\n    /** Allows providing different params for different levels of grouping.\n     * @initial\n     * @agModule `ServerSideRowModelModule`\n     */\n    @Input() public getServerSideGroupLevelParams: GetServerSideGroupLevelParams<TData> | undefined = undefined;\n    /** Allows groups to be open by default.\n     * @agModule `ServerSideRowModelModule`\n     */\n    @Input() public isServerSideGroupOpenByDefault: IsServerSideGroupOpenByDefault<TData> | undefined = undefined;\n    /** Allows cancelling transactions.\n     * @agModule `ServerSideRowModelModule`\n     */\n    @Input() public isApplyServerSideTransaction: IsApplyServerSideTransaction<TData> | undefined = undefined;\n    /** SSRM Tree Data: Allows specifying which rows are expandable.\n     * @agModule `ServerSideRowModelModule`\n     */\n    @Input() public isServerSideGroup: IsServerSideGroup | undefined = undefined;\n    /** SSRM Tree Data: Allows specifying group keys.\n     * @agModule `ServerSideRowModelModule`\n     */\n    @Input() public getServerSideGroupKey: GetServerSideGroupKey | undefined = undefined;\n    /** Return a business key for the node. If implemented, each row in the DOM will have an attribute `row-business-key='abc'` where `abc` is what you return as the business key.\n     * This is useful for automated testing, as it provides a way for your tool to identify rows based on unique business keys.\n     */\n    @Input() public getBusinessKeyForNode: GetBusinessKeyForNode<TData> | undefined = undefined;\n    /** Provide a pure function that returns a string ID to uniquely identify a given row. This enables the grid to work optimally with data changes and updates.\n     * @initial\n     */\n    @Input() public getRowId: GetRowIdFunc<TData> | undefined = undefined;\n    /** When enabled, getRowId() callback is implemented and new Row Data is set, the grid will disregard all previous rows and treat the new Row Data as new data. As a consequence, all Row State (eg selection, rendered rows) will be reset.\n     * @default false\n     * @agModule `ClientSideRowModelModule`\n     */\n    @Input({ transform: booleanAttribute }) public resetRowDataOnUpdate: boolean | undefined = undefined;\n    /** Callback fired after the row is rendered into the DOM. Should not be used to initiate side effects.\n     */\n    @Input() public processRowPostCreate: ProcessRowPostCreate<TData> | undefined = undefined;\n    /** Callback to be used to determine which rows are selectable. By default rows are selectable, so return `false` to make a row un-selectable.\n     * @deprecated v32.2 Use `rowSelection.isRowSelectable` instead\n     */\n    @Input() public isRowSelectable: IsRowSelectable<TData> | undefined = undefined;\n    /** Callback to be used with Master Detail to determine if a row should be a master row. If `false` is returned no detail row will exist for this row.\n     * @agModule `MasterDetailModule`\n     */\n    @Input() public isRowMaster: IsRowMaster<TData> | undefined = undefined;\n    /** Callback to fill values instead of simply copying values or increasing number values using linear progression.\n     * @deprecated v32.2 Use `cellSelection.handle.setFillValue` instead\n     */\n    @Input() public fillOperation: FillOperation<TData> | undefined = undefined;\n    /** Callback to perform additional sorting after the grid has sorted the rows.\n     */\n    @Input() public postSortRows: PostSortRows<TData> | undefined = undefined;\n    /** Callback version of property `rowStyle` to set style for each row individually. Function should return an object of CSS values or undefined for no styles.\n     * @agModule `RowStyleModule`\n     */\n    @Input() public getRowStyle: GetRowStyle<TData> | undefined = undefined;\n    /** Callback version of property `rowClass` to set class(es) for each row individually. Function should return either a string (class name), array of strings (array of class names) or undefined for no class.\n     * @agModule `RowStyleModule`\n     */\n    @Input() public getRowClass: GetRowClass<TData> | undefined = undefined;\n    /** Callback version of property `rowHeight` to set height for each row individually. Function should return a positive number of pixels, or return `null`/`undefined` to use the default row height.\n     */\n    @Input() public getRowHeight: GetRowHeight<TData> | undefined = undefined;\n    /** Tells the grid if this row should be rendered as full width.\n     */\n    @Input() public isFullWidthRow: IsFullWidthRow<TData> | undefined = undefined;\n    /** Called by drag and drop when rows are dragged over another row to conditionally prevent dropping the dragged row on the hovered row.\n     * The user can cancel the drop by returning `false` or customize the operation by returning a `IsRowValidDropPositionResult`.\n     * @agModule `RowDragModule`\n     */\n    @Input() public isRowValidDropPosition: IsRowValidDropPositionCallback<TData> | undefined = undefined;\n\n    /** The tool panel visibility has changed. Fires twice if switching between panels - once with the old panel and once with the new panel.\n     */\n    @Output() public toolPanelVisibleChanged: EventEmitter<ToolPanelVisibleChangedEvent<TData>> = new EventEmitter<\n        ToolPanelVisibleChangedEvent<TData>\n    >();\n    /** The tool panel size has been changed.\n     */\n    @Output() public toolPanelSizeChanged: EventEmitter<ToolPanelSizeChangedEvent<TData>> = new EventEmitter<\n        ToolPanelSizeChangedEvent<TData>\n    >();\n    /** The column menu visibility has changed. Fires twice if switching between tabs - once with the old tab and once with the new tab.\n     */\n    @Output() public columnMenuVisibleChanged: EventEmitter<ColumnMenuVisibleChangedEvent<TData>> = new EventEmitter<\n        ColumnMenuVisibleChangedEvent<TData>\n    >();\n    /** The context menu visibility has changed (opened or closed).\n     */\n    @Output() public contextMenuVisibleChanged: EventEmitter<ContextMenuVisibleChangedEvent<TData>> = new EventEmitter<\n        ContextMenuVisibleChangedEvent<TData>\n    >();\n    /** Cut operation has started.\n     */\n    @Output() public cutStart: EventEmitter<CutStartEvent<TData>> = new EventEmitter<CutStartEvent<TData>>();\n    /** Cut operation has ended.\n     */\n    @Output() public cutEnd: EventEmitter<CutEndEvent<TData>> = new EventEmitter<CutEndEvent<TData>>();\n    /** Paste operation has started.\n     */\n    @Output() public pasteStart: EventEmitter<PasteStartEvent<TData>> = new EventEmitter<PasteStartEvent<TData>>();\n    /** Paste operation has ended.\n     */\n    @Output() public pasteEnd: EventEmitter<PasteEndEvent<TData>> = new EventEmitter<PasteEndEvent<TData>>();\n    /** A column, or group of columns, was hidden / shown.\n     */\n    @Output() public columnVisible: EventEmitter<ColumnVisibleEvent<TData>> = new EventEmitter<\n        ColumnVisibleEvent<TData>\n    >();\n    /** A column, or group of columns, was pinned / unpinned.\n     */\n    @Output() public columnPinned: EventEmitter<ColumnPinnedEvent<TData>> = new EventEmitter<\n        ColumnPinnedEvent<TData>\n    >();\n    /** A column was resized.\n     */\n    @Output() public columnResized: EventEmitter<ColumnResizedEvent<TData>> = new EventEmitter<\n        ColumnResizedEvent<TData>\n    >();\n    /** A column was moved.\n     */\n    @Output() public columnMoved: EventEmitter<ColumnMovedEvent<TData>> = new EventEmitter<ColumnMovedEvent<TData>>();\n    /** A value column was added or removed.\n     */\n    @Output() public columnValueChanged: EventEmitter<ColumnValueChangedEvent<TData>> = new EventEmitter<\n        ColumnValueChangedEvent<TData>\n    >();\n    /** The pivot mode flag was changed.\n     */\n    @Output() public columnPivotModeChanged: EventEmitter<ColumnPivotModeChangedEvent<TData>> = new EventEmitter<\n        ColumnPivotModeChangedEvent<TData>\n    >();\n    /** A pivot column was added, removed or order changed.\n     */\n    @Output() public columnPivotChanged: EventEmitter<ColumnPivotChangedEvent<TData>> = new EventEmitter<\n        ColumnPivotChangedEvent<TData>\n    >();\n    /** A column group was opened / closed.\n     */\n    @Output() public columnGroupOpened: EventEmitter<ColumnGroupOpenedEvent<TData>> = new EventEmitter<\n        ColumnGroupOpenedEvent<TData>\n    >();\n    /** User set new columns.\n     */\n    @Output() public newColumnsLoaded: EventEmitter<NewColumnsLoadedEvent<TData>> = new EventEmitter<\n        NewColumnsLoadedEvent<TData>\n    >();\n    /** The list of grid columns changed.\n     */\n    @Output() public gridColumnsChanged: EventEmitter<GridColumnsChangedEvent<TData>> = new EventEmitter<\n        GridColumnsChangedEvent<TData>\n    >();\n    /** The list of displayed columns changed. This can result from columns open / close, column move, pivot, group, etc.\n     */\n    @Output() public displayedColumnsChanged: EventEmitter<DisplayedColumnsChangedEvent<TData>> = new EventEmitter<\n        DisplayedColumnsChangedEvent<TData>\n    >();\n    /** The list of rendered columns changed (only columns in the visible scrolled viewport are rendered by default).\n     */\n    @Output() public virtualColumnsChanged: EventEmitter<VirtualColumnsChangedEvent<TData>> = new EventEmitter<\n        VirtualColumnsChangedEvent<TData>\n    >();\n    /** @deprecated v32.2 Either use `onDisplayedColumnsChanged` which is fired at the same time,\n     * or use one of the more specific column events.\n     */\n    @Output() public columnEverythingChanged: EventEmitter<ColumnEverythingChangedEvent<TData>> = new EventEmitter<\n        ColumnEverythingChangedEvent<TData>\n    >();\n    /** Columns have been reset to their default state as reflected by the colDefs.\n     */\n    @Output() public columnsReset: EventEmitter<ColumnsResetEvent<TData>> = new EventEmitter<\n        ColumnsResetEvent<TData>\n    >();\n    /** A mouse cursor is initially moved over a column header.\n     */\n    @Output() public columnHeaderMouseOver: EventEmitter<ColumnHeaderMouseOverEvent<TData>> = new EventEmitter<\n        ColumnHeaderMouseOverEvent<TData>\n    >();\n    /** A mouse cursor is moved out of a column header.\n     */\n    @Output() public columnHeaderMouseLeave: EventEmitter<ColumnHeaderMouseLeaveEvent<TData>> = new EventEmitter<\n        ColumnHeaderMouseLeaveEvent<TData>\n    >();\n    /** A click is performed on a column header.\n     */\n    @Output() public columnHeaderClicked: EventEmitter<ColumnHeaderClickedEvent<TData>> = new EventEmitter<\n        ColumnHeaderClickedEvent<TData>\n    >();\n    /** A context menu action, such as right-click or context menu key press, is performed on a column header.\n     */\n    @Output() public columnHeaderContextMenu: EventEmitter<ColumnHeaderContextMenuEvent<TData>> = new EventEmitter<\n        ColumnHeaderContextMenuEvent<TData>\n    >();\n    /** Only used by Angular, React and VueJS AG Grid components (not used if doing plain JavaScript).\n     * If the grid receives changes due to bound properties, this event fires after the grid has finished processing the change.\n     */\n    @Output() public componentStateChanged: EventEmitter<ComponentStateChangedEvent<TData>> = new EventEmitter<\n        ComponentStateChangedEvent<TData>\n    >();\n    /** Cell value has changed. This occurs after the following scenarios:\n     * - Editing. Will not fire if any of the following are true:\n     *     new value is the same as old value;\n     *     `readOnlyEdit = true`;\n     *     editing was cancelled (e.g. Escape key was pressed);\n     *     or new value is of the wrong cell data type for the column.\n     *  - Cut.\n     *  - Paste.\n     *  - Cell clear (pressing Delete key).\n     *  - Fill handle.\n     *  - Copy range down.\n     *  - Undo and redo.\n     */\n    @Output() public cellValueChanged: EventEmitter<CellValueChangedEvent<TData>> = new EventEmitter<\n        CellValueChangedEvent<TData>\n    >();\n    /** Value has changed after editing. Only fires when `readOnlyEdit=true`.\n     */\n    @Output() public cellEditRequest: EventEmitter<CellEditRequestEvent<TData>> = new EventEmitter<\n        CellEditRequestEvent<TData>\n    >();\n    /** A cell's value within a row has changed. This event corresponds to Full Row Editing only.\n     */\n    @Output() public rowValueChanged: EventEmitter<RowValueChangedEvent<TData>> = new EventEmitter<\n        RowValueChangedEvent<TData>\n    >();\n    /** Editing a cell has started.\n     */\n    @Output() public cellEditingStarted: EventEmitter<CellEditingStartedEvent<TData>> = new EventEmitter<\n        CellEditingStartedEvent<TData>\n    >();\n    /** Editing a cell has stopped.\n     */\n    @Output() public cellEditingStopped: EventEmitter<CellEditingStoppedEvent<TData>> = new EventEmitter<\n        CellEditingStoppedEvent<TData>\n    >();\n    /** Editing a row has started (when row editing is enabled). When row editing, this event will be fired once and `cellEditingStarted` will be fired for each individual cell. Only fires when doing Full Row Editing.\n     */\n    @Output() public rowEditingStarted: EventEmitter<RowEditingStartedEvent<TData>> = new EventEmitter<\n        RowEditingStartedEvent<TData>\n    >();\n    /** Editing a row has stopped (when row editing is enabled). When row editing, this event will be fired once and `cellEditingStopped` will be fired for each individual cell. Only fires when doing Full Row Editing.\n     */\n    @Output() public rowEditingStopped: EventEmitter<RowEditingStoppedEvent<TData>> = new EventEmitter<\n        RowEditingStoppedEvent<TData>\n    >();\n    /** Bulk editing has started.\n     */\n    @Output() public bulkEditingStarted: EventEmitter<BulkEditingStartedEvent<TData>> = new EventEmitter<\n        BulkEditingStartedEvent<TData>\n    >();\n    /** Bulk editing has stopped.\n     */\n    @Output() public bulkEditingStopped: EventEmitter<BulkEditingStoppedEvent<TData>> = new EventEmitter<\n        BulkEditingStoppedEvent<TData>\n    >();\n    /** Fired when the first edit is made after `api.startBatchEdit()` is called.\n     * This event fires lazily — not immediately on `api.startBatchEdit()`, but on the first cell value change or editor open within the batch session.\n     */\n    @Output() public batchEditingStarted: EventEmitter<BatchEditingStartedEvent<TData>> = new EventEmitter<\n        BatchEditingStartedEvent<TData>\n    >();\n    /** Batch editing has stopped (when batch editing is enabled). Contains a list of edits if the batch was committed via `api.commitBatchEdit()`.\n     */\n    @Output() public batchEditingStopped: EventEmitter<BatchEditingStoppedEvent<TData>> = new EventEmitter<\n        BatchEditingStoppedEvent<TData>\n    >();\n    /** Undo operation has started.\n     */\n    @Output() public undoStarted: EventEmitter<UndoStartedEvent<TData>> = new EventEmitter<UndoStartedEvent<TData>>();\n    /** Undo operation has ended.\n     */\n    @Output() public undoEnded: EventEmitter<UndoEndedEvent<TData>> = new EventEmitter<UndoEndedEvent<TData>>();\n    /** Redo operation has started.\n     */\n    @Output() public redoStarted: EventEmitter<RedoStartedEvent<TData>> = new EventEmitter<RedoStartedEvent<TData>>();\n    /** Redo operation has ended.\n     */\n    @Output() public redoEnded: EventEmitter<RedoEndedEvent<TData>> = new EventEmitter<RedoEndedEvent<TData>>();\n    /** Cell selection delete operation (cell clear) has started.\n     */\n    @Output() public cellSelectionDeleteStart: EventEmitter<CellSelectionDeleteStartEvent<TData>> = new EventEmitter<\n        CellSelectionDeleteStartEvent<TData>\n    >();\n    /** Cell selection delete operation (cell clear) has ended.\n     */\n    @Output() public cellSelectionDeleteEnd: EventEmitter<CellSelectionDeleteEndEvent<TData>> = new EventEmitter<\n        CellSelectionDeleteEndEvent<TData>\n    >();\n    /** Range delete operation (cell clear) has started.\n     *\n     * @deprecated v32.2 Use `onCellSelectionDeleteStart` instead\n     */\n    @Output() public rangeDeleteStart: EventEmitter<RangeDeleteStartEvent<TData>> = new EventEmitter<\n        RangeDeleteStartEvent<TData>\n    >();\n    /** Range delete operation (cell clear) has ended.\n     *\n     * @deprecated v32.2 Use `onCellSelectionDeleteEnd` instead\n     */\n    @Output() public rangeDeleteEnd: EventEmitter<RangeDeleteEndEvent<TData>> = new EventEmitter<\n        RangeDeleteEndEvent<TData>\n    >();\n    /** Fill operation has started.\n     */\n    @Output() public fillStart: EventEmitter<FillStartEvent<TData>> = new EventEmitter<FillStartEvent<TData>>();\n    /** Fill operation has ended.\n     */\n    @Output() public fillEnd: EventEmitter<FillEndEvent<TData>> = new EventEmitter<FillEndEvent<TData>>();\n    /** Filter has been opened.\n     */\n    @Output() public filterOpened: EventEmitter<FilterOpenedEvent<TData>> = new EventEmitter<\n        FilterOpenedEvent<TData>\n    >();\n    /** Filter has been modified and applied.\n     */\n    @Output() public filterChanged: EventEmitter<FilterChangedEvent<TData>> = new EventEmitter<\n        FilterChangedEvent<TData>\n    >();\n    /** Filter was modified but not applied  (when using `enableFilterHandlers = false`). Used when filters have 'Apply' buttons.\n     */\n    @Output() public filterModified: EventEmitter<FilterModifiedEvent<TData>> = new EventEmitter<\n        FilterModifiedEvent<TData>\n    >();\n    /** Filter UI was modified (when using `enableFilterHandlers = true`).\n     */\n    @Output() public filterUiChanged: EventEmitter<FilterUiChangedEvent<TData>> = new EventEmitter<\n        FilterUiChangedEvent<TData>\n    >();\n    /** Floating filter UI modified (when using `enableFilterHandlers = true`).\n     */\n    @Output() public floatingFilterUiChanged: EventEmitter<FloatingFilterUiChangedEvent<TData>> = new EventEmitter<\n        FloatingFilterUiChangedEvent<TData>\n    >();\n    /** Advanced Filter Builder visibility has changed (opened or closed).\n     */\n    @Output() public advancedFilterBuilderVisibleChanged: EventEmitter<\n        AdvancedFilterBuilderVisibleChangedEvent<TData>\n    > = new EventEmitter<AdvancedFilterBuilderVisibleChangedEvent<TData>>();\n    /** Find details have changed (e.g. Find search value, active match, or updates to grid cells).\n     */\n    @Output() public findChanged: EventEmitter<FindChangedEvent<TData>> = new EventEmitter<FindChangedEvent<TData>>();\n    /** A chart has been created.\n     */\n    @Output() public chartCreated: EventEmitter<ChartCreatedEvent<TData>> = new EventEmitter<\n        ChartCreatedEvent<TData>\n    >();\n    /** The data range for the chart has been changed.\n     */\n    @Output() public chartRangeSelectionChanged: EventEmitter<ChartRangeSelectionChangedEvent<TData>> =\n        new EventEmitter<ChartRangeSelectionChangedEvent<TData>>();\n    /** Formatting changes have been made by users through the Customize Panel.\n     */\n    @Output() public chartOptionsChanged: EventEmitter<ChartOptionsChangedEvent<TData>> = new EventEmitter<\n        ChartOptionsChangedEvent<TData>\n    >();\n    /** A chart has been destroyed.\n     */\n    @Output() public chartDestroyed: EventEmitter<ChartDestroyedEvent<TData>> = new EventEmitter<\n        ChartDestroyedEvent<TData>\n    >();\n    /** DOM event `keyDown` happened on a cell.\n     */\n    @Output() public cellKeyDown: EventEmitter<CellKeyDownEvent<TData> | FullWidthCellKeyDownEvent<TData>> =\n        new EventEmitter<CellKeyDownEvent<TData> | FullWidthCellKeyDownEvent<TData>>();\n    /** The grid has initialised and is ready for most api calls, but may not be fully rendered yet      */\n    @Output() public gridReady: EventEmitter<GridReadyEvent<TData>> = new EventEmitter<GridReadyEvent<TData>>();\n    /** Fired the first time data is rendered into the grid. Use this event if you want to auto resize columns based on their contents     */\n    @Output() public firstDataRendered: EventEmitter<FirstDataRenderedEvent<TData>> = new EventEmitter<\n        FirstDataRenderedEvent<TData>\n    >();\n    /** The size of the grid `div` has changed. In other words, the grid was resized.\n     */\n    @Output() public gridSizeChanged: EventEmitter<GridSizeChangedEvent<TData>> = new EventEmitter<\n        GridSizeChangedEvent<TData>\n    >();\n    /** Displayed rows have changed. Triggered after sort, filter or tree expand / collapse events.\n     */\n    @Output() public modelUpdated: EventEmitter<ModelUpdatedEvent<TData>> = new EventEmitter<\n        ModelUpdatedEvent<TData>\n    >();\n    /** A row was removed from the DOM, for any reason. Use to clean up resources (if any) used by the row.\n     */\n    @Output() public virtualRowRemoved: EventEmitter<VirtualRowRemovedEvent<TData>> = new EventEmitter<\n        VirtualRowRemovedEvent<TData>\n    >();\n    /** Which rows are rendered in the DOM has changed.\n     */\n    @Output() public viewportChanged: EventEmitter<ViewportChangedEvent<TData>> = new EventEmitter<\n        ViewportChangedEvent<TData>\n    >();\n    /** The body was scrolled horizontally or vertically.\n     */\n    @Output() public bodyScroll: EventEmitter<BodyScrollEvent<TData>> = new EventEmitter<BodyScrollEvent<TData>>();\n    /** Main body of the grid has stopped scrolling, either horizontally or vertically.\n     */\n    @Output() public bodyScrollEnd: EventEmitter<BodyScrollEndEvent<TData>> = new EventEmitter<\n        BodyScrollEndEvent<TData>\n    >();\n    /** When dragging starts. This could be any action that uses the grid's Drag and Drop service, e.g. Column Moving, Column Resizing, Range Selection, Fill Handle, etc.\n     */\n    @Output() public dragStarted: EventEmitter<DragStartedEvent<TData>> = new EventEmitter<DragStartedEvent<TData>>();\n    /** When dragging stops. This could be any action that uses the grid's Drag and Drop service, e.g. Column Moving, Column Resizing, Range Selection, Fill Handle, etc.\n     */\n    @Output() public dragStopped: EventEmitter<DragStoppedEvent<TData>> = new EventEmitter<DragStoppedEvent<TData>>();\n    /** When dragging is cancelled stops. This is caused by pressing `Escape` while dragging elements within the grid that uses the grid's Drag and Drop service, e.g. Column Moving, Column Resizing, Range Selection, Fill Handle, etc.\n     */\n    @Output() public dragCancelled: EventEmitter<DragCancelledEvent<TData>> = new EventEmitter<\n        DragCancelledEvent<TData>\n    >();\n    /** Grid state has been updated.\n     */\n    @Output() public stateUpdated: EventEmitter<StateUpdatedEvent<TData>> = new EventEmitter<\n        StateUpdatedEvent<TData>\n    >();\n    /** Triggered every time the paging state changes. Some of the most common scenarios for this event to be triggered are:\n     *\n     *  - The page size changes.\n     *  - The current shown page is changed.\n     *  - New data is loaded onto the grid.\n     */\n    @Output() public paginationChanged: EventEmitter<PaginationChangedEvent<TData>> = new EventEmitter<\n        PaginationChangedEvent<TData>\n    >();\n    /** A drag has started, or dragging was already started and the mouse has re-entered the grid having previously left the grid.\n     */\n    @Output() public rowDragEnter: EventEmitter<RowDragEnterEvent<TData>> = new EventEmitter<\n        RowDragEnterEvent<TData>\n    >();\n    /** The mouse has moved while dragging.\n     */\n    @Output() public rowDragMove: EventEmitter<RowDragMoveEvent<TData>> = new EventEmitter<RowDragMoveEvent<TData>>();\n    /** The mouse has left the grid while dragging.\n     */\n    @Output() public rowDragLeave: EventEmitter<RowDragLeaveEvent<TData>> = new EventEmitter<\n        RowDragLeaveEvent<TData>\n    >();\n    /** The drag has finished over the grid.\n     */\n    @Output() public rowDragEnd: EventEmitter<RowDragEndEvent<TData>> = new EventEmitter<RowDragEndEvent<TData>>();\n    /** The drag has been cancelled over the grid.\n     */\n    @Output() public rowDragCancel: EventEmitter<RowDragCancelEvent<TData>> = new EventEmitter<\n        RowDragCancelEvent<TData>\n    >();\n    /** The row resize has started (Row Numbers Feature)\n     */\n    @Output() public rowResizeStarted: EventEmitter<RowResizeStartedEvent<TData>> = new EventEmitter<\n        RowResizeStartedEvent<TData>\n    >();\n    /** The row resize has ended (Row Numbers Feature)\n     */\n    @Output() public rowResizeEnded: EventEmitter<RowResizeEndedEvent<TData>> = new EventEmitter<\n        RowResizeEndedEvent<TData>\n    >();\n    /** A row group column was added, removed or reordered.\n     */\n    @Output() public columnRowGroupChanged: EventEmitter<ColumnRowGroupChangedEvent<TData>> = new EventEmitter<\n        ColumnRowGroupChangedEvent<TData>\n    >();\n    /** A row group was opened or closed.\n     */\n    @Output() public rowGroupOpened: EventEmitter<RowGroupOpenedEvent<TData>> = new EventEmitter<\n        RowGroupOpenedEvent<TData>\n    >();\n    /** Fired when calling either of the API methods `expandAll()` or `collapseAll()`.\n     */\n    @Output() public expandOrCollapseAll: EventEmitter<ExpandOrCollapseAllEvent<TData>> = new EventEmitter<\n        ExpandOrCollapseAllEvent<TData>\n    >();\n    /** Exceeded the `pivotMaxGeneratedColumns` limit when generating columns.\n     */\n    @Output() public pivotMaxColumnsExceeded: EventEmitter<PivotMaxColumnsExceededEvent<TData>> = new EventEmitter<\n        PivotMaxColumnsExceededEvent<TData>\n    >();\n    /** The client has set new pinned row data into the grid.\n     */\n    @Output() public pinnedRowDataChanged: EventEmitter<PinnedRowDataChangedEvent<TData>> = new EventEmitter<\n        PinnedRowDataChangedEvent<TData>\n    >();\n    /** A row has been pinned to top or bottom, or unpinned.\n     */\n    @Output() public pinnedRowsChanged: EventEmitter<PinnedRowsChangedEvent<TData>> = new EventEmitter<\n        PinnedRowsChangedEvent<TData>\n    >();\n    /** Client-Side Row Model only. The client has updated data for the grid by either a) setting new Row Data or b) Applying a Row Transaction.\n     */\n    @Output() public rowDataUpdated: EventEmitter<RowDataUpdatedEvent<TData>> = new EventEmitter<\n        RowDataUpdatedEvent<TData>\n    >();\n    /** Async transactions have been applied. Contains a list of all transaction results.\n     */\n    @Output() public asyncTransactionsFlushed: EventEmitter<AsyncTransactionsFlushedEvent<TData>> = new EventEmitter<\n        AsyncTransactionsFlushedEvent<TData>\n    >();\n    /** A server side store has finished refreshing.\n     */\n    @Output() public storeRefreshed: EventEmitter<StoreRefreshedEvent<TData>> = new EventEmitter<\n        StoreRefreshedEvent<TData>\n    >();\n    /** Header is focused.\n     */\n    @Output() public headerFocused: EventEmitter<HeaderFocusedEvent<TData>> = new EventEmitter<\n        HeaderFocusedEvent<TData>\n    >();\n    /** Cell is clicked.\n     */\n    @Output() public cellClicked: EventEmitter<CellClickedEvent<TData>> = new EventEmitter<CellClickedEvent<TData>>();\n    /** Cell is double clicked.\n     */\n    @Output() public cellDoubleClicked: EventEmitter<CellDoubleClickedEvent<TData>> = new EventEmitter<\n        CellDoubleClickedEvent<TData>\n    >();\n    /** Cell is focused.\n     */\n    @Output() public cellFocused: EventEmitter<CellFocusedEvent<TData>> = new EventEmitter<CellFocusedEvent<TData>>();\n    /** Mouse entered cell.\n     */\n    @Output() public cellMouseOver: EventEmitter<CellMouseOverEvent<TData>> = new EventEmitter<\n        CellMouseOverEvent<TData>\n    >();\n    /** Mouse left cell.\n     */\n    @Output() public cellMouseOut: EventEmitter<CellMouseOutEvent<TData>> = new EventEmitter<\n        CellMouseOutEvent<TData>\n    >();\n    /** Mouse down on cell.\n     */\n    @Output() public cellMouseDown: EventEmitter<CellMouseDownEvent<TData>> = new EventEmitter<\n        CellMouseDownEvent<TData>\n    >();\n    /** Row is clicked.\n     */\n    @Output() public rowClicked: EventEmitter<RowClickedEvent<TData>> = new EventEmitter<RowClickedEvent<TData>>();\n    /** Row is double clicked.\n     */\n    @Output() public rowDoubleClicked: EventEmitter<RowDoubleClickedEvent<TData>> = new EventEmitter<\n        RowDoubleClickedEvent<TData>\n    >();\n    /** Row is selected or deselected. The event contains the node in question, so call the node's `isSelected()` method to see if it was just selected or deselected.\n     */\n    @Output() public rowSelected: EventEmitter<RowSelectedEvent<TData>> = new EventEmitter<RowSelectedEvent<TData>>();\n    /** Row selection is changed. Use the `selectedNodes` field to get the list of selected nodes at the time of the event. When using the SSRM, `selectedNodes` will be `null`\n     * when selecting all nodes. Instead, refer to the `serverSideState` field.\n     */\n    @Output() public selectionChanged: EventEmitter<SelectionChangedEvent<TData>> = new EventEmitter<\n        SelectionChangedEvent<TData>\n    >();\n    /** Cell is right clicked.\n     */\n    @Output() public cellContextMenu: EventEmitter<CellContextMenuEvent<TData>> = new EventEmitter<\n        CellContextMenuEvent<TData>\n    >();\n    /** A change to range selection has occurred.\n     *\n     * @deprecated v32.2 Use `onCellSelectionChanged` instead\n     */\n    @Output() public rangeSelectionChanged: EventEmitter<RangeSelectionChangedEvent<TData>> = new EventEmitter<\n        RangeSelectionChangedEvent<TData>\n    >();\n    /** A change to cell selection has occurred.\n     */\n    @Output() public cellSelectionChanged: EventEmitter<CellSelectionChangedEvent<TData>> = new EventEmitter<\n        CellSelectionChangedEvent<TData>\n    >();\n    /** A tooltip has been displayed     */\n    @Output() public tooltipShow: EventEmitter<TooltipShowEvent<TData>> = new EventEmitter<TooltipShowEvent<TData>>();\n    /** A tooltip was hidden     */\n    @Output() public tooltipHide: EventEmitter<TooltipHideEvent<TData>> = new EventEmitter<TooltipHideEvent<TData>>();\n    /** Sort has changed. The grid also listens for this and updates the model.\n     */\n    @Output() public sortChanged: EventEmitter<SortChangedEvent<TData>> = new EventEmitter<SortChangedEvent<TData>>();\n\n    // @END@\n}\n\nconst booleanMixedGridOptions = new Set<string>(_BOOLEAN_MIXED_GRID_OPTIONS);\n/**\n * Used to support the user setting combined boolean and string / object properties\n * as plain HTML attributes and us correctly mapping that to true.\n * For example cellSection can be boolean or an object\n */\nfunction getValueOrCoercedValue(key: string, valueToUse: any): any {\n    if (booleanMixedGridOptions.has(key)) {\n        // Handle plain HTML boolean attributes and convert them to boolean values\n        // Also handle the false string case to match Angular boolean attributes\n        return valueToUse === '' ? true : valueToUse === 'false' ? false : valueToUse;\n    }\n    return valueToUse;\n}\n","import { NgModule } from '@angular/core';\n\nimport { AgGridAngular } from './ag-grid-angular.component';\n\n@NgModule({\n    imports: [AgGridAngular],\n    exports: [AgGridAngular],\n})\nexport class AgGridModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AngularFrameworkOverrides","i2.AngularFrameworkComponentWrapper"],"mappings":"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"}