import ColumnDef, { Accessor } from "../../types/ColumnDef"; import { ColumnVisibilityState } from "../../types/ColumnVisibilityTypes"; import { FlattenedHeader } from "../../types/FlattenedHeader"; import { PanelSection } from "../../types/PanelSection"; export type { FlattenedHeader }; /** * Tracks which drop separator is currently highlighted during a column-editor * drag. The `index` is **section-relative** (matches the per-section * `visualIndex`, or `-1` for the separator above the first row), so it must be * paired with the `panelSection` it belongs to. Without the section, the same * index is ambiguous across the pinned-left / main / pinned-right lists and the * divider renders in the wrong section. */ export type HoveredSeparator = { panelSection: PanelSection; index: number; } | null; export declare const findAndMarkParentsVisible: (headers: ColumnDef[], childAccessor: Accessor, visited?: Set) => void; export declare const areAllChildrenHidden: (children: ColumnDef[]) => boolean; export declare const areAllChildrenVisible: (children: ColumnDef[]) => boolean; /** Recursively marks every header in the subtree as visible. */ export declare const showAllDescendants: (children: ColumnDef[]) => void; export declare const updateParentHeaders: (headers: ColumnDef[]) => void; export declare const buildColumnVisibilityState: (headers: ColumnDef[]) => ColumnVisibilityState; /** Find a header node by accessor anywhere in the tree. */ export declare const findHeaderByAccessor: (headers: ColumnDef[], accessor: Accessor) => ColumnDef | null; /** * Tri-state checkbox values for a column-editor row (matches createColumnEditorRow). */ export declare const getColumnEditorCheckboxState: (header: ColumnDef) => { checked: boolean; indeterminate: boolean; }; export declare const findClosestValidSeparatorIndex: ({ flattenedHeaders, draggingRow, hoveredRowIndex, isTopHalfOfRow, }: { flattenedHeaders: FlattenedHeader[]; draggingRow: FlattenedHeader; hoveredRowIndex: number; isTopHalfOfRow: boolean; }) => number | null;