{"version":3,"file":"pagination.mjs","sources":["../../../components/pagination/pagination.tsx"],"sourcesContent":["import { Icon } from '@/components/icon'\r\nimport { NumberInput } from '@/components/number-input'\r\nimport { Renderer } from '@/components/renderer'\r\nimport { Select } from '@/components/select'\r\n\r\nimport {\r\n  Transition,\r\n  computed,\r\n  defineComponent,\r\n  nextTick,\r\n  onMounted,\r\n  onUpdated,\r\n  reactive,\r\n  ref,\r\n  renderSlot,\r\n  toRef,\r\n  watch,\r\n} from 'vue'\r\n\r\nimport {\r\n  createSizeProp,\r\n  emitEvent,\r\n  getCountWord,\r\n  getCountWordOnly,\r\n  useIcons,\r\n  useLocale,\r\n  useNameHelper,\r\n  useProps,\r\n} from '@vexip-ui/config'\r\nimport { createSlotRender, useModifier, useRtl } from '@vexip-ui/hooks'\r\nimport { boundRange, decide, isClient, isNull, range } from '@vexip-ui/utils'\r\nimport { paginationProps } from './props'\r\n\r\nconst enum PaginationMode {\r\n  LEFT = 'left',\r\n  CENTER = 'center',\r\n  RIGHT = 'right',\r\n}\r\n\r\nexport default defineComponent({\r\n  name: 'Pagination',\r\n  props: paginationProps,\r\n  emits: ['update:active', 'update:page-size'],\r\n  setup(_props, { slots, emit, expose }) {\r\n    const props = useProps('pagination', _props, {\r\n      size: createSizeProp(),\r\n      locale: null,\r\n      total: {\r\n        default: 0,\r\n        validator: value => value >= 0,\r\n        static: true,\r\n      },\r\n      noBorder: false,\r\n      background: false,\r\n      pageSize: {\r\n        default: 10,\r\n        validator: value => value > 0,\r\n      },\r\n      sizeOptions: () => [10, 20, 50, 100],\r\n      itemCount: {\r\n        default: 7,\r\n        validator: value => Number.isInteger(value) && value > 6,\r\n      },\r\n      active: {\r\n        default: 1,\r\n        validator: value => value > 0,\r\n        static: true,\r\n      },\r\n      disabled: false,\r\n      disableItem: {\r\n        default: () => false,\r\n        isFunc: true,\r\n      },\r\n      turnPageCount: 5,\r\n      itemUnit: null,\r\n      plugins: {\r\n        default: () => [],\r\n        validator: value => Array.isArray(value),\r\n      },\r\n      noTitle: false,\r\n      itemTag: 'li',\r\n      listTag: null,\r\n      slots: () => ({}),\r\n    })\r\n\r\n    const { isRtl } = useRtl()\r\n    const nh = useNameHelper('pagination')\r\n    const icons = useIcons()\r\n    const midPagers = ref<number[]>([])\r\n    const currentActive = ref(props.active)\r\n    const currentPageSize = ref(props.pageSize)\r\n    const mode = ref(PaginationMode.LEFT)\r\n    const inPrevEllipsis = ref(false)\r\n    const inNextEllipsis = ref(false)\r\n    const jumpValue = ref(props.active)\r\n    const itemElList = reactive<HTMLElement[]>([])\r\n\r\n    const locale = useLocale('pagination', toRef(props, 'locale'))\r\n\r\n    const { target: wrapper } = useModifier({\r\n      passive: false,\r\n      onKeyDown: (event, modifier) => {\r\n        if (props.disabled) return\r\n\r\n        decide(\r\n          [\r\n            [\r\n              () => modifier.up || modifier.down || modifier.left || modifier.right,\r\n              () => {\r\n                const sign = modifier.up || modifier.left ? -1 : 1\r\n\r\n                if (isClient && document.activeElement) {\r\n                  const index = itemElList.findIndex(el => el === document.activeElement)\r\n\r\n                  if (!~index) return\r\n\r\n                  const target = itemElList[boundRange(index + sign, 0, itemElList.length - 1)]\r\n\r\n                  target.focus()\r\n                }\r\n              },\r\n            ],\r\n            [\r\n              () => modifier.enter || modifier.space,\r\n              () => {\r\n                if (document && document.activeElement) {\r\n                  const index = itemElList.findIndex(el => el === document.activeElement)\r\n\r\n                  if (!~index) {\r\n                    const activeClass = nh.bem('item', 'active')\r\n                    const activeEl = itemElList.find(el => el.classList.contains(activeClass))\r\n\r\n                    activeEl?.focus()\r\n                  }\r\n                }\r\n              },\r\n            ],\r\n          ],\r\n          {\r\n            beforeMatchAny: () => event.preventDefault(),\r\n            afterMatchAny: modifier.resetAll,\r\n          },\r\n        )\r\n      },\r\n    })\r\n\r\n    const className = computed(() => {\r\n      return {\r\n        [nh.b()]: true,\r\n        [nh.bs('vars')]: true,\r\n        [nh.bm('inherit')]: props.inherit,\r\n        [nh.bm(props.size)]: props.size !== 'default',\r\n        [nh.bm('background')]: props.background,\r\n        [nh.bm('no-border')]: props.noBorder,\r\n        [nh.bm('disabled')]: props.disabled,\r\n      }\r\n    })\r\n    const pagerCount = computed(() => {\r\n      return Math.ceil(props.total / (currentPageSize.value || 1)) || 1\r\n    })\r\n    const useEllipsis = computed(() => pagerCount.value > props.itemCount)\r\n    const disabledPrev = computed(() => {\r\n      const count = queryEnabledActive(1, 1)\r\n\r\n      return count >= pagerCount.value || currentActive.value === count\r\n    })\r\n    const disabledNext = computed(() => {\r\n      const count = queryEnabledActive(pagerCount.value, -1)\r\n\r\n      return count <= 1 || currentActive.value === count\r\n    })\r\n    const prevTurnPageTitle = computed(() => {\r\n      return `${locale.value.prev} ${getCountWord(locale.value.page, props.turnPageCount)}`\r\n    })\r\n    const nextTurnPageTitle = computed(() => {\r\n      return `${locale.value.next} ${getCountWord(locale.value.page, props.turnPageCount)}`\r\n    })\r\n    const prevEllipsisTarget = computed(() => {\r\n      if (!useEllipsis.value) return 0\r\n\r\n      let active = queryEnabledActive(currentActive.value - props.turnPageCount, -1)\r\n\r\n      if (active < 1) {\r\n        active = queryEnabledActive(1, 1)\r\n\r\n        if (active >= currentActive.value) return 0\r\n      }\r\n\r\n      return active\r\n    })\r\n    const nextEllipsisTarget = computed(() => {\r\n      if (!useEllipsis.value) return 0\r\n\r\n      let active = queryEnabledActive(currentActive.value + props.turnPageCount, 1)\r\n\r\n      if (active > pagerCount.value) {\r\n        active = queryEnabledActive(pagerCount.value, -1)\r\n\r\n        if (active <= currentActive.value) return 0\r\n      }\r\n\r\n      return active\r\n    })\r\n    const sizeObjectOptions = computed(() => {\r\n      return props.sizeOptions.map(size => {\r\n        return {\r\n          value: size,\r\n          label: `${size} ${locale.value.perPage}`,\r\n        }\r\n      })\r\n    })\r\n    const pluginOrders = computed(() => {\r\n      const plugins = props.plugins\r\n      const pagerPosition = plugins.findIndex(isNull)\r\n\r\n      return {\r\n        total: plugins.findIndex(p => p === 'total') - pagerPosition,\r\n        size: plugins.findIndex(p => p === 'size') - pagerPosition,\r\n        jump: plugins.findIndex(p => p === 'jump') - pagerPosition,\r\n      }\r\n    })\r\n    const jumpInputWidth = computed(() => {\r\n      if (!props.plugins.includes('jump')) return 0\r\n\r\n      let pageCount = 0\r\n\r\n      if (props.plugins.includes('size')) {\r\n        pageCount = Math.ceil(props.total / (Math.min(...props.sizeOptions) || 10))\r\n      } else {\r\n        pageCount = Math.ceil(props.total / (props.pageSize || 10))\r\n      }\r\n\r\n      return pageCount.toString().length * 10 + 30\r\n    })\r\n\r\n    watch(\r\n      () => props.active,\r\n      value => {\r\n        changeActive(value, false)\r\n      },\r\n    )\r\n    watch(() => props.itemCount, computePagers)\r\n    watch(pagerCount, computePagers)\r\n    watch(\r\n      () => props.pageSize,\r\n      value => {\r\n        currentPageSize.value = value\r\n      },\r\n    )\r\n    watch(currentPageSize, (value, prevValue) => {\r\n      emit('update:page-size', value)\r\n      emitEvent(props.onPageSizeChange, value)\r\n\r\n      // 按当前页的第一条数据计算新的页码\r\n      const anchor = Math.ceil((prevValue * (currentActive.value - 1) + 1) / value)\r\n\r\n      let active = queryEnabledActive(anchor, 1)\r\n\r\n      if (active > pagerCount.value) {\r\n        active = queryEnabledActive(anchor - 1, -1)\r\n\r\n        if (active < 1) active = 0\r\n      }\r\n\r\n      currentActive.value = active\r\n      computePagers()\r\n    })\r\n\r\n    expose({ changeActive, handlePrev, handleNext })\r\n\r\n    onMounted(() => {\r\n      nextTick(computePagers)\r\n    })\r\n\r\n    onUpdated(() => {\r\n      if (!wrapper.value) return\r\n\r\n      itemElList.length = 0\r\n      itemElList.push(\r\n        ...Array.from(\r\n          wrapper.value.querySelectorAll<HTMLElement>(\r\n            `${nh.cbe('item')}:not(${nh.cbem('item', 'disabled')})`,\r\n          ),\r\n        ),\r\n      )\r\n    })\r\n\r\n    function queryEnabledActive(active: number, step: number) {\r\n      step = step / Math.abs(step)\r\n\r\n      while (props.disableItem(active)) {\r\n        active += step\r\n\r\n        if (active < 1 || active > pagerCount.value) break\r\n      }\r\n\r\n      return active\r\n    }\r\n\r\n    function handleChange(value: number) {\r\n      if (currentActive.value === value) return\r\n\r\n      currentActive.value = value\r\n      jumpValue.value = value\r\n\r\n      computePagers()\r\n      emit('update:active', value)\r\n      emitEvent(props.onChange, value)\r\n    }\r\n\r\n    function changeActive(active: number, focus = true) {\r\n      active = parseInt(active.toString())\r\n\r\n      if (props.disabled || active < 1 || active > pagerCount.value || props.disableItem(active)) {\r\n        return\r\n      }\r\n\r\n      handleChange(active)\r\n\r\n      if (isClient && focus) {\r\n        const activeEl = itemElList.find(el => el === document.activeElement)\r\n\r\n        activeEl?.blur()\r\n        nextTick(() => {\r\n          itemElList.find(el => el.tabIndex >= 0)?.focus()\r\n        })\r\n      }\r\n    }\r\n\r\n    function handlePrev() {\r\n      if (!disabledPrev.value && !props.disabled) {\r\n        const active = queryEnabledActive(currentActive.value - 1, -1)\r\n\r\n        if (active >= 1) changeActive(active)\r\n      }\r\n    }\r\n\r\n    function handleNext() {\r\n      if (!disabledNext.value && !props.disabled) {\r\n        const active = queryEnabledActive(currentActive.value + 1, 1)\r\n\r\n        if (active <= pagerCount.value) changeActive(active)\r\n      }\r\n    }\r\n\r\n    function computePagers() {\r\n      let pagers: number[]\r\n\r\n      if (pagerCount.value <= props.itemCount) {\r\n        // 未超过最大值，显示所有页号\r\n        pagers = range(pagerCount.value)\r\n      } else {\r\n        const numberCount = props.itemCount - 2 // 显示为数字的页号\r\n        const criticalCount = Math.ceil(props.itemCount / 2) // 切换模式的关键计数\r\n\r\n        if (currentActive.value < criticalCount) {\r\n          // 出现后侧一个省略号，前侧连续\r\n          pagers = range(numberCount)\r\n          pagers.push(pagerCount.value)\r\n\r\n          mode.value = PaginationMode.LEFT\r\n        } else if (currentActive.value <= pagerCount.value - criticalCount) {\r\n          // 出现两个省略号，中间连续\r\n          let count = numberCount - 2\r\n\r\n          // 保持中间数字的页号数目为单数\r\n          if (count % 2 === 0) {\r\n            count -= 1\r\n          }\r\n\r\n          pagers = range(count, currentActive.value - (count - 1) / 2) // 同 Math.floor(count / 2)\r\n          pagers.unshift(1)\r\n          pagers.push(pagerCount.value)\r\n\r\n          mode.value = PaginationMode.CENTER\r\n        } else {\r\n          // 出现前侧一个省略号，后侧连续\r\n          pagers = range(numberCount, pagerCount.value - numberCount + 1)\r\n          pagers.unshift(1)\r\n\r\n          mode.value = PaginationMode.RIGHT\r\n        }\r\n      }\r\n\r\n      if (pagers.length === 1) {\r\n        midPagers.value = []\r\n      }\r\n\r\n      midPagers.value = pagers.slice(1, -1)\r\n    }\r\n\r\n    function enterPrevEllipsis() {\r\n      inPrevEllipsis.value = true\r\n    }\r\n\r\n    function leavePrevEllipsis() {\r\n      inPrevEllipsis.value = false\r\n    }\r\n\r\n    function clickPrevEllipsis() {\r\n      if (!props.disabled && prevEllipsisTarget.value) {\r\n        changeActive(prevEllipsisTarget.value)\r\n      }\r\n    }\r\n\r\n    function enterNextEllipsis() {\r\n      inNextEllipsis.value = true\r\n    }\r\n\r\n    function leaveNextEllipsis() {\r\n      inNextEllipsis.value = false\r\n    }\r\n\r\n    function clickNextEllipsis() {\r\n      if (!props.disabled && nextEllipsisTarget.value) {\r\n        changeActive(nextEllipsisTarget.value)\r\n      }\r\n    }\r\n\r\n    function handleJumpPage(active: number) {\r\n      active = Math.max(Math.min(parseInt(active.toString()), pagerCount.value), 1)\r\n\r\n      const originActive = active\r\n\r\n      if (active !== currentActive.value) {\r\n        const step = active > currentActive.value ? 1 : -1\r\n\r\n        active = queryEnabledActive(originActive, step)\r\n\r\n        if (step > 0 ? active > pagerCount.value : active < 1) {\r\n          active = queryEnabledActive(originActive, -step)\r\n\r\n          if (step > 0 ? active < 1 : active > pagerCount.value) {\r\n            active = 0\r\n          }\r\n        }\r\n\r\n        handleChange(active)\r\n      }\r\n\r\n      nextTick(() => {\r\n        jumpValue.value = currentActive.value\r\n      })\r\n    }\r\n\r\n    function renderPrev(Tag: any) {\r\n      const disabled = props.disabled || disabledPrev.value\r\n      const arrow = isRtl.value ? icons.value.angleRight : icons.value.angleLeft\r\n\r\n      return (\r\n        <Tag\r\n          ref={el => el && !disabledPrev.value && itemElList.push(el as any)}\r\n          class={[\r\n            nh.be('item'),\r\n            nh.bem('item', 'prev'),\r\n            disabled ? nh.bem('item', 'disabled') : '',\r\n          ]}\r\n          title={props.noTitle ? undefined : locale.value.prevPage}\r\n          role={'menuitem'}\r\n          tabindex={'-1'}\r\n          aria-label={locale.value.prevPage}\r\n          aria-hidden={disabled ? 'true' : undefined}\r\n          onClick={handlePrev}\r\n          onKeydownEnter={handlePrev}\r\n          onKeydownSpace={handlePrev}\r\n        >\r\n          {renderSlot(slots, 'prev', { disabled }, () => [\r\n            <Renderer renderer={props.slots.prev} data={{ disabled }}>\r\n              <Icon {...arrow} scale={+(arrow.scale || 1)}></Icon>\r\n            </Renderer>,\r\n          ])}\r\n        </Tag>\r\n      )\r\n    }\r\n\r\n    function renderNext(Tag: any) {\r\n      const disabled = props.disabled || disabledNext.value\r\n      const arrow = isRtl.value ? icons.value.angleLeft : icons.value.angleRight\r\n\r\n      return (\r\n        <Tag\r\n          ref={el => el && !disabledNext.value && itemElList.push(el as any)}\r\n          class={[\r\n            nh.be('item'),\r\n            nh.bem('item', 'next'),\r\n            disabled ? nh.bem('item', 'disabled') : '',\r\n          ]}\r\n          title={props.noTitle ? undefined : locale.value.nextPage}\r\n          role={'menuitem'}\r\n          tabindex={'-1'}\r\n          aria-label={locale.value.nextPage}\r\n          aria-hidden={disabled ? 'true' : undefined}\r\n          onClick={handleNext}\r\n          onKeydownEnter={handleNext}\r\n          onKeydownSpace={handleNext}\r\n        >\r\n          {renderSlot(slots, 'next', { disabled }, () => [\r\n            <Renderer renderer={props.slots.next} data={{ disabled }}>\r\n              <Icon {...arrow} scale={+(arrow.scale || 1)}></Icon>\r\n            </Renderer>,\r\n          ])}\r\n        </Tag>\r\n      )\r\n    }\r\n\r\n    function renderPrevEllipsis(Tag: any) {\r\n      if (!useEllipsis.value || mode.value === PaginationMode.LEFT) return null\r\n\r\n      const disabled = props.disabled || !prevEllipsisTarget.value\r\n\r\n      return (\r\n        <Tag\r\n          ref={el => el && prevEllipsisTarget.value && itemElList.push(el as any)}\r\n          class={{\r\n            [nh.be('item')]: true,\r\n            [nh.bem('item', 'more')]: true,\r\n            [nh.bem('item', 'disabled')]: disabled,\r\n          }}\r\n          title={props.noTitle ? undefined : prevTurnPageTitle.value}\r\n          role={'menuitem'}\r\n          tabindex={'-1'}\r\n          aria-label={prevTurnPageTitle.value}\r\n          onClick={clickPrevEllipsis}\r\n          onKeydownEnter={clickPrevEllipsis}\r\n          onKeydownSpace={clickPrevEllipsis}\r\n          onMouseenter={enterPrevEllipsis}\r\n          onMouseleave={leavePrevEllipsis}\r\n        >\r\n          {createSlotRender(slots, ['prev-jump', 'prevJump'], () => {\r\n            const arrow = isRtl.value ? icons.value.anglesRight : icons.value.anglesLeft\r\n\r\n            return (\r\n              <Transition name={nh.ns('fade')}>\r\n                {!disabled && inPrevEllipsis.value ? (\r\n                  <Icon {...arrow} scale={+(arrow.scale || 1)}></Icon>\r\n                ) : (\r\n                  <Icon\r\n                    {...icons.value.ellipsis}\r\n                    scale={+(icons.value.ellipsis.scale || 1)}\r\n                    style={'position: absolute'}\r\n                  ></Icon>\r\n                )}\r\n              </Transition>\r\n            )\r\n          })({ disabled, entered: inPrevEllipsis.value })}\r\n        </Tag>\r\n      )\r\n    }\r\n\r\n    function renderNextEllipsis(Tag: any) {\r\n      if (!useEllipsis.value || mode.value === PaginationMode.RIGHT) return null\r\n\r\n      const disabled = props.disabled || !nextEllipsisTarget.value\r\n\r\n      return (\r\n        <Tag\r\n          ref={el => el && nextEllipsisTarget.value && itemElList.push(el as any)}\r\n          class={{\r\n            [nh.be('item')]: true,\r\n            [nh.bem('item', 'more')]: true,\r\n            [nh.bem('item', 'disabled')]: disabled,\r\n          }}\r\n          title={props.noTitle ? undefined : nextTurnPageTitle.value}\r\n          role={'menuitem'}\r\n          tabindex={'-1'}\r\n          aria-label={nextTurnPageTitle.value}\r\n          onClick={clickNextEllipsis}\r\n          onKeydownEnter={clickNextEllipsis}\r\n          onKeydownSpace={clickNextEllipsis}\r\n          onMouseenter={enterNextEllipsis}\r\n          onMouseleave={leaveNextEllipsis}\r\n        >\r\n          {createSlotRender(slots, ['next-jump', 'nextJump'], () => {\r\n            const arrow = isRtl.value ? icons.value.anglesLeft : icons.value.anglesRight\r\n\r\n            return (\r\n              <Transition name={nh.ns('fade')}>\r\n                {!disabled && inNextEllipsis.value ? (\r\n                  <Icon {...arrow} scale={+(arrow.scale || 1)}></Icon>\r\n                ) : (\r\n                  <Icon\r\n                    {...icons.value.ellipsis}\r\n                    scale={+(icons.value.ellipsis.scale || 1)}\r\n                    style={'position: absolute'}\r\n                  ></Icon>\r\n                )}\r\n              </Transition>\r\n            )\r\n          })({ disabled: !nextEllipsisTarget.value, entered: inNextEllipsis.value })}\r\n        </Tag>\r\n      )\r\n    }\r\n\r\n    function renderItem(Tag: any, page: number) {\r\n      const disabled = props.disabled || props.disableItem(page)\r\n      const active = currentActive.value === page\r\n\r\n      return (\r\n        <Tag\r\n          ref={el => el && itemElList.push(el as any)}\r\n          class={{\r\n            [nh.be('item')]: true,\r\n            [nh.bem('item', 'disabled')]: disabled,\r\n            [nh.bem('item', 'active')]: active,\r\n          }}\r\n          title={props.noTitle ? undefined : page}\r\n          role={'menuitemradio'}\r\n          tabindex={active ? '0' : '-1'}\r\n          aria-posinset={page}\r\n          aria-setsize={pagerCount.value}\r\n          aria-disabled={disabled ? 'true' : undefined}\r\n          onClick={() => changeActive(page)}\r\n          onKeydownEnter={() => changeActive(page)}\r\n          onKeydownSpace={() => changeActive(page)}\r\n        >\r\n          {renderSlot(slots, 'item', { page, disabled, active }, () => [\r\n            <Renderer renderer={props.slots.item} data={{ page, disabled, active }}>\r\n              {page}\r\n            </Renderer>,\r\n          ])}\r\n        </Tag>\r\n      )\r\n    }\r\n\r\n    function renderTotalPlugin() {\r\n      if (!props.plugins.includes('total')) return null\r\n\r\n      return (\r\n        <div\r\n          class={[nh.be('total'), pluginOrders.value.total < 0 && nh.bem('total', 'prefix')]}\r\n          style={{ order: pluginOrders.value.total }}\r\n        >\r\n          {`${locale.value.total} ${getCountWord(\r\n            props.itemUnit ?? locale.value.itemUnit,\r\n            props.total,\r\n          )}`}\r\n        </div>\r\n      )\r\n    }\r\n\r\n    function renderSizePlugin() {\r\n      if (!props.plugins.includes('size')) return null\r\n\r\n      return (\r\n        <div\r\n          class={[nh.be('size'), pluginOrders.value.size < 0 && nh.bem('size', 'prefix')]}\r\n          style={{ order: pluginOrders.value.size }}\r\n        >\r\n          <Select\r\n            v-model:value={currentPageSize.value}\r\n            inherit\r\n            class={nh.be('size-select')}\r\n            options={sizeObjectOptions.value}\r\n            filter={false}\r\n            multiple={false}\r\n            clearable={false}\r\n          ></Select>\r\n        </div>\r\n      )\r\n    }\r\n\r\n    function renderJumpPlugin() {\r\n      if (!props.plugins.includes('jump')) return null\r\n\r\n      return (\r\n        <div\r\n          class={[nh.be('jump'), pluginOrders.value.jump < 0 && nh.bem('jump', 'prefix')]}\r\n          style={{ order: pluginOrders.value.jump }}\r\n        >\r\n          {locale.value.jumpTo}\r\n          <NumberInput\r\n            v-model:value={jumpValue.value}\r\n            inherit\r\n            class={nh.be('jump-input')}\r\n            clearable={false}\r\n            sync={false}\r\n            style={{ width: `${jumpInputWidth.value}px` }}\r\n            onChange={handleJumpPage}\r\n          ></NumberInput>\r\n          {getCountWordOnly(locale.value.page, 1)}\r\n        </div>\r\n      )\r\n    }\r\n\r\n    return () => {\r\n      const ItemTag = props.itemTag || 'li'\r\n      const ListTag = (props.listTag as any) || (ItemTag === 'li' ? 'ul' : 'div')\r\n\r\n      return (\r\n        <div class={className.value}>\r\n          <ListTag\r\n            ref={wrapper}\r\n            class={nh.be('list')}\r\n            role={'menubar'}\r\n            aria-label={'Pagination'}\r\n            aria-disabled={props.disabled ? 'true' : undefined}\r\n          >\r\n            {renderPrev(ItemTag)}\r\n            {renderItem(ItemTag, 1)}\r\n            {renderPrevEllipsis(ItemTag)}\r\n            {midPagers.value.map(page => renderItem(ItemTag, page))}\r\n            {renderNextEllipsis(ItemTag)}\r\n            {pagerCount.value > 1 && renderItem(ItemTag, pagerCount.value)}\r\n            {renderNext(ItemTag)}\r\n          </ListTag>\r\n          {renderTotalPlugin()}\r\n          {renderSizePlugin()}\r\n          {renderJumpPlugin()}\r\n        </div>\r\n      )\r\n    }\r\n  },\r\n})\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","PaginationMode","defineComponent","name","props","paginationProps","emits","setup","_props","slots","emit","expose","useProps","size","createSizeProp","locale","total","default","validator","value","static","noBorder","background","pageSize","sizeOptions","itemCount","Number","isInteger","active","disabled","disableItem","isFunc","turnPageCount","itemUnit","plugins","Array","isArray","noTitle","itemTag","listTag","isRtl","useRtl","nh","useNameHelper","icons","useIcons","midPagers","ref","currentActive","currentPageSize","mode","LEFT","inPrevEllipsis","inNextEllipsis","jumpValue","itemElList","reactive","useLocale","toRef","target","wrapper","useModifier","passive","onKeyDown","event","modifier","decide","up","down","left","right","sign","isClient","document","activeElement","index","findIndex","el","boundRange","length","focus","enter","space","activeClass","bem","activeEl","find","classList","contains","beforeMatchAny","preventDefault","afterMatchAny","resetAll","className","computed","b","bs","bm","inherit","pagerCount","Math","ceil","useEllipsis","disabledPrev","count","queryEnabledActive","disabledNext","prevTurnPageTitle","prev","getCountWord","page","nextTurnPageTitle","next","prevEllipsisTarget","nextEllipsisTarget","sizeObjectOptions","map","label","perPage","pluginOrders","pagerPosition","isNull","p","jump","jumpInputWidth","includes","pageCount","min","watch","changeActive","computePagers","prevValue","emitEvent","onPageSizeChange","anchor","handlePrev","handleNext","onMounted","nextTick","onUpdated","push","from","querySelectorAll","cbe","cbem","step","abs","handleChange","onChange","parseInt","blur","tabIndex","pagers","range","numberCount","criticalCount","unshift","CENTER","RIGHT","slice","enterPrevEllipsis","leavePrevEllipsis","clickPrevEllipsis","enterNextEllipsis","leaveNextEllipsis","clickNextEllipsis","handleJumpPage","max","originActive","renderPrev","Tag","_slot","arrow","angleRight","angleLeft","_createVNode","be","undefined","prevPage","renderSlot","Renderer","Icon","_mergeProps","scale","renderNext","_slot2","nextPage","renderPrevEllipsis","_slot3","createSlotRender","anglesRight","anglesLeft","Transition","ns","ellipsis","entered","renderNextEllipsis","_slot4","renderItem","_slot5","onClick","onKeydownEnter","onKeydownSpace","item","renderTotalPlugin","order","renderSizePlugin","Select","$event","renderJumpPlugin","jumpTo","NumberInput","width","getCountWordOnly","ItemTag","ListTag"],"mappings":"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"}