import * as _angular_core from '@angular/core'; import { VirtualItem } from 'forty-cdk/virtualization'; /** * Opt-in row-virtualization companion for `[forTable]` in `
` grid mode. Place it on the * same element as `[forTable]`; it builds the windowing core from the table's `[rowCount]` and * exposes the visible window for the consumer to render with their own `@for` + position transform. * * Tree-shakeable: `ForTable` never imports the virtualization core — only consumers that import * `ForTableVirtualized` bundle `@tanstack/virtual-core`. * * The focused row is kept mounted even when scrolled out of the window so the roving-focused * `gridcell` is never unmounted. SSR-safe: off-browser the window is empty and * `totalSize` is the estimate-based total. * * Also drives cross-window keyboard navigation: when an Arrow / Page / Ctrl+Home / Ctrl+End grid * action resolves a row outside the rendered window, it scrolls that row into view and moves roving * focus onto the target cell once it mounts (preserving the current column). `ForTable` stays * unaware of virtualization — it delegates the row-crossing move through the table context. */ declare class ForTableVirtualized { #private; /** Estimated row size in px along the scroll axis (the fixed-size fast path). Read for the size estimate. */ readonly estimateRowSize: _angular_core.InputSignalWithTransform; /** * Scroll container. Defaults to the table root element (the scroll container in `
` grid * mode). Bind it explicitly when the scroll container is an **ancestor** of the table — e.g. an * app-shell viewport that scrolls projected content — since the table cannot inject an ancestor * it does not own. A design-system wrapper can re-expose or rename this input through * `hostDirectives` input aliasing (`inputs: ['scrollElement: scrollContainer']`) with no bridging * effect required. */ readonly scrollElement: _angular_core.InputSignal; constructor(); /** * The rows in the visible window plus overscan, augmented to always include the focused row and * the row being reordered even when they are scrolled out of view (so the roving-focused cell * stays mounted, and a pointer reorder drag never unmounts the lifted row). Render these with * `@for (vrow of v.virtualRows(); track vrow.index)` and position each row absolutely with * `transform: translateY(vrow.start + 'px')`. Bind each row's `[virtualIndex]="vrow.index"`. */ readonly virtualRows: _angular_core.Signal; /** Total scroll size of all rows in px. Bind to the body container's height to size the scroll range. */ readonly totalSize: _angular_core.Signal; /** * The rendered window as the inclusive-exclusive `[firstIndex, lastIndex + 1)` index range, * sourced from the underlying virtualizer (the true window) — not from {@link virtualRows}, * which is augmented with the focused / reordering rows. So a row retained out of the window * never widens this range. Plugs straight into `injectInfiniteScroll({ range, count, onLoadMore })`. */ readonly range: _angular_core.Signal; /** * Scroll the container so the row at `index` is in view. Cross-window keyboard * navigation calls this internally; consumers may also call it to scroll * programmatically. */ scrollToRow(index: number, options?: { align?: 'start' | 'center' | 'end' | 'auto'; }): void; /** * Record the measured size of a rendered row element (dynamic / measured row heights). * Passing `null` sweeps evicted rows recycled out of the window from the measurement cache. */ measureRow(element: HTMLElement | null): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } export { ForTableVirtualized };