export const DEFAULT_PAGE_SIZE = 20
export const DEFAULT_MAX_VISIBLE_PAGES = 10

export const normalizePageSize = (pageSize: number): number =>
  Number.isFinite(pageSize) && pageSize > 0 ? Math.floor(pageSize) : 1

export const getTotalItems = (items: unknown[] | null | undefined): number =>
  items?.length ?? 0

export const clampCurrentPage = (
  currentPage: number,
  allPages: number
): number => {
  if (allPages <= 0) {
    return 1
  }

  const normalizedPage = Number.isFinite(currentPage)
    ? Math.floor(currentPage)
    : 1

  if (normalizedPage < 1) {
    return 1
  }

  if (normalizedPage > allPages) {
    return allPages
  }

  return normalizedPage
}
