← Files Biological Sequence & Alignment ViewerARCHIVED FILE
src/sequence/virtualization.ts
752 Bytes · Sep 30, 2026 · 23:01 UTC
export type SequenceViewportWindow = {
end: number;
start: number;
};
export { getVisibleSequenceLineWindow } from "./sequence-line-layout";
export function getVisibleSequenceWindow({
cellWidth,
overscanColumns = 12,
scrollLeft,
sequenceLength,
viewportWidth,
}: {
cellWidth: number;
overscanColumns?: number;
scrollLeft: number;
sequenceLength: number;
viewportWidth: number;
}): SequenceViewportWindow {
const firstVisible = Math.floor(scrollLeft / cellWidth);
const visibleColumnCount = Math.max(1, Math.ceil(viewportWidth / cellWidth));
return {
end: Math.min(
sequenceLength,
firstVisible + visibleColumnCount + overscanColumns,
),
start: Math.max(0, firstVisible - overscanColumns),
};
}
SHA-256: 9e54460404cc00dd995c7579d8af8bd1d09eb37e7da52599f93f42892d83be8d