import { Table } from '@uwdata/flechette'; import { ViewportState } from './useScrollViewport'; export interface UseVisibleNodesParams { table: Table; viewport: ViewportState; total: bigint; width: number; selectedRow: number; effectiveDepth: number; } /** * useVisibleNodes returns row indices visible in the current viewport through multi-stage culling. * Combines depth buckets, horizontal bounds checking, and size filtering to * minimize rendered nodes from potentially 100K+ rows to ~hundreds. * * We use depth buckets to only iterate through the rows that are visible in the viewport vertically. * After that we use horizontal bounds checking to only iterate through the rows that are visible in the viewport horizontally. * Finally we use size filtering to only iterate through the rows that are visible in the viewport by size. * * Critical for maintaining 60fps performance on large flamegraphs where * rendering all nodes would freeze the browser. */ export declare const useVisibleNodes: ({ table, viewport, total, width, selectedRow, effectiveDepth, }: UseVisibleNodesParams) => number[]; //# sourceMappingURL=useVisibleNodes.d.ts.map