import type { IAgEventEmitter } from 'ag-stack'; import type { ColumnState } from '../columns/columnStateUtils'; import { BeanStub } from '../context/beanStub'; import type { BeanCollection } from '../context/context'; import type { ColumnEvent, ColumnEventType } from '../events'; import type { GridOptionsService } from '../gridOptionsService'; import type { Column, ColumnEventName, ColumnGroup, ColumnGroupShowType, ColumnHighlightPosition, ColumnInstanceId, ColumnPinnedType, HeaderColumnId, ProvidedColumnGroup } from '../interfaces/iColumn'; import type { IRowNode } from '../interfaces/iRowNode'; import type { SortDef, SortDirection, SortType } from '../interfaces/iSort'; import type { AgColumnGroup } from './agColumnGroup'; import type { AgProvidedColumnGroup } from './agProvidedColumnGroup'; import type { AbstractColDef, ColAggFunc, ColDef, ColDefField, ColSpanFunc, ColumnFunctionCallbackParams, HeaderLocation, RefData, RowSpanFunc, ValueFormatterFunc, ValueGetterFunc } from './colDef'; import type { AgShowValuesAsResolved, ShowValuesAsDefResolved, ShowValuesAsResolved, ShowValuesAsResult } from './colDef-showValuesAs'; export declare function getNextColInstanceId(): ColumnInstanceId; export declare const isColumn: (col: Column | ColumnGroup | ProvidedColumnGroup) => col is AgColumn; /** * Redirects a pivot result column to its underlying value column for non-group, non-pinned (leaf) rows, * so value get/set reads the real source value. Pinned rows are excluded — their data is keyed by pivot * column ID. Only the deliberate consumers (pivot edit, API reads, pivot aggregation) need this; the hot * read path (`getValueFromData`) does not. * @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export declare const _resolvePivotColumnForRow: (column: AgColumn, rowNode: IRowNode) => AgColumn; /** Origin of an `AgColumn`. `user` = application-supplied ColDef; others = grid-generated. * @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export type ColKind = 'user' | 'auto-group' | 'selection' | 'row-number' | 'hierarchy'; /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export declare class AgColumn extends BeanStub implements Column, IAgEventEmitter { colDef: ColDef; userProvidedColDef: ColDef | null; readonly colId: string; readonly primary: boolean; readonly colKind: ColKind; readonly isColumn: true; readonly instanceId: ColumnInstanceId; /** Sanitised version of the column id */ readonly colIdSanitised: string; aggFunc: ColAggFunc; isCalculatedCol: boolean; field: ColDefField | undefined; /** Cached split of a dotted `field` (`field.split('.')`); `null` when not dotted / dot-notation suppressed. * Non-null doubles as the "field contains dots" indicator. Read per cell via `_getValueUsingDotPath`. */ fieldPath: string[] | null; valueGetter: string | ValueGetterFunc | undefined; allowFormula: boolean; showRowGroup: string | boolean | undefined; pivotValueColumn: AgColumn | null | undefined; valueFormatter: string | ValueFormatterFunc | undefined; refData: RefData | undefined; enableCellChangeFlash: boolean | undefined; /** Read per cell when the colSpan/rowSpan feature is used (`getColSpan`/`getRowSpan`). */ colSpan: ColSpanFunc | undefined; rowSpan: RowSpanFunc | undefined; /** Read per cell on calculated columns (`formulaService.ensureCellFormula`/`fetchRawValue`). */ calculatedExpression: string | undefined; /** Current rendered width in px. Writes must go through `setActualWidth` for min/max clamping and the `widthChanged` event. */ actualWidth: number; minWidth: number; private maxWidth; flex: number | null; pinned: ColumnPinnedType; left: number | null; oldLeft: number | null; /** User intent: should this column be shown if display rules allow it. */ visible: boolean; /** Whether this column is in the displayed (rendered) columns — kept in lockstep with `allColsIndex >= 0` */ displayed: boolean; filterActive: boolean; sortDef: SortDef; sortIndex: number | null | undefined; autoHeaderHeight: number | null; tooltipEnabled: boolean; tooltipFieldContainsDots: boolean; private frameworkEventListenerService; private colEventSvc; /** Most recent build token that claimed this col — used to detect "already used in this refresh". */ buildToken: number; /** 0-based index in `VisibleColsService.allCols` (displayed, visual order — RTL reversed), stamped each refresh. `-1` = not displayed. */ allColsIndex: number; /** `true` while in `ColumnModel.colsList` (live cols, hidden included); `false` when only in * `colsById` — a pivot **primary** parked while a pivot result shows. Set by `refreshCols`. */ inColsList: boolean; /** 1-based `aria-colindex`: position in `colsList` reordered `[left, center, right]` (hidden included). `0` = not in `colsList`. */ ariaColIndex: number; /** 0-based index in `ColumnModel.colsList` (stamped lazily by `ensureColsListIndex` for O(1) ordered reads); * `-1` until first stamped / when not in colsList. In pivot, parked primaries keep their pre-pivot index. */ colsListIndex: number; moving: boolean; resizing: boolean; menuVisible: boolean; highlighted: ColumnHighlightPosition | null; formulaRef: string | null; /** The column's "Show Values As" config resolved once on colDef change (built-in modes merged with user config). * Tri-state: the config object when configured, `null` when explicitly disabled (`colDef.showValuesAsDef: null`), * `undefined` when unconfigured. The active mode is a lookup into it. */ showValuesAsDef: ShowValuesAsDefResolved | null | undefined; /** Resolved active "Show Values As" mode for this column (precomputed by the enterprise service), or `null` * when none. `showValuesAs.type` is the active mode; the active mode is owned by column state. */ showValuesAs: AgShowValuesAsResolved | null; /** colId this column sits immediately after in display order. Order restoration seats new cols after * this anchor — handles anchors absent from the tree (e.g. auto-group col) and stacks same-anchor adds * newest-first. `undefined` = not anchored. Column-kind agnostic (currently set by the calc-column contributor). */ anchoredToColId: string | undefined; private lastLeftPinned; private firstRightPinned; rowGroupActive: boolean; /** Position in `rowGroupColsSvc.columns` when {@link rowGroupActive}; else stale — always pair the read with a `rowGroupActive` check. */ rowGroupActiveIndex: number; pivotActive: boolean; /** Position in `pivotColsSvc.columns` when {@link pivotActive}; else stale — always pair the read with a `pivotActive` check. */ pivotActiveIndex: number; aggregationActive: boolean; /** Position in `valueColsSvc.columns` when {@link aggregationActive}; else stale — always pair the read with an `aggregationActive` check. */ aggregationActiveIndex: number; /** The display group col that shows this (source) column; set by `showRowGroupCols` on refresh */ showRowGroupCol: AgColumn | null; parent: AgColumnGroup | null; originalParent: AgProvidedColumnGroup | null; /** Public so the free `getAvailableSortTypes` sort helper can cache on the column; nulled in {@link setColDef}. */ cachedSortTypes: Set | null; constructor(colDef: ColDef, userProvidedColDef: ColDef | null, colId: string, primary: boolean, colKind: ColKind); destroy(): void; getInstanceId(): ColumnInstanceId; private initState; /** Called when user provides an alternative colDef. Returns whether the merged colDef differed (false = nothing changed). */ setColDef(colDef: ColDef, userProvidedColDef: ColDef | null, source: ColumnEventType): boolean; /** Re-apply `def` to a reused column. Stateful attrs are only (re)applied when the user authored the * definitions (`newColDefs`); an internal rebuild (e.g. calc-col add) must leave live state intact. */ reapplyColDef(def: ColDef, source: ColumnEventType, newColDefs: boolean): void; getUserProvidedColDef(): ColDef | null; getParent(): AgColumnGroup | null; getOriginalParent(): AgProvidedColumnGroup | null; postConstruct(): void; private initDotNotation; private initMinAndMaxWidths; private initTooltip; resetActualWidth(source: ColumnEventType): void; private calculateColInitialWidth; isEmptyGroup(): false; isRowGroupDisplayed(colId: string): boolean; isPrimary(): boolean; isFilterAllowed(): boolean; isFieldContainsDots(): boolean; isTooltipEnabled(): boolean; isTooltipFieldContainsDots(): boolean; getHighlighted(): ColumnHighlightPosition | null; private getColEventSvc; __addEventListener(eventType: T, listener: (params: ColumnEvent) => void): void; __removeEventListener(eventType: T, listener: (params: ColumnEvent) => void): void; /** * PUBLIC USE ONLY: for internal use within AG Grid use the `__addEventListener` and `__removeEventListener` methods. */ addEventListener(eventType: T, userListener: (params: ColumnEvent) => void): void; /** * PUBLIC USE ONLY: for internal use within AG Grid use the `__addEventListener` and `__removeEventListener` methods. */ removeEventListener(eventType: T, userListener: (params: ColumnEvent) => void): void; createColumnFunctionCallbackParams(rowNode: IRowNode): ColumnFunctionCallbackParams; isSuppressNavigable(rowNode: IRowNode): boolean; isCellEditable(rowNode: IRowNode): boolean; isSuppressFillHandle(): boolean; isAutoHeight(): boolean; isAutoHeaderHeight(): boolean; isRowDrag(rowNode: IRowNode): boolean; isDndSource(rowNode: IRowNode): boolean; isCellCheckboxSelection(rowNode: IRowNode): boolean; isSuppressPaste(rowNode: IRowNode): boolean; /** Mirror the hot-path colDef fields onto the column so per-cell reads avoid a megamorphic colDef load. * `field`/`fieldPath` are set by {@link initDotNotation} (they depend on `suppressFieldDotNotation`). */ private initColDefHotFields; private initCalculatedColumnState; isResizable(): boolean; isColumnFunc(rowNode: IRowNode, value?: boolean | ((params: ColumnFunctionCallbackParams) => boolean) | null): boolean; isMoving(): boolean; getSort(): SortDirection; /** Returns null if no sort direction applied */ getSortDef(): SortDef | null; setSortDef(sortDef: SortDef): void; isSortable(): boolean; /** @deprecated v32 use col.getSort() === 'asc */ isSortAscending(): boolean; /** @deprecated v32 use col.getSort() === 'desc */ isSortDescending(): boolean; /** @deprecated v32 use col.getSort() === undefined */ isSortNone(): boolean; /** @deprecated v32 use col.getSort() !== undefined */ isSorting(): boolean; getSortIndex(): number | null | undefined; isMenuVisible(): boolean; getAggFunc(): ColAggFunc; getShowValuesAs(): ShowValuesAsResolved | null; getShowValuesAsDef(): ShowValuesAsDefResolved | null; getLeft(): number | null; getOldLeft(): number | null; getRight(): number; setLeft(left: number | null, source: ColumnEventType): void; isFilterActive(): boolean; /** @deprecated v33 Use `api.isColumnHovered(column)` instead. */ isHovered(): boolean; setFirstRightPinned(firstRightPinned: boolean, source: ColumnEventType): void; setLastLeftPinned(lastLeftPinned: boolean, source: ColumnEventType): void; isFirstRightPinned(): boolean; isLastLeftPinned(): boolean; isPinned(): boolean; isPinnedLeft(): boolean; isPinnedRight(): boolean; getPinned(): ColumnPinnedType; setVisible(visible: boolean, source: ColumnEventType): void; isVisible(): boolean; isSpanHeaderHeight(): boolean; /** Returns the first parent that is not a padding group. */ getFirstRealParent(): AgProvidedColumnGroup | null; getColumnGroupPaddingInfo(): { numberOfParents: number; isSpanningTotal: boolean; }; getColDef(): ColDef; getDefinition(): AbstractColDef; getColumnGroupShow(): ColumnGroupShowType | undefined; getColId(): string; getDisplayName(location?: HeaderLocation): string; getId(): string; getUniqueId(): HeaderColumnId; getActualWidth(): number; getAutoHeaderHeight(): number | null; /** Returns true if the header height has changed */ setAutoHeaderHeight(height: number): boolean; getColSpan(rowNode: IRowNode): number; getRowSpan(rowNode: IRowNode): number; setActualWidth(actualWidth: number, source: ColumnEventType, silent?: boolean): void; fireColumnWidthChangedEvent(source: ColumnEventType): void; isGreaterThanMax(width: number): boolean; getMinWidth(): number; getMaxWidth(): number; getFlex(): number | null; isRowGroupActive(): boolean; isPivotActive(): boolean; isAnyFunctionActive(): boolean; isAnyFunctionAllowed(): boolean; isValueActive(): boolean; isAllowPivot(): boolean; isAllowValue(): boolean; isAllowRowGroup(): boolean; isAllowFormula(): boolean; dispatchColEvent(type: ColumnEventName, source: ColumnEventType, additionalEventAttributes?: any): void; dispatchStateUpdatedEvent(key: keyof ColumnState): void; } /** Convert input into a SortDef: a valid SortDef passes through, otherwise direction and type are normalised. */ export declare const getSortDefFromInput: (input?: unknown) => SortDef; export declare const getSortingOrder: (gos: GridOptionsService, column: AgColumn) => SortDef[]; export declare const isSortDirectionValid: (maybeSortDir: unknown) => maybeSortDir is SortDirection; export declare const isSortTypeValid: (maybeSortType: unknown) => maybeSortType is SortType; export declare const _isSortDefValid: (maybeSortDef: unknown) => maybeSortDef is SortDef; export declare const normalizeSortDirection: (sortDirectionLike?: unknown) => SortDirection; /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export declare const _normalizeSortType: (sortTypeLike?: unknown) => SortType; type SortDefOverride = () => SortDef | null | undefined; /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export declare const _getDisplaySortForColumn: (column: AgColumn, beans: BeanCollection, override?: SortDefOverride) => { isDefaultSortAllowed: boolean; isAbsoluteSortAllowed: boolean; isAbsoluteSort: boolean; isDefaultSort: boolean; isAscending: boolean; isDescending: boolean; direction: SortDirection; }; export {};