UNPKG

react-native-ultimate-paginator

Version:

A comprehensive pagination library supporting various pagination scenarios including server-side, client-side, infinite scroll, and load-more functionality

41 lines (40 loc) 1.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.calculatePagination = calculatePagination; exports.generatePageNumbers = generatePageNumbers; exports.getPageItems = getPageItems; function calculatePagination(options) { var totalItems = options.totalItems, currentPage = options.currentPage, pageSize = options.pageSize; var totalPages = Math.ceil(totalItems / pageSize); var normalizedCurrentPage = Math.max(1, Math.min(currentPage, totalPages)); var startIndex = (normalizedCurrentPage - 1) * pageSize; var endIndex = Math.min(startIndex + pageSize, totalItems); return { currentPage: normalizedCurrentPage, totalPages: totalPages, pageSize: pageSize, totalItems: totalItems, hasNextPage: normalizedCurrentPage < totalPages, hasPreviousPage: normalizedCurrentPage > 1, startIndex: startIndex, endIndex: endIndex }; } function generatePageNumbers(currentPage, totalPages, maxPages) { if (maxPages === void 0) { maxPages = 5; } var pages = []; var halfMaxPages = Math.floor(maxPages / 2); var startPage = Math.max(currentPage - halfMaxPages, 1); var endPage = Math.min(startPage + maxPages - 1, totalPages); if (endPage - startPage + 1 < maxPages) { startPage = Math.max(endPage - maxPages + 1, 1); } for (var i = startPage; i <= endPage; i++) { pages.push(i); } return pages; } function getPageItems(items, currentPage, pageSize) { var startIndex = (currentPage - 1) * pageSize; return items.slice(startIndex, startIndex + pageSize); }