import { LineRange, VisibleLineWindow } from './pretext'; import { LayoutMode } from './renderer'; export type ReflowablePageFitMode = 'auto' | 'paper' | 'viewport'; export interface ReflowableColumnLayout { margin: number; gap: number; columnWidth: number; columns: number; pageHeight: number; pageFrameHeight?: number; pageFrameTop?: number; columnHeight: number; pagePaddingInline: number; pagePaddingInlineStart?: number; pagePaddingInlineEnd?: number; pagePaddingBlock: number; pagePaddingBlockStart?: number; pagePaddingBlockEnd?: number; pageFit?: Exclude; totalHeight: number; pageCount: number; } export interface ReflowablePageGeometryOptions { readonly layoutMode: LayoutMode; readonly maxColumnCount: number; readonly availableInlineSize: number; readonly availableBlockSize: number; readonly gap: number; readonly minColumnWidth: number; readonly maxColumnWidth: number; readonly pagePaddingInline: number; readonly pagePaddingBlock: number; readonly pageFit?: ReflowablePageFitMode; readonly usePaperPadding?: boolean; } export interface ReflowablePageGeometry { readonly columns: number; readonly columnWidth: number; readonly inlineSize: number; readonly pageHeight: number; readonly pageFrameHeight: number; readonly pageFrameTop: number; readonly pagePaddingInline: number; readonly pagePaddingInlineStart: number; readonly pagePaddingInlineEnd: number; readonly pagePaddingBlock: number; readonly pagePaddingBlockStart: number; readonly pagePaddingBlockEnd: number; readonly pageFit: Exclude; } export interface ReflowableViewportMetrics { readonly scrollTop: number; readonly scrollHeight: number; readonly clientHeight: number; } export interface ReflowableSourceViewport { readonly sourceScrollTop: number; readonly sourceViewportHeight: number; } export declare function resolveReflowablePageGeometry(options: ReflowablePageGeometryOptions): ReflowablePageGeometry; export declare function getReflowableColumnInlinePadding(layout: ReflowableColumnLayout, columnIndex: number): { start: number; end: number; }; export declare function getReflowableColumnIndexForLeft(layout: ReflowableColumnLayout, left: number): number; export declare function getReflowableBlockPaddingStart(layout: ReflowableColumnLayout): number; export declare function getReflowableBlockPaddingEnd(layout: ReflowableColumnLayout): number; export declare function getRenderedReflowableLinePosition(line: LineRange, layout: ReflowableColumnLayout, layoutMode: LayoutMode): { top: number; left: number; }; export declare function getReflowableSourceViewport(layoutMode: LayoutMode, layout: ReflowableColumnLayout, metrics: ReflowableViewportMetrics, pageIndex: number): ReflowableSourceViewport; export declare function getReflowableSourceScrollTop(layoutMode: LayoutMode, layout: ReflowableColumnLayout, metrics: ReflowableViewportMetrics, pageIndex: number): number; export declare function getReflowableSourceViewportHeight(layoutMode: LayoutMode, layout: ReflowableColumnLayout, metrics: ReflowableViewportMetrics): number; export declare function getReflowableSectionFraction(layoutMode: LayoutMode, layout: ReflowableColumnLayout, metrics: ReflowableViewportMetrics, pageIndex: number): number; export declare function getReflowableScrollTopForSourceTop(sourceTop: number, layoutMode: LayoutMode, layout: ReflowableColumnLayout): number; export declare function getReflowableScrollTopForFraction(layoutMode: LayoutMode, layout: ReflowableColumnLayout, metrics: ReflowableViewportMetrics, fraction: number): number; export declare function getReflowablePageIndexForScrollTop(layout: ReflowableColumnLayout, scrollTop: number): number; export declare function getReflowablePageScrollTop(layout: ReflowableColumnLayout, pageIndex: number): number; export declare function clampReflowablePageIndex(pageIndex: number, layout: ReflowableColumnLayout): number; export declare function findReadableReflowablePage(lines: readonly LineRange[], layoutMode: LayoutMode, layout: ReflowableColumnLayout, pageIndex: number, direction: -1 | 0 | 1): number | null; export declare function hasReadableLinesOnReflowablePage(lines: readonly LineRange[], layout: ReflowableColumnLayout, pageIndex: number): boolean; export declare function getReflowableSourceHeightForPages(layoutMode: LayoutMode, layout: ReflowableColumnLayout, metrics: ReflowableViewportMetrics, pageCount: number): number; export declare function getReflowableVisibleLineWindow(lines: readonly LineRange[], layoutMode: LayoutMode, layout: ReflowableColumnLayout, metrics: ReflowableViewportMetrics, pageIndex: number, overscan?: number): VisibleLineWindow; //# sourceMappingURL=reflowable-page-model.d.ts.map