{"version":3,"file":"usePagination.cjs","sources":["../../../../../../../packages/components/table/src/hooks/usePagination.ts"],"sourcesContent":["import type { Ref } from 'vue';\n\nimport type { PaginationProps } from '../../../pagination';\nimport type { TablePaginationConfig } from '../interface';\nimport { useState } from '@antdv/hooks';\nimport { computed } from 'vue';\n\nexport const DEFAULT_PAGE_SIZE = 10;\ntype RecordType = Record<string, any>;\n\nexport function extendsObject<T extends RecordType>(...list: T[]) {\n  const result: RecordType = { ...list[0] };\n\n  for (let i = 1; i < list.length; i++) {\n    const obj = list[i];\n    if (obj) {\n      Object.keys(obj).forEach((key) => {\n        const val = obj[key];\n        if (val !== undefined)\n          result[key] = val;\n      });\n    }\n  }\n\n  return result;\n}\n\nexport function getPaginationParam(\n  mergedPagination: TablePaginationConfig,\n  pagination: TablePaginationConfig | boolean | undefined,\n) {\n  const param: any = {\n    current: mergedPagination.current,\n    pageSize: mergedPagination.pageSize,\n  };\n  const paginationObj = (pagination && typeof pagination === 'object') ? pagination : {};\n\n  Object.keys(paginationObj).forEach((pageProp) => {\n    const value = (mergedPagination as any)[pageProp];\n\n    if (typeof value !== 'function')\n      param[pageProp] = value;\n  });\n\n  return param;\n}\n\nexport default function usePagination(\n  totalRef: Ref<number>,\n  paginationRef: Ref<TablePaginationConfig | false | undefined>,\n  onChange: (current: number, pageSize: number) => void,\n): [Ref<TablePaginationConfig>, () => void] {\n  const pagination = computed(() =>\n    (paginationRef.value && typeof paginationRef.value === 'object') ? paginationRef.value : {},\n  );\n  const paginationTotal = computed(() => pagination.value.total || 0);\n  const [innerPagination, setInnerPagination] = useState<{\n    current?: number\n    pageSize?: number\n  }>(() => ({\n    current: 'defaultCurrent' in pagination.value ? pagination.value.defaultCurrent : 1,\n    pageSize:\n      'defaultPageSize' in pagination.value ? pagination.value.defaultPageSize : DEFAULT_PAGE_SIZE,\n  }));\n\n  // ============ Basic Pagination Config ============\n  const mergedPagination = computed(() => {\n    const mP = extendsObject<Partial<TablePaginationConfig>>(\n      innerPagination.value,\n      pagination.value,\n      {\n        total: paginationTotal.value > 0 ? paginationTotal.value : totalRef.value,\n      },\n    );\n    // Reset `current` if data length or pageSize changed\n    const maxPage = Math.ceil((paginationTotal.value || totalRef.value) / mP.pageSize!);\n    if (mP.current! > maxPage) {\n      // Prevent a maximum page count of 0\n      mP.current = maxPage || 1;\n    }\n    return mP;\n  });\n\n  const refreshPagination = (current?: number, pageSize?: number) => {\n    if (paginationRef.value === false) return;\n    setInnerPagination({\n      current: current ?? 1,\n      pageSize: pageSize || mergedPagination.value.pageSize,\n    });\n  };\n\n  const onInternalChange: PaginationProps['onChange'] = (current, pageSize) => {\n    if (paginationRef.value)\n      pagination.value.onChange?.(current, pageSize);\n\n    refreshPagination(current, pageSize);\n    onChange(current, pageSize || mergedPagination.value.pageSize);\n  };\n\n  return [\n    computed(() => {\n      return paginationRef.value === false\n        ? {}\n        : { ...mergedPagination.value, onChange: onInternalChange };\n    }),\n    refreshPagination,\n  ];\n}\n"],"names":["computed","useState"],"mappings":"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"}