/**----------------------------------------------------------------------------------------- * Copyright © 2026 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the project root for more information *-------------------------------------------------------------------------------------------*/ import { GridItem } from '../../data/grid-item.interface'; import { GroupRange, StickyGroupItem } from './models'; /** * @hidden * Builds a map of group ranges from the flat data array. * Each group header maps to its footer and child range. */ export declare function buildGroupRangeMap(flatDataArray: GridItem[]): Map; /** * @hidden * Selects which group headers should be sticky at the top of the viewport. * A header is sticky when it is scrolled above the viewport but its group * children are still visible below. */ export declare function computeStickyItems(flatDataArray: GridItem[], groupRanges: Map, firstVisibleIndex: number, lastVisibleIndex: number, rawFirstVisibleIndex?: number): StickyGroupItem[]; /** * @hidden * Selects which group footers should be sticky at the bottom of the viewport. * A footer is sticky when it is scrolled below the viewport but its group's * header or first child is still visible above. */ export declare function computeStickyFooterItems(flatDataArray: GridItem[], groupRanges: Map, firstVisibleIndex: number, lastVisibleIndex: number): StickyGroupItem[]; /** * @hidden * Returns true if the displayed groups differ between current and previous arrays. */ export declare function hasStickyItemsChanged(current: StickyGroupItem[], prev: StickyGroupItem[]): boolean; /** * @hidden * Computes push offsets for sticky header overlay rows. * When a group's boundary approaches the sticky slot, the header is pushed upward. */ export declare function computeHeaderPush(indices: number[], getRowHeight: (flatIndex: number) => number, getRowOffset: (flatIndex: number) => number | undefined, scrollTop: number, groupRanges: Map): { totalHeight: number; offsets: number[]; }; /** * @hidden * Computes push offsets for sticky footer overlay rows. * When a group's header approaches the sticky footer slot, the footer is pushed downward. */ export declare function computeFooterPush(indices: number[], getRowHeight: (flatIndex: number) => number, getRowOffset: (flatIndex: number) => number | undefined, scrollTop: number, viewportHeight: number, footerRanges: Map): { totalHeight: number; offsets: number[]; }; /** * @hidden * Applies push transforms to sticky header overlay rows. * Negative push values slide rows up with clipPath. * Iterates each tbody independently so locked and non-locked tables * both receive the same transforms. */ export declare function applyHeaderPushTransforms(containerEl: HTMLElement, pushOffsets: number[]): void; /** * @hidden * Applies push transforms to sticky footer overlay rows. * Positive push values clip from the bottom. The footer container is bottom-anchored, * so reducing its height shifts content down. Non-pushed rows are translated up to compensate. * Iterates each tbody independently so locked and non-locked tables * both receive the same transforms. */ export declare function applyFooterPushTransforms(containerEl: HTMLElement, pushOffsets: number[]): void; /** * @hidden * Resets all push transform styles on rows within a sticky container. */ export declare function resetRowTransforms(containerEl: HTMLElement): void;