← Files Biological Sequence & Alignment ViewerARCHIVED FILE

src/sequence/virtualization.ts

752 Bytes · Sep 30, 2026 · 23:01 UTC

↓ Download file

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