DuyTa's picture
Upload folder using huggingface_hub
bc20498 verified
export function getPageItems({ page = 1, totalPages, siblingCount = 1, }) {
const pageItems = [];
const pagesToShow = new Set([1, totalPages]);
const firstItemWithSiblings = 3 + siblingCount;
const lastItemWithSiblings = totalPages - 2 - siblingCount;
if (firstItemWithSiblings > lastItemWithSiblings) {
for (let p = 2; p <= totalPages - 1; p++) {
pagesToShow.add(p);
}
}
else if (page < firstItemWithSiblings) {
for (let p = 2; p <= Math.min(firstItemWithSiblings, totalPages); p++) {
pagesToShow.add(p);
}
}
else if (page > lastItemWithSiblings) {
for (let p = totalPages - 1; p >= Math.max(lastItemWithSiblings, 2); p--) {
pagesToShow.add(p);
}
}
else {
for (let p = Math.max(page - siblingCount, 2); p <= Math.min(page + siblingCount, totalPages); p++) {
pagesToShow.add(p);
}
}
const addPage = (value) => {
pageItems.push({ type: 'page', value, key: `page-${value}` });
};
const addEllipsis = () => {
pageItems.push({ type: 'ellipsis', key: `ellipsis-${pageItems.length}` });
};
let lastNumber = 0;
for (const page of Array.from(pagesToShow).sort((a, b) => a - b)) {
if (page - lastNumber > 1) {
addEllipsis();
}
addPage(page);
lastNumber = page;
}
return pageItems;
}