ultisuite-client/lib/drive/docs-ruler-sync-math.ts
R3D347HR4Y 2a7c153748
Some checks are pending
E2E / Playwright e2e (push) Waiting to run
wrap page
2026-06-10 12:48:27 +02:00

33 lines
1.1 KiB
TypeScript

/** Page containing the vertical center of the canvas viewport (0-based). */
export function resolveCurrentPageInViewport(
stackTopInViewport: number,
viewportHeight: number,
pageStride: number,
pageCount: number
): number {
if (pageCount <= 1 || pageStride <= 0 || viewportHeight <= 0) return 0
const centerInStack = viewportHeight / 2 - stackTopInViewport
const index = Math.floor(centerInStack / pageStride)
return Math.min(pageCount - 1, Math.max(0, index))
}
/** @deprecated Use resolveCurrentPageInViewport — kept for tests comparing old behaviour. */
export function resolveCurrentPageAtViewportTop(
stackTopInViewport: number,
pageStride: number,
pageCount: number
): number {
if (pageCount <= 1 || pageStride <= 0) return 0
if (stackTopInViewport >= 0) return 0
const index = Math.floor(-stackTopInViewport / pageStride)
return Math.min(pageCount - 1, Math.max(0, index))
}
export function computePageTopInViewport(
stackTopInViewport: number,
currentPage: number,
pageStride: number
): number {
return stackTopInViewport + currentPage * pageStride
}