{"version":3,"file":"pager.vue.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":["cls","_openBlock","_createElementBlock","_normalizeClass","pageCount","currentPage","showPrevMore","_createCommentVNode","_Fragment","_renderList","showNextMore","_toDisplayString"],"mappings":";;;;AA2HY,SAAA,YAAA,IAAEA,EAAAA,MAAAA,EAAG,MAAA,EAAA,MAAA,EAAA,OAAA,QAAA,EAAA;SAAGC,WAAK,EAAAC,kBAAA;AAAA,IAAA,IAAA;AAAA,IAAA;AAAA,MAAA,KAAA,EAAAC,cAAA,CAAA,IAAA,CAAA,GAAA,CAAA;AAAA,aAEbC,EAAAA,MAAAA,CAAS,CAAA,CAAA,KAAA,OAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,YAAA,IAAA,IAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,KAAA;AAAA;MACT,IAAA,CAAA,SAAA,GAAA,CAAA,IAAAH,SAAA,EAAA,EAAAC,kBAAA;AAAA,QAAGG,IAAAA;AAAAA,QAAAA;AAAAA,UACV,GAAA,EAAA,CAAA;AAAA,UAAA,KAAA,EAAAF,cAAA,CAAA,CAAA,IAAA,CAAA,WAAA,KAAA,CAAA,IAAA,WAAA,EAAA,IAAA,CAAA,QAAA,IAAA,aAAA,EAAA,QAAA,CAAA,CAAA;AAAA,SAGSG;AAAAA,QAAAA,KAAAA;AAAAA,QAAAA,CAAAA;AAAAA;AAAAA,OAAY,IAAtBC,kBAAA,CAAA,MAAA,EAAA,IAAA,CAAA;AAAA,MAA8B,IAAA,CAAA,YAAA,IAAAN,SAAA,EAAA,EAAAC,kBAAA;AAAA,QAAA,IAAA;AAAA,QAAA;AAAA,UAAA,GAAA,EAAA,CAAA;AAAA;;;;;OAC9B,IAAAK,kBAAA,CAAA,MAAA,EAAA,IAAA,CAAA;AAAA,OAAAN,SAAA,CAEQ,IAAK,CAAA,EAAAC,kBAAA;AAAA,QAAAM,QAAA;AAAA,QAAA,IAAA;AAAA,QAAAC,UAAA,CAAA,IAAA,CAAA,MAAA,EAAA,CAAA,KAAA,KAAA;AACL,UAAA,OAAAR,WAAA,EAAAC,kBAAA;AAAA,YAAGG,IAAAA;AAAAA,YAAgB;AAAA,cAAA,GAAA,EAAA,KAAA;AAAA;aAKjBK;AAAAA,YAAYC,gBAAA,KAAA,CAAA;AAAA,YAAA,CAAA;AAAA;AAAA,WAAA,CAAA;AAAA,SAAA,CAAA;AAAA;;OAAtB;AAAA,MAA8B,IAAA,CAAA,YAAA,IAAAV,SAAA,EAAA,EAAAC,kBAAA;AAAA,QAAA,IAAA;AAAA,QAAA;AAAA,UAAA,GAAA,EAAA,CAAA;AAAA;SAEtBE;AAAAA,QAAAA,IAAAA;AAAAA,QAAAA,CAAAA;AAAAA;AAAAA,OAAS,IADjBG,kBAAA,CAAA,MAAA,EAAA,IAAA,CAAA;AAAA,MAEQ,IAAA,CAAA,SAAA,GAAA,CAAA,IAAAN,SAAA,EAAA,EAAAC,kBAAA;AAAA,QAAGG,IAAAA;AAAAA,QAAAA;AAAAA,UAAAA,GAAAA,EAAAA,CAAAA;AAAAA;;;;;;;;;;;;;;;"}