Skip to content

Commit d694315

Browse files
committed
remove lastIndex from return, update tests
lastIndex is actually _exclusive_, which would require math, and I don't feel like it's likely to be as useful as firstIndex
1 parent 270c238 commit d694315

File tree

2 files changed

+11
-24
lines changed

2 files changed

+11
-24
lines changed

packages/virtual/src/index.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ type VirtualListReturn<T extends readonly any[]> = [
1616
viewerTop: number;
1717
visibleItems: T;
1818
firstIndex: number;
19-
lastIndex: number;
2019
}>,
2120
onScroll: (e: Event) => void,
2221
];
@@ -51,13 +50,12 @@ export function createVirtualList<T extends readonly any[]>({
5150
Math.floor(offset() / rowHeight) + Math.ceil(rootHeight / rowHeight) + overscanCount,
5251
);
5352

54-
return ({
53+
return {
5554
containerHeight: items.length * rowHeight,
5655
viewerTop: firstIndex * rowHeight,
5756
visibleItems: items.slice(firstIndex, lastIndex) as unknown as T,
5857
firstIndex,
59-
lastIndex
60-
})
58+
};
6159
},
6260
e => {
6361
// @ts-expect-error

packages/virtual/test/index.test.tsx

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -61,17 +61,6 @@ describe("createVirtualList", () => {
6161
expect(virtual().firstIndex).toEqual(0);
6262
});
6363

64-
test("returns lastIndex representing the index of the visibleList", () => {
65-
const [virtual] = createVirtualList({
66-
items: TEST_LIST,
67-
rootHeight: 20,
68-
rowHeight: 10,
69-
});
70-
71-
expect(virtual().lastIndex).toEqual(2);
72-
});
73-
74-
7564
test("returns onScroll which sets viewerTop and visibleItems based on rootElement's scrolltop", () => {
7665
const el = document.createElement("div");
7766

@@ -84,46 +73,47 @@ describe("createVirtualList", () => {
8473
expect(virtual().visibleItems).toEqual([0, 1, 2]);
8574
expect(virtual().viewerTop).toEqual(0);
8675
expect(virtual().firstIndex).toEqual(0);
87-
expect(virtual().lastIndex).toEqual(2);
8876

8977
el.scrollTop += 10;
9078

9179
// no change until onScroll is called
9280
expect(virtual().visibleItems).toEqual([0, 1, 2]);
9381
expect(virtual().viewerTop).toEqual(0);
9482
expect(virtual().firstIndex).toEqual(0);
95-
expect(virtual().lastIndex).toEqual(2);
9683

9784
onScroll(TARGETED_SCROLL_EVENT(el));
9885

9986
expect(virtual().visibleItems).toEqual([0, 1, 2, 3]);
10087
expect(virtual().viewerTop).toEqual(0);
10188
expect(virtual().firstIndex).toEqual(0);
102-
expect(virtual().lastIndex).toEqual(3);
10389

10490
el.scrollTop += 10;
10591
onScroll(TARGETED_SCROLL_EVENT(el));
10692

10793
expect(virtual().visibleItems).toEqual([1, 2, 3, 4]);
10894
expect(virtual().viewerTop).toEqual(10);
10995
expect(virtual().firstIndex).toEqual(1);
110-
expect(virtual().lastIndex).toEqual(4);
11196

11297
el.scrollTop -= 10;
11398
onScroll(TARGETED_SCROLL_EVENT(el));
11499

115100
expect(virtual().visibleItems).toEqual([0, 1, 2, 3]);
116101
expect(virtual().viewerTop).toEqual(0);
117-
expect(virtual().firstIndex).toEqual(1);
118-
expect(virtual().lastIndex).toEqual(3);
102+
expect(virtual().firstIndex).toEqual(0);
119103

120104
el.scrollTop -= 10;
121105
onScroll(TARGETED_SCROLL_EVENT(el));
122106

123107
expect(virtual().visibleItems).toEqual([0, 1, 2]);
124108
expect(virtual().viewerTop).toEqual(0);
125-
expect(virtual().firstIndex).toEqual(1);
126-
expect(virtual().lastIndex).toEqual(2);
109+
expect(virtual().firstIndex).toEqual(0);
110+
111+
el.scrollTop += 7_000;
112+
onScroll(TARGETED_SCROLL_EVENT(el));
113+
114+
expect(virtual().visibleItems).toEqual([699, 700, 701, 702]);
115+
expect(virtual().viewerTop).toEqual(6990);
116+
expect(virtual().firstIndex).toEqual(699);
127117
});
128118

129119
test("onScroll handles reaching the bottom of the list", () => {
@@ -160,7 +150,6 @@ describe("createVirtualList", () => {
160150

161151
expect(virtual().visibleItems).toEqual([8, 9, 10, 11, 12, 13]);
162152
expect(virtual().firstIndex).toEqual(8);
163-
expect(virtual().lastIndex).toEqual(13);
164153
});
165154

166155
test("overscanCount defaults to 1 if undefined or zero", () => {

0 commit comments

Comments
 (0)