UNPKG

@synergy-design-system/components

Version:
66 lines (64 loc) 2.6 kB
// 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