UNPKG

infinity-forge

Version:
50 lines 1.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.paginate = paginate; function paginate(_a) { var totalItems = _a.totalItems, _b = _a.currentPage, currentPage = _b === void 0 ? 1 : _b, _c = _a.pageSize, pageSize = _c === void 0 ? 1 : _c, _d = _a.maxPages, maxPages = _d === void 0 ? 1 : _d, hasNextPage = _a.hasNextPage, hasPreviousPage = _a.hasPreviousPage, totalPages = _a.totalPages; var page = currentPage; if (page < 1) { page = 1; } else if (page > totalPages) { page = totalPages; } var startPage; var endPage; if (totalPages <= maxPages) { startPage = 1; endPage = totalPages; } else { var maxPagesBeforeCurrentPage = Math.floor(maxPages / 2); var maxPagesAfterCurrentPage = Math.ceil(maxPages / 2) - 1; if (page <= maxPagesBeforeCurrentPage) { startPage = 1; endPage = maxPages; } else if (page + maxPagesAfterCurrentPage >= totalPages) { startPage = totalPages - maxPages + 1; endPage = totalPages; } else { startPage = page - maxPagesBeforeCurrentPage; endPage = page + maxPagesAfterCurrentPage; } } var startIndex = (page - 1) * pageSize; var endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1); return { page: page, endPage: endPage, pageSize: pageSize, startPage: startPage, startIndex: startIndex, endIndex: endIndex, totalPages: totalPages, totalItems: totalItems, hasNextPage: hasNextPage, hasPreviousPage: hasPreviousPage }; } //# sourceMappingURL=service.js.map