@indielayer/ui
Version:
Indielayer UI Components with Tailwind CSS build for Vue 3
32 lines (31 loc) • 679 B
JavaScript
function f({
cachedBounds: a,
containerScrollOffset: x,
containerSize: b,
itemCount: d,
overscanCount: I
}) {
const i = d - 1;
let t = 0, n = -1, l = 0, r = -1, e = 0;
for (; e < i; ) {
const s = a.get(e);
if (s.scrollOffset + s.size > x)
break;
e++;
}
for (t = e, l = Math.max(0, t - I); e < i; ) {
const s = a.get(e);
if (s.scrollOffset + s.size >= x + b)
break;
e++;
}
return n = Math.min(i, e), r = Math.min(d - 1, n + I), t < 0 && (t = 0, n = -1, l = 0, r = -1), {
startIndexVisible: t,
stopIndexVisible: n,
startIndexOverscan: l,
stopIndexOverscan: r
};
}
export {
f as getStartStopIndices
};