{"version":3,"file":"pagination.mjs","names":["Prev","Jumper","Pager","Next","Sizes","Total"],"sources":["../../../../../../packages/components/pagination/src/pagination.ts"],"sourcesContent":["import {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  h,\n  provide,\n  ref,\n  watch,\n} from 'vue'\nimport { ArrowLeft, ArrowRight } from '@element-plus/icons-vue'\nimport {\n  buildProps,\n  debugWarn,\n  definePropType,\n  iconPropType,\n  isNumber,\n  mutable,\n} from '@element-plus/utils'\nimport {\n  useDeprecated,\n  useGlobalSize,\n  useLocale,\n  useNamespace,\n  useSizeProp,\n} from '@element-plus/hooks'\nimport { CHANGE_EVENT } from '@element-plus/constants'\nimport { elPaginationKey } from './constants'\nimport Prev from './components/prev.vue'\nimport Next from './components/next.vue'\nimport Sizes from './components/sizes.vue'\nimport Jumper from './components/jumper.vue'\nimport Total from './components/total.vue'\nimport Pager from './components/pager.vue'\n\nimport type {\n  CSSProperties,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n  VNode,\n} from 'vue'\n/**\n * It it user's responsibility to guarantee that the value of props.total... is number\n * (same as pageSize, defaultPageSize, currentPage, defaultCurrentPage, pageCount)\n * Otherwise we can reasonable infer that the corresponding field is absent\n */\nconst isAbsent = (v: unknown): v is undefined => typeof v !== 'number'\n\ntype LayoutKey =\n  | 'prev'\n  | 'pager'\n  | 'next'\n  | 'jumper'\n  | '->'\n  | 'total'\n  | 'sizes'\n  | 'slot'\n\nexport const paginationProps = buildProps({\n  /**\n   * @description options of item count per page\n   */\n  pageSize: Number,\n  /**\n   * @description default initial value of page size, not setting is the same as setting 10\n   */\n  defaultPageSize: Number,\n  /**\n   * @description total item count\n   */\n  total: Number,\n  /**\n   * @description total page count. Set either `total` or `page-count` and pages will be displayed; if you need `page-sizes`, `total` is required\n   */\n  pageCount: Number,\n  /**\n   * @description number of pagers. Pagination collapses when the total page count exceeds this value\n   */\n  pagerCount: {\n    type: Number,\n    validator: (value: unknown) => {\n      return (\n        isNumber(value) &&\n        Math.trunc(value) === value &&\n        value > 4 &&\n        value < 22 &&\n        value % 2 === 1\n      )\n    },\n    default: 7,\n  },\n  /**\n   * @description current page number\n   */\n  currentPage: Number,\n  /**\n   * @description default initial value of current-page, not setting is the same as setting 1\n   */\n  defaultCurrentPage: Number,\n  /**\n   * @description layout of Pagination, elements separated with a comma\n   */\n  layout: {\n    type: String,\n    default: (\n      ['prev', 'pager', 'next', 'jumper', '->', 'total'] as LayoutKey[]\n    ).join(', '),\n  },\n  /**\n   * @description item count of each page\n   */\n  pageSizes: {\n    type: definePropType<number[]>(Array),\n    default: () => mutable([10, 20, 30, 40, 50, 100] as const),\n  },\n  /**\n   * @description custom class name for the page size Select's dropdown\n   */\n  popperClass: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description custom style for the page size Select's dropdown\n   */\n  popperStyle: {\n    type: definePropType<string | CSSProperties>([String, Object]),\n  },\n  /**\n   * @description text for the prev button\n   */\n  prevText: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description icon for the prev button, higher priority of `prev-text`\n   */\n  prevIcon: {\n    type: iconPropType,\n    default: () => ArrowLeft,\n  },\n  /**\n   * @description text for the next button\n   */\n  nextText: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description icon for the next button, higher priority of `next-text`\n   */\n  nextIcon: {\n    type: iconPropType,\n    default: () => ArrowRight,\n  },\n  /**\n   * @description whether Pagination size is teleported to body\n   */\n  teleported: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether to use small pagination\n   */\n  small: Boolean,\n  /**\n   * @description set page size\n   */\n  size: useSizeProp,\n  /**\n   * @description whether the buttons have a background color\n   */\n  background: Boolean,\n  /**\n   * @description whether Pagination is disabled\n   */\n  disabled: Boolean,\n  /**\n   * @description whether to hide when there's only one page\n   */\n  hideOnSinglePage: Boolean,\n  /**\n   * @description which element the size dropdown appends to.\n   */\n  appendSizeTo: String,\n} as const)\nexport type PaginationProps = ExtractPropTypes<typeof paginationProps>\nexport type PaginationPropsPublic = ExtractPublicPropTypes<\n  typeof paginationProps\n>\n\nexport const paginationEmits = {\n  'update:current-page': (val: number) => isNumber(val),\n  'update:page-size': (val: number) => isNumber(val),\n  'size-change': (val: number) => isNumber(val),\n  change: (currentPage: number, pageSize: number) =>\n    isNumber(currentPage) && isNumber(pageSize),\n  'current-change': (val: number) => isNumber(val),\n  'prev-click': (val: number) => isNumber(val),\n  'next-click': (val: number) => isNumber(val),\n}\nexport type PaginationEmits = typeof paginationEmits\n\nconst componentName = 'ElPagination'\nexport default defineComponent({\n  name: componentName,\n\n  props: paginationProps,\n  emits: paginationEmits,\n\n  setup(props, { emit, slots }) {\n    const { t } = useLocale()\n    const ns = useNamespace('pagination')\n    const vnodeProps = getCurrentInstance()!.vnode.props || {}\n    const _globalSize = useGlobalSize()\n    const _size = computed(() =>\n      props.small ? 'small' : (props.size ?? _globalSize.value)\n    )\n    useDeprecated(\n      {\n        from: 'small',\n        replacement: 'size',\n        version: '3.0.0',\n        scope: 'el-pagination',\n        ref: 'https://element-plus.org/zh-CN/component/pagination.html',\n      },\n      computed(() => !!props.small)\n    )\n    // we can find @xxx=\"xxx\" props on `vnodeProps` to check if user bind corresponding events\n    const hasCurrentPageListener =\n      'onUpdate:currentPage' in vnodeProps ||\n      'onUpdate:current-page' in vnodeProps ||\n      'onCurrentChange' in vnodeProps\n    const hasPageSizeListener =\n      'onUpdate:pageSize' in vnodeProps ||\n      'onUpdate:page-size' in vnodeProps ||\n      'onSizeChange' in vnodeProps\n    const assertValidUsage = computed(() => {\n      // Users have to set either one, otherwise count of pages cannot be determined\n      if (isAbsent(props.total) && isAbsent(props.pageCount)) return false\n      // <el-pagination ...otherProps :current-page=\"xxx\" /> without corresponding listener is forbidden now\n      // Users have to use two way binding of `currentPage`\n      // If users just want to provide a default value, `defaultCurrentPage` is here for you\n      if (!isAbsent(props.currentPage) && !hasCurrentPageListener) return false\n      // When you want to change sizes, things get more complex, detailed below\n      // Basically the most important value we need is page count\n      // either directly from props.pageCount\n      // or calculated from props.total\n      // we will take props.pageCount precedence over props.total\n      if (props.layout.includes('sizes')) {\n        if (!isAbsent(props.pageCount)) {\n          // if props.pageCount is assign by user, then user have to watch pageSize change\n          // and recalculate pageCount\n          if (!hasPageSizeListener) return false\n        } else if (!isAbsent(props.total)) {\n          // Otherwise, we will see if user have props.pageSize defined\n          // If so, meaning user want to have pageSize controlled himself/herself from component\n          // Thus page size listener is required\n          // users are account for page size change\n          if (!isAbsent(props.pageSize)) {\n            if (!hasPageSizeListener) {\n              return false\n            }\n          } else {\n            // (else block just for explaination)\n            // else page size is controlled by el-pagination internally\n          }\n        }\n      }\n      return true\n    })\n\n    const innerPageSize = ref(\n      isAbsent(props.defaultPageSize) ? 10 : props.defaultPageSize\n    )\n    const innerCurrentPage = ref(\n      isAbsent(props.defaultCurrentPage) ? 1 : props.defaultCurrentPage\n    )\n\n    const pageSizeBridge = computed({\n      get() {\n        return isAbsent(props.pageSize) ? innerPageSize.value : props.pageSize\n      },\n      set(v: number) {\n        if (isAbsent(props.pageSize)) {\n          innerPageSize.value = v\n        }\n        if (hasPageSizeListener) {\n          emit('update:page-size', v)\n          emit('size-change', v)\n        }\n      },\n    })\n\n    const pageCountBridge = computed<number>(() => {\n      let pageCount = 0\n      if (!isAbsent(props.pageCount)) {\n        pageCount = props.pageCount\n      } else if (!isAbsent(props.total)) {\n        pageCount = Math.max(1, Math.ceil(props.total / pageSizeBridge.value))\n      }\n      return pageCount\n    })\n\n    const currentPageBridge = computed<number>({\n      get() {\n        return isAbsent(props.currentPage)\n          ? innerCurrentPage.value\n          : props.currentPage\n      },\n      set(v) {\n        let newCurrentPage = v\n        if (v < 1) {\n          newCurrentPage = 1\n        } else if (v > pageCountBridge.value) {\n          newCurrentPage = pageCountBridge.value\n        }\n        if (isAbsent(props.currentPage)) {\n          innerCurrentPage.value = newCurrentPage\n        }\n        if (hasCurrentPageListener) {\n          emit('update:current-page', newCurrentPage)\n          emit('current-change', newCurrentPage)\n        }\n      },\n    })\n\n    watch(pageCountBridge, (val) => {\n      if (currentPageBridge.value > val) currentPageBridge.value = val\n    })\n\n    watch(\n      [currentPageBridge, pageSizeBridge],\n      (value) => {\n        emit(CHANGE_EVENT, ...value)\n      },\n      { flush: 'post' }\n    )\n\n    function handleCurrentChange(val: number) {\n      currentPageBridge.value = val\n    }\n\n    function handleSizeChange(val: number) {\n      pageSizeBridge.value = val\n      const newPageCount = pageCountBridge.value\n      if (currentPageBridge.value > newPageCount) {\n        currentPageBridge.value = newPageCount\n      }\n    }\n\n    function prev() {\n      if (props.disabled) return\n      currentPageBridge.value -= 1\n      emit('prev-click', currentPageBridge.value)\n    }\n\n    function next() {\n      if (props.disabled) return\n      currentPageBridge.value += 1\n      emit('next-click', currentPageBridge.value)\n    }\n\n    function addClass(element: any, cls: string) {\n      if (element) {\n        if (!element.props) {\n          element.props = {}\n        }\n        element.props.class = [element.props.class, cls].join(' ')\n      }\n    }\n\n    provide(elPaginationKey, {\n      pageCount: pageCountBridge,\n      disabled: computed(() => props.disabled),\n      currentPage: currentPageBridge,\n      changeEvent: handleCurrentChange,\n      handleSizeChange,\n    })\n\n    return () => {\n      if (!assertValidUsage.value) {\n        debugWarn(componentName, t('el.pagination.deprecationWarning'))\n        return null\n      }\n      if (!props.layout) return null\n      if (props.hideOnSinglePage && pageCountBridge.value <= 1) return null\n      const rootChildren: Array<VNode | VNode[] | null> = []\n      const rightWrapperChildren: Array<VNode | VNode[] | null> = []\n      const rightWrapperRoot = h(\n        'div',\n        { class: ns.e('rightwrapper') },\n        rightWrapperChildren\n      )\n      const TEMPLATE_MAP: Record<\n        Exclude<LayoutKey, '->'>,\n        VNode | VNode[] | null\n      > = {\n        prev: h(Prev, {\n          disabled: props.disabled,\n          currentPage: currentPageBridge.value,\n          prevText: props.prevText,\n          prevIcon: props.prevIcon,\n          onClick: prev,\n        }),\n        jumper: h(Jumper, {\n          size: _size.value,\n        }),\n        pager: h(Pager, {\n          currentPage: currentPageBridge.value,\n          pageCount: pageCountBridge.value,\n          pagerCount: props.pagerCount,\n          onChange: handleCurrentChange,\n          disabled: props.disabled,\n        }),\n        next: h(Next, {\n          disabled: props.disabled,\n          currentPage: currentPageBridge.value,\n          pageCount: pageCountBridge.value,\n          nextText: props.nextText,\n          nextIcon: props.nextIcon,\n          onClick: next,\n        }),\n        sizes: h(Sizes, {\n          pageSize: pageSizeBridge.value,\n          pageSizes: props.pageSizes,\n          popperClass: props.popperClass,\n          popperStyle: props.popperStyle,\n          disabled: props.disabled,\n          teleported: props.teleported,\n          size: _size.value,\n          appendSizeTo: props.appendSizeTo,\n        }),\n        slot: slots?.default?.() ?? null,\n        total: h(Total, { total: isAbsent(props.total) ? 0 : props.total }),\n      }\n\n      const components = props.layout\n        .split(',')\n        .map((item: string) => item.trim()) as LayoutKey[]\n\n      let haveRightWrapper = false\n\n      components.forEach((c) => {\n        if (c === '->') {\n          haveRightWrapper = true\n          return\n        }\n        if (!haveRightWrapper) {\n          rootChildren.push(TEMPLATE_MAP[c])\n        } else {\n          rightWrapperChildren.push(TEMPLATE_MAP[c])\n        }\n      })\n\n      addClass(rootChildren[0], ns.is('first'))\n      addClass(rootChildren[rootChildren.length - 1], ns.is('last'))\n\n      if (haveRightWrapper && rightWrapperChildren.length > 0) {\n        addClass(rightWrapperChildren[0], ns.is('first'))\n        addClass(\n          rightWrapperChildren[rightWrapperChildren.length - 1],\n          ns.is('last')\n        )\n        rootChildren.push(rightWrapperRoot)\n      }\n      return h(\n        'div',\n        {\n          class: [\n            ns.b(),\n            ns.is('background', props.background),\n            ns.m(_size.value),\n          ],\n        },\n        rootChildren\n      )\n    }\n  },\n})\n"],"mappings":"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"}