{"version":3,"file":"pagination.mjs","sources":["../../../components/pagination/pagination.tsx"],"sourcesContent":["import { defineComponent, computed, ref, watch, toRefs, nextTick } from 'vue';\nimport { isNaN, isObject } from 'lodash-es';\nimport {\n  PageFirstIcon as TdPageFirstIcon,\n  PageLastIcon as TdPageLastIcon,\n  ChevronLeftIcon as TdChevronLeftIcon,\n  ChevronRightIcon as TdChevronRightIcon,\n  ChevronLeftDoubleIcon as TdChevronLeftDoubleIcon,\n  ChevronRightDoubleIcon as TdChevronRightDoubleIcon,\n  EllipsisIcon as TdEllipsisIcon,\n} from 'tdesign-icons-vue-next';\nimport {\n  useConfig,\n  useVModel,\n  useTNodeJSX,\n  useGlobalIcon,\n  usePrefixClass,\n  useDefaultValue,\n} from '@tdesign/shared-hooks';\n\nimport TInputNumber from '../input-number';\nimport { Select } from '../select';\nimport TInputAdornment from '../input-adornment';\nimport props from './props';\nimport { usePaginationClasses, useMoreAction } from './hooks';\n\nimport type { PageInfo, TdPaginationProps } from '../pagination/type';\n\nconst min = 1;\n\ntype PageChangeType = 'prevPage' | 'nextPage' | 'prevMorePage' | 'nextMorePage';\n\nexport default defineComponent({\n  name: 'TPagination',\n  props,\n\n  setup(props: TdPaginationProps) {\n    const { modelValue, pageSize, current } = toRefs(props);\n    const renderTNodeJSX = useTNodeJSX();\n    const [innerCurrent, setInnerCurrent] = useVModel(\n      current,\n      modelValue,\n      props.defaultCurrent,\n      props.onCurrentChange,\n      'current',\n    );\n\n    const [innerPageSize, setInnerPageSize] = useDefaultValue(\n      pageSize,\n      props.defaultPageSize,\n      props.onPageSizeChange,\n      'pageSize',\n    );\n\n    const { t, globalConfig } = useConfig('pagination');\n    const COMPONENT_NAME = usePrefixClass('pagination');\n    const {\n      PageFirstIcon,\n      PageLastIcon,\n      ChevronLeftIcon,\n      ChevronRightIcon,\n      ChevronLeftDoubleIcon,\n      ChevronRightDoubleIcon,\n      EllipsisIcon,\n    } = useGlobalIcon({\n      PageFirstIcon: TdPageFirstIcon,\n      PageLastIcon: TdPageLastIcon,\n      ChevronLeftIcon: TdChevronLeftIcon,\n      ChevronRightIcon: TdChevronRightIcon,\n      ChevronLeftDoubleIcon: TdChevronLeftDoubleIcon,\n      ChevronRightDoubleIcon: TdChevronRightDoubleIcon,\n      EllipsisIcon: TdEllipsisIcon,\n    });\n\n    const { pageCount, ...CLASS_MAP } = usePaginationClasses(props, innerCurrent, innerPageSize, COMPONENT_NAME);\n\n    const { prevMore, isPrevMoreShow, curPageLeftCount, nextMore, isNextMoreShow, curPageRightCount } = useMoreAction(\n      props,\n      pageCount,\n      innerCurrent,\n    );\n\n    const jumpIndex = ref(innerCurrent.value);\n\n    const isFolded = computed(() => pageCount.value > props.maxPageBtn);\n\n    const sizeOptions = computed<Array<{ label: string; value: number }>>(() => {\n      const pageSizeOptions = props.pageSizeOptions as TdPaginationProps['pageSizeOptions'];\n      const options = pageSizeOptions.map((option) =>\n        isObject(option)\n          ? option\n          : {\n              label: t(globalConfig.value.itemsPerPage, { size: option }),\n              value: Number(option),\n            },\n      );\n      return options.sort((a, b) => a.value - b.value);\n    });\n\n    const isMidEllipsis = computed(() => {\n      return props.pageEllipsisMode === 'mid';\n    });\n\n    const pages = computed(() => {\n      const array = [];\n      let start;\n      let end;\n\n      if (isFolded.value) {\n        if (isPrevMoreShow.value && isNextMoreShow.value) {\n          start = innerCurrent.value - curPageLeftCount.value;\n          end = innerCurrent.value + curPageRightCount.value;\n        } else {\n          const foldedStart = isMidEllipsis.value ? 2 : 1;\n          const foldedEnd = isMidEllipsis.value ? pageCount.value - 1 : pageCount.value;\n          if (isPrevMoreShow.value) {\n            // 保证前面还有一页展示\n            start = Math.min(innerCurrent.value - 1, pageCount.value - props.foldedMaxPageBtn + 1);\n          } else {\n            start = foldedStart;\n          }\n\n          if (isNextMoreShow.value) {\n            // 保证后面还有一页展示\n            end = Math.max(innerCurrent.value + 1, props.foldedMaxPageBtn);\n          } else {\n            end = foldedEnd;\n          }\n        }\n      } else {\n        start = 1;\n        end = pageCount.value;\n      }\n\n      for (let i = start; i <= end; i++) {\n        array.push(i);\n      }\n      return array;\n    });\n\n    watch(\n      () => innerCurrent.value,\n      (val) => (jumpIndex.value = val),\n    );\n\n    const toPage: (pageIndex: number, pageInfo?: PageInfo) => void = (pageIndex, pageInfo) => {\n      if (props.disabled) {\n        return;\n      }\n\n      let toPageCurrent = pageIndex;\n      if (pageIndex < min) {\n        toPageCurrent = min;\n      } else if (pageIndex > pageCount.value) {\n        toPageCurrent = pageCount.value;\n      }\n\n      pageInfo = pageInfo || {\n        current: toPageCurrent,\n        previous: innerCurrent.value,\n        pageSize: innerPageSize.value,\n      };\n\n      setInnerCurrent(toPageCurrent, pageInfo);\n      props.onChange?.(pageInfo);\n    };\n\n    const handlePageChange = (type: PageChangeType) => {\n      const pageChangeMap = {\n        prevPage: () => toPage(innerCurrent.value - 1),\n        nextPage: () => toPage(innerCurrent.value + 1),\n        prevMorePage: () => toPage(Math.max(2, innerCurrent.value - props.foldedMaxPageBtn)),\n        nextMorePage: () => toPage(Math.min(innerCurrent.value + props.foldedMaxPageBtn, pageCount.value - 1)),\n      };\n      pageChangeMap[type]();\n    };\n\n    const onSelectorChange = (val: string | number) => {\n      if (props.disabled) return;\n\n      const pageSize = Number(val);\n      const newPageCount = pageSize > 0 ? Math.max(Math.ceil(props.total / pageSize), 1) : 1;\n      const previousCurrent = innerCurrent.value;\n      const indexExceeds = previousCurrent > newPageCount;\n\n      // 触发 onPageSizeChange 回调\n      setInnerPageSize(pageSize, {\n        current: indexExceeds ? newPageCount : previousCurrent,\n        previous: previousCurrent,\n        pageSize,\n      });\n\n      // 场景:用户在 onPageSizeChange 中修改 current,需要重新计算 current\n      nextTick(() => {\n        const userChanged = innerCurrent.value !== previousCurrent;\n        const targetCurrent = userChanged ? innerCurrent.value : indexExceeds ? newPageCount : innerCurrent.value;\n\n        const pageInfo = {\n          current: targetCurrent,\n          previous: previousCurrent,\n          pageSize,\n        };\n\n        // 如果用户改了 current 或者不需要跳页,直接触发 onChange\n        // 否则需要调用 toPage 来更新内部状态\n        if (userChanged || !indexExceeds) {\n          props.onChange?.(pageInfo);\n        } else {\n          toPage(targetCurrent, pageInfo);\n        }\n      });\n    };\n\n    const onJumperChange = (val: number) => {\n      const currentIndex = Math.trunc(+val);\n      if (isNaN(currentIndex)) return;\n      jumpIndex.value = currentIndex;\n      toPage(currentIndex);\n    };\n\n    return () => {\n      const { total, pageSizeOptions, size, disabled, showPageSize } = props;\n      if (pageCount.value < 1) return null;\n\n      const Jumper = (\n        <div class={CLASS_MAP.jumperClass.value}>\n          {t(globalConfig.value.jumpTo)}\n          <TInputAdornment append={`/ ${pageCount.value} ${t(globalConfig.value.page)}`}>\n            <TInputNumber\n              class={CLASS_MAP.jumperInputClass.value}\n              v-model={jumpIndex.value}\n              onBlur={onJumperChange}\n              onEnter={onJumperChange}\n              max={pageCount.value}\n              min={min}\n              size={size}\n              disabled={disabled}\n              theme=\"normal\"\n              placeholder=\"\"\n            />\n          </TInputAdornment>\n        </div>\n      );\n\n      return (\n        <div class={CLASS_MAP.paginationClass.value}>\n          {/* 数据统计区 */}\n          {renderTNodeJSX(\n            'totalContent',\n            <div class={CLASS_MAP.totalClass.value}>{t(globalConfig.value.total, total)}</div>,\n          )}\n          {/* 分页器 */}\n          {showPageSize && pageSizeOptions.length > 0 && (\n            <Select\n              size={size}\n              value={innerPageSize}\n              disabled={disabled}\n              class={CLASS_MAP.sizerClass.value}\n              autoWidth={true}\n              onChange={onSelectorChange}\n              options={sizeOptions.value}\n              {...props.selectProps}\n            />\n          )}\n          {/* 首页按钮 */}\n          {props.showFirstAndLastPageBtn ? (\n            <div class={CLASS_MAP.preBtnClass.value} onClick={() => toPage(1)}>\n              <PageFirstIcon />\n            </div>\n          ) : null}\n          {/* 向前按钮 */}\n          {props.showPreviousAndNextBtn ? (\n            <div class={CLASS_MAP.preBtnClass.value} onClick={() => handlePageChange('prevPage')}>\n              <ChevronLeftIcon />\n            </div>\n          ) : null}\n          {/* 常规版 */}\n          {props.showPageNumber && props.theme === 'default' ? (\n            <ul class={CLASS_MAP.btnWrapClass.value}>\n              {isFolded.value && isMidEllipsis.value && (\n                <li class={CLASS_MAP.getButtonClass(1)} onClick={() => toPage(min)}>\n                  {min}\n                </li>\n              )}\n              {isFolded.value && isPrevMoreShow.value && isMidEllipsis.value ? (\n                <li\n                  class={CLASS_MAP.btnMoreClass.value}\n                  onClick={() => handlePageChange('prevMorePage')}\n                  onMouseover={() => (prevMore.value = true)}\n                  onMouseout={() => (prevMore.value = false)}\n                >\n                  {prevMore.value ? <ChevronLeftDoubleIcon /> : <EllipsisIcon />}\n                </li>\n              ) : null}\n              {pages.value.map((i) => (\n                <li class={CLASS_MAP.getButtonClass(i)} key={i} onClick={() => toPage(i)}>\n                  {i}\n                </li>\n              ))}\n              {isFolded.value && isNextMoreShow.value && isMidEllipsis.value ? (\n                <li\n                  class={CLASS_MAP.btnMoreClass.value}\n                  onClick={() => handlePageChange('nextMorePage')}\n                  onMouseover={() => (nextMore.value = true)}\n                  onMouseout={() => (nextMore.value = false)}\n                >\n                  {nextMore.value ? <ChevronRightDoubleIcon /> : <EllipsisIcon />}\n                </li>\n              ) : null}\n              {isFolded.value && isMidEllipsis.value ? (\n                <li class={CLASS_MAP.getButtonClass(pageCount.value)} onClick={() => toPage(pageCount.value)}>\n                  {pageCount.value}\n                </li>\n              ) : null}\n            </ul>\n          ) : null}\n          {/* 极简版 */}\n          {props.theme === 'simple' && Jumper}\n          {/* 向后按钮 */}\n          {props.showPreviousAndNextBtn ? (\n            <div class={CLASS_MAP.nextBtnClass.value} onClick={() => handlePageChange('nextPage')}>\n              <ChevronRightIcon />\n            </div>\n          ) : null}\n          {/* 尾页按钮 */}\n          {props.showFirstAndLastPageBtn ? (\n            <div class={CLASS_MAP.nextBtnClass.value} onClick={() => toPage(pageCount.value)}>\n              <PageLastIcon />\n            </div>\n          ) : null}\n          {/* 快速跳转 */}\n          {props.theme === 'default' && props.showJumper && Jumper}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["min","defineComponent","name","props","setup","_toRefs","toRefs","modelValue","pageSize","current","renderTNodeJSX","useTNodeJSX","_useVModel","useVModel","defaultCurrent","onCurrentChange","_useVModel2","_slicedToArray","innerCurrent","setInnerCurrent","_useDefaultValue","useDefaultValue","defaultPageSize","onPageSizeChange","_useDefaultValue2","innerPageSize","setInnerPageSize","_useConfig","useConfig","t","globalConfig","COMPONENT_NAME","usePrefixClass","_useGlobalIcon","useGlobalIcon","PageFirstIcon","TdPageFirstIcon","PageLastIcon","TdPageLastIcon","ChevronLeftIcon","TdChevronLeftIcon","ChevronRightIcon","TdChevronRightIcon","ChevronLeftDoubleIcon","TdChevronLeftDoubleIcon","ChevronRightDoubleIcon","TdChevronRightDoubleIcon","EllipsisIcon","TdEllipsisIcon","_usePaginationClasses","usePaginationClasses","pageCount","CLASS_MAP","_objectWithoutProperties","_excluded","_useMoreAction","useMoreAction","prevMore","isPrevMoreShow","curPageLeftCount","nextMore","isNextMoreShow","curPageRightCount","jumpIndex","ref","value","isFolded","computed","maxPageBtn","sizeOptions","pageSizeOptions","options","map","option","isObject","label","itemsPerPage","size","Number","sort","a","b","isMidEllipsis","pageEllipsisMode","pages","array","start","end","foldedStart","foldedEnd","Math","foldedMaxPageBtn","max","i","push","watch","val","toPage","pageIndex","pageInfo","_props2$onChange","disabled","toPageCurrent","previous","onChange","handlePageChange","type","pageChangeMap","prevPage","nextPage","prevMorePage","nextMorePage","onSelectorChange","newPageCount","ceil","total","previousCurrent","indexExceeds","nextTick","userChanged","targetCurrent","_props2$onChange2","onJumperChange","currentIndex","trunc","isNaN","showPageSize","Jumper","_createVNode","jumperClass","jumpTo","TInputAdornment","concat","page","jumperInputClass","onUpdateModelValue","$event","paginationClass","totalClass","length","Select","_mergeProps","sizerClass","selectProps","showFirstAndLastPageBtn","preBtnClass","onClick","showPreviousAndNextBtn","showPageNumber","theme","btnWrapClass","getButtonClass","btnMoreClass","onMouseover","onMouseout","nextBtnClass","showJumper"],"mappings":"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"}