Sylvain Filoni
update gradio client
9ada4bc
raw
history blame
891 Bytes
import { useRef } from '../use-ref.mjs';
import { readlineWidth } from '../utils.mjs';
import { lines } from './lines.mjs';
import { finite, infinite } from './position.mjs';
export function usePagination({ items, active, renderItem, pageSize, loop = true, }) {
const state = useRef({ position: 0, lastActive: 0 });
const position = loop
? infinite({
active,
lastActive: state.current.lastActive,
total: items.length,
pageSize,
pointer: state.current.position,
})
: finite({
active,
total: items.length,
pageSize,
});
state.current.position = position;
state.current.lastActive = active;
return lines({
items,
width: readlineWidth(),
renderItem,
active,
position,
pageSize,
}).join('\n');
}