@ozen-ui/kit
Version:
React component library
46 lines (45 loc) • 2.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createPaginationRange = void 0;
var tslib_1 = require("tslib");
var constants_1 = require("../../constants");
var range_1 = require("../range");
var calculateSiblingIndexes_1 = require("./calculateSiblingIndexes");
var canHaveDotsOrSiblings_1 = require("./canHaveDotsOrSiblings");
var shouldShowDots_1 = require("./shouldShowDots");
var FIRST_PAGE_INDEX = 1;
var createPaginationRange = function (_a) {
var page = _a.page, pageSize = _a.pageSize, totalCount = _a.totalCount, siblingCount = _a.siblingCount;
var totalPageCount = Math.ceil(totalCount / pageSize);
var lastPageIndex = totalPageCount;
var itemsToShow = 3 + 2 * siblingCount;
if (!(0, canHaveDotsOrSiblings_1.canHaveDotsOrSiblings)(siblingCount, totalPageCount)) {
return (0, range_1.range)(FIRST_PAGE_INDEX, lastPageIndex);
}
var _b = (0, calculateSiblingIndexes_1.calculateSiblingIndexes)({ page: page, siblingCount: siblingCount, totalPageCount: totalPageCount }), leftSiblingStartIndex = _b.leftSiblingStartIndex, rightSiblingEndIndex = _b.rightSiblingEndIndex;
var _c = (0, shouldShowDots_1.shouldShowDots)({
leftSiblingStartIndex: leftSiblingStartIndex,
rightSiblingEndIndex: rightSiblingEndIndex,
totalPageCount: totalPageCount,
}), shouldShowLeftDots = _c.shouldShowLeftDots, shouldShowRightDots = _c.shouldShowRightDots;
if (!shouldShowLeftDots && shouldShowRightDots) {
var leftRange = (0, range_1.range)(1, itemsToShow);
return tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(leftRange), false), [constants_1.ELLIPSIS, totalPageCount], false);
}
if (shouldShowLeftDots && !shouldShowRightDots) {
var rightRange = (0, range_1.range)(totalPageCount - itemsToShow + 1, totalPageCount);
return tslib_1.__spreadArray([FIRST_PAGE_INDEX, constants_1.ELLIPSIS], tslib_1.__read(rightRange), false);
}
if (shouldShowLeftDots && shouldShowRightDots) {
var middleRange = (0, range_1.range)(leftSiblingStartIndex, rightSiblingEndIndex);
return tslib_1.__spreadArray(tslib_1.__spreadArray([
FIRST_PAGE_INDEX,
constants_1.ELLIPSIS
], tslib_1.__read(middleRange), false), [
constants_1.ELLIPSIS,
lastPageIndex,
], false);
}
return (0, range_1.range)(FIRST_PAGE_INDEX, lastPageIndex);
};
exports.createPaginationRange = createPaginationRange;