import type { ColumnDef } from '../types/column.types'; import { HeaderIconDisplay } from '../types/column.types'; import type { GridStore } from '../core/grid-store'; import type { EventBus } from '../event-bus/event-bus'; import type { IconRenderer } from '../icons/icon-renderer'; import type { ColumnModel } from '../core/column-model'; import type { SortEngine } from '../engines/sort/sort-engine'; import type { GroupDropZone } from './group-drop-zone'; import type { ColumnGroupModel } from '../column-groups/column-group-model'; import type { ColumnGroupHeaderBuilder } from '../column-groups/column-group-header-builder'; import type { ColumnGroupDragHandler } from '../column-groups/column-group-drag-handler'; import type { DisplayGroupEngine } from '../column-groups/display-group-engine'; import { ColumnStyleManager } from './column-style-manager'; export interface HeaderRendererOptions { showCheckboxes?: boolean; showSerialNumber?: boolean; showFilterRow?: boolean; showColumnMenu?: boolean; headerRowHeight?: number; filterRowHeight?: number; hasGroupedColumns?: boolean; autoGroupColWidth?: number; /** Grid-wide default display mode for the filter funnel icon. @default HeaderIconDisplay.ALWAYS */ filterIconDisplay?: HeaderIconDisplay; /** Grid-wide default display mode for the column-menu "⋯" icon. @default HeaderIconDisplay.ALWAYS */ menuIconDisplay?: HeaderIconDisplay; } export declare class HeaderRenderer { private store; private eventBus; private iconRenderer; private columnModel; private sortEngine; private colStyles; private leftHeaderRowEl; private centerHeaderRowEl; private rightHeaderRowEl; private leftFilterRowEl; private centerFilterRowEl; private rightFilterRowEl; private headerCheckbox; private columnMenu; private groupContextMenu; private groupDropZone; /** Tree model for the column group hierarchy. `null` until wired via `setColumnGroupModel`. */ private groupModel; /** DOM builder for multi-row grouped header rows. `null` until wired. */ private groupHeaderBuilder; /** Group header row elements per panel — indexed 0..maxDepth-1. */ private leftGroupRowEls; private centerGroupRowEls; private rightGroupRowEls; /** * Callback invoked when the user clicks a group collapse/expand toggle. * Provided by `GridRenderer` so it can coordinate header + body rebuild. */ private onGroupToggleFn; /** * Callback invoked when the user finishes dragging a group resize handle. * `GridRenderer` wires this to distribute the delta and trigger reflow. */ private onGroupResizeFn; /** * Wired by `GridRenderer` after group model setup — used in `onGlobalMouseUp` * to create a clone group when a leaf is dropped onto a different group header. */ private groupDragHandler; /** * Display Group Engine — the new architecture that replaces ColumnGroupModel. * When set, `renderInPanels` uses this engine instead of the legacy model. */ private displayGroupEngine; /** * Cached header row height from the last `renderInPanels` / `updateCenterVisibleCols` * call. Used by `rebuildGroupRowsForPanel` which is called during drag when * `HeaderRendererOptions` is not available on the call stack. */ private lastGroupRowHeight; private draggingColId; private isDragging; private draggingPanelRowEl; private draggingIsGroupable; private isOverGroupZone; /** * Positions the drag chip with a compositor-only transform. * * Replaces the previous `style.left` / `style.top` writes, which dirtied layout * on every pointer event and — because the handler then read the grid's rect * back — forced a synchronous layout flush each time. */ private readonly dragGhost; /** * Owns the `