Skip to content

Commit e4f766b

Browse files
refactor: Extract getOffsetForIndexEager logic
Co-authored-by: aider (vertex_ai/gemini-2.5-pro) <aider@aider.chat>
1 parent f8f6f9d commit e4f766b

1 file changed

Lines changed: 18 additions & 5 deletions

File tree

src/Reader.tsx

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {
2+
Virtualizer,
23
VirtualizerOptions,
34
elementScroll,
45
useVirtualizer,
@@ -29,6 +30,18 @@ const determineScale = (parentElement: HTMLElement, width: number): number => {
2930
return scaleWidth;
3031
};
3132

33+
const getOffsetForIndexEager = (
34+
index: number,
35+
virtualizer: Virtualizer<any, any>,
36+
estimateSize: (i: number) => number,
37+
) => {
38+
let offset = virtualizer.options.paddingStart;
39+
for (let i = 0; i < index; i++) {
40+
offset += estimateSize(i) + virtualizer.options.gap;
41+
}
42+
return offset;
43+
};
44+
3245
export interface ZoomState {
3346
currentScale: number | null;
3447
nextScale: number | null;
@@ -313,11 +326,11 @@ const Reader = ({
313326
// scrollAnchor.index,
314327
// "start",
315328
// )?.[0];
316-
let offset = virtualizer.options.paddingStart;
317-
for (let i = 0; i < scrollAnchor.index; i++) {
318-
offset += estimateSize(i) + virtualizer.options.gap;
319-
}
320-
const startOffset = offset;
329+
const startOffset = getOffsetForIndexEager(
330+
scrollAnchor.index,
331+
virtualizer,
332+
estimateSize,
333+
);
321334

322335
console.log({ ...scrollAnchor });
323336
if (startOffset != null) {

0 commit comments

Comments
 (0)