import { type Ref } from "vue"; import type { DataGridColumnSnapshot, DataGridRowNode, DataGridViewportRange } from "@affino/datagrid-core"; import type { UseDataGridRuntimeResult } from "../composables/useDataGridRuntime"; import type { DataGridAppMode, DataGridAppRowRenderMode } from "./useDataGridAppControls"; type MaybeRef = T | Ref; export type DataGridAppBodyViewportRuntime = Pick, "virtualWindow" | "syncBodyRowsInRange" | "rowPartition"> & { rowModel?: Pick["rowModel"], "getSparseRowModelDiagnostics">; setViewportRange?: UseDataGridRuntimeResult["setViewportRange"]; setVirtualWindowRange?: UseDataGridRuntimeResult["setVirtualWindowRange"]; getViewportPosition?: UseDataGridRuntimeResult["getViewportPosition"]; setViewportPosition?: UseDataGridRuntimeResult["setViewportPosition"]; scrollToRow?: UseDataGridRuntimeResult["scrollToRow"]; scrollToColumn?: UseDataGridRuntimeResult["scrollToColumn"]; scrollToCell?: UseDataGridRuntimeResult["scrollToCell"]; getBodyRowAtIndex?: (rowIndex: number) => DataGridRowNode | null; resolveBodyRowIndexById?: (rowId: string | number) => number; api?: Pick["api"], "events">; }; export interface UseDataGridAppViewportOptions { runtime: DataGridAppBodyViewportRuntime; mode: MaybeRef; rowRenderMode: MaybeRef; rowVirtualizationEnabled?: MaybeRef; columnVirtualizationEnabled?: MaybeRef; totalRows?: Ref; visibleColumns: Ref; normalizedBaseRowHeight: Ref; columnWidths?: Ref>; resolveColumnWidth?: (column: DataGridColumnSnapshot) => number; defaultColumnWidth?: number; indexColumnWidth?: number; sizingColumns?: Ref; flexFillOffsetWidth?: number; rowOverscan?: MaybeRef; columnOverscan?: MaybeRef; measureVisibleRowHeights?: () => void; resolveRowHeight?: (rowIndex: number) => number; resolveRowOffset?: (rowIndex: number) => number; resolveRowIndexAtOffset?: (offset: number) => number; resolveTotalRowHeight?: () => number; requestAnimationFrame?: (callback: FrameRequestCallback) => number; cancelAnimationFrame?: (handle: number) => void; headerScrollSyncMode?: MaybeRef<"scroll-left" | "external">; } export interface UseDataGridAppViewportResult { headerViewportRef: Ref; bodyViewportRef: Ref; viewportScrollTop: Ref; displayRows: Ref[]>; displayRowsRevision: Ref; pinnedBottomRows: Ref[]>; renderedColumns: Ref; renderedViewportRange: Ref; viewportRowStart: Ref; viewportRowEnd: Ref; viewportColumnStart: Ref; viewportColumnEnd: Ref; topSpacerHeight: Ref; bottomSpacerHeight: Ref; leftColumnSpacerWidth: Ref; rightColumnSpacerWidth: Ref; mainTrackWidth: Ref; gridContentStyle: Ref>; mainTrackStyle: Ref>; indexColumnStyle: Ref>; columnStyle: (key: string) => Record; syncRenderedRowsInRange: (range: DataGridViewportRange) => void; handleViewportScroll: (event: Event) => void; syncViewportFromDom: () => void; scheduleViewportSync: () => void; cancelScheduledViewportSync: () => void; } export declare function useDataGridAppViewport(options: UseDataGridAppViewportOptions): UseDataGridAppViewportResult; export {}; //# sourceMappingURL=useDataGridAppViewport.d.ts.map