{"version":3,"file":"pager.vue2.mjs","sources":["../../../../../../../packages/components/pagination/src/layout/pager.vue"],"sourcesContent":["<script lang=\"ts\">\n  import { computed, defineComponent, ref, watchEffect } from 'vue'\n  import { getNamespace } from '../../../../utils/global-config'\n  export default defineComponent({\n    name: 'PaginationPager',\n    props: {\n      currentPage: {\n        type: Number,\n        default: 1\n      },\n      pageCount: {\n        type: Number,\n        required: true\n      },\n      pagerCount: {\n        type: Number,\n        default: 7\n      },\n      disabled: Boolean\n    },\n    emits: ['change'],\n    setup(props, { emit }) {\n      const ns = getNamespace('pagination-pager')\n      const cls = computed(() => [ns])\n\n      const showPrevMore = ref(false)\n      const showNextMore = ref(false)\n\n      const pagers = computed(() => {\n        const pagerCount = props.pagerCount\n        const halfPagerCount = (pagerCount - 1) / 2\n        const currentPage = Number(props.currentPage)\n        const pageCount = Number(props.pageCount)\n        let showPrevMore = false\n        let showNextMore = false\n        if (pageCount > pagerCount) {\n          if (currentPage > pagerCount - halfPagerCount) {\n            showPrevMore = true\n          }\n          if (currentPage < pageCount - halfPagerCount) {\n            showNextMore = true\n          }\n        }\n        const array: number[] = []\n        if (showPrevMore && !showNextMore) {\n          const startPage = pageCount - (pagerCount - 2)\n          for (let i = startPage; i < pageCount; i++) {\n            array.push(i)\n          }\n        } else if (!showPrevMore && showNextMore) {\n          for (let i = 2; i < pagerCount; i++) {\n            array.push(i)\n          }\n        } else if (showPrevMore && showNextMore) {\n          const offset = Math.floor(pagerCount / 2) - 1\n          for (let i = currentPage - offset; i <= currentPage + offset; i++) {\n            array.push(i)\n          }\n        } else {\n          for (let i = 2; i < pageCount; i++) {\n            array.push(i)\n          }\n        }\n        return array\n      })\n\n      // events\n      const onPagerClick = (event: UIEvent) => {\n        const target = event.target as HTMLElement\n        if (target.tagName.toLowerCase() === 'ul' || props.disabled) {\n          return\n        }\n        let newPage = Number(target.textContent)\n        const pageCount = props.pageCount!\n        const currentPage = props.currentPage\n        const pagerCountOffset = props.pagerCount - 2\n        if (target.className.includes('more')) {\n          if (target.className.includes('quickprev')) {\n            newPage = currentPage - pagerCountOffset\n          } else if (target.className.includes('quicknext')) {\n            newPage = currentPage + pagerCountOffset\n          }\n        }\n        if (!Number.isNaN(+newPage)) {\n          if (newPage < 1) {\n            newPage = 1\n          }\n          if (newPage > pageCount) {\n            newPage = pageCount\n          }\n        }\n\n        if (newPage !== currentPage) {\n          emit('change', newPage)\n        }\n      }\n\n      watchEffect(() => {\n        const halfPagerCount = (props.pagerCount - 1) / 2\n        showPrevMore.value = false\n        showNextMore.value = false\n        if (props.pageCount! > props.pagerCount) {\n          if (props.currentPage > props.pagerCount - halfPagerCount) {\n            showPrevMore.value = true\n          }\n          if (props.currentPage < props.pageCount! - halfPagerCount) {\n            showNextMore.value = true\n          }\n        }\n      })\n\n      return {\n        cls,\n        showPrevMore,\n        showNextMore,\n        pagers,\n        onPagerClick\n      }\n    }\n  })\n</script>\n\n<template>\n  <ul :class=\"cls\" @click=\"onPagerClick\">\n    <li\n      v-if=\"pageCount > 0\"\n      :class=\"[currentPage === 1 && 'is-active', disabled && 'is-disabled', 'number']\"\n    >\n      1\n    </li>\n    <li v-if=\"showPrevMore\" :class=\"['more quickprev', disabled && 'is-disabled']\"> </li>\n    <li\n      v-for=\"pager in pagers\"\n      :key=\"pager\"\n      :class=\"[currentPage === pager && 'is-active', disabled && 'is-disabled']\"\n      class=\"number\"\n    >\n      {{ pager }}\n    </li>\n    <li v-if=\"showNextMore\" :class=\"['more quicknext', disabled && 'is-disabled']\"> </li>\n    <li\n      v-if=\"pageCount > 1\"\n      :class=\"[currentPage === pageCount && 'is-active', disabled && 'is-disabled']\"\n      class=\"number\"\n    >\n      {{ pageCount }}\n    </li>\n  </ul>\n</template>\n"],"names":["showPrevMore","showNextMore"],"mappings":"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"}