@synergy-design-system/components
Version:
66 lines (64 loc) • 2.6 kB
JavaScript
// src/components/pagination/utility.ts
var DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];
var isValidPositiveInteger = (value) => Number.isSafeInteger(value) && Number(value) > 0;
var isValidNonNegativeInteger = (value) => Number.isSafeInteger(value) && Number(value) >= 0;
var getPreviousOrDefault = (changed, key, fallback, validator) => {
const previousValue = changed.get(key);
return validator(previousValue) ? previousValue : fallback;
};
var calculateTotalPages = (totalItems, pageSize) => {
const safeTotalItems = Number.isFinite(totalItems) && totalItems > 0 ? totalItems : 0;
const safePageSize = Number.isFinite(pageSize) && pageSize > 0 ? pageSize : 1;
return Math.ceil(safeTotalItems / safePageSize);
};
var calculatePageItemIndices = (totalItems, pageSize, currentPage) => {
if (totalItems <= 0) {
return {
endIndex: 0,
startIndex: 0
};
}
const totalPages = calculateTotalPages(totalItems, pageSize);
const validCurrentPage = Math.min(Math.max(currentPage, 1), totalPages);
const startIndex = (validCurrentPage - 1) * pageSize + 1;
const endIndex = Math.min(validCurrentPage * pageSize, totalItems);
return {
endIndex,
startIndex
};
};
var clampPage = (page, totalPages) => {
if (!Number.isFinite(page)) return 1;
const safeTotalPages = Number.isFinite(totalPages) ? Math.max(totalPages, 1) : 1;
return Math.min(Math.max(page, 1), safeTotalPages);
};
var getTotalPages = (pageSize, totalItems) => {
const safeSize = Number.isFinite(pageSize) && pageSize > 0 ? pageSize : 1;
const safeTotalItems = Number.isFinite(totalItems) && totalItems > 0 ? totalItems : 0;
return Math.max(1, Math.ceil(safeTotalItems / safeSize));
};
var sanitizePageSizeOptions = (pageSizeOptions) => {
const options = Array.isArray(pageSizeOptions) ? pageSizeOptions : [];
const sanitized = options.map((value) => Number(value)).filter((value) => Number.isSafeInteger(value) && value > 0);
return sanitized.length > 0 ? sanitized : DEFAULT_PAGE_SIZE_OPTIONS;
};
var getMaxOptionCharCount = (pageSizeOptions) => sanitizePageSizeOptions(pageSizeOptions).reduce(
(maxChars, option) => Math.max(maxChars, String(option).length),
1
);
var getTotalPagesCharCount = (pageSize, totalItems) => String(
getTotalPages(pageSize, totalItems)
).length;
export {
isValidPositiveInteger,
isValidNonNegativeInteger,
getPreviousOrDefault,
calculateTotalPages,
calculatePageItemIndices,
clampPage,
getTotalPages,
sanitizePageSizeOptions,
getMaxOptionCharCount,
getTotalPagesCharCount
};
//# sourceMappingURL=chunk.GXWM6IF5.js.map