{"version":3,"file":"VPagination.mjs","names":["VBtn","useDisplay","makeBorderProps","makeComponentProps","provideDefaults","makeDensityProps","makeElevationProps","IconValue","useLocale","useRtl","useProxiedModel","useRefs","useResizeObserver","makeRoundedProps","makeSizeProps","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","computed","nextTick","shallowRef","toRef","createRange","genericComponent","keyValues","propsFactory","useRender","makeVPaginationProps","activeColor","String","start","type","Number","default","modelValue","props","disabled","Boolean","length","validator","val","totalVisible","firstIcon","prevIcon","nextIcon","lastIcon","ariaLabel","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","tag","variant","VPagination","name","emits","value","first","prev","next","last","setup","_ref","slots","emit","page","t","n","isRtl","themeClasses","width","maxButtons","undefined","scoped","resizeRef","entries","target","contentRect","firstItem","querySelector","totalWidth","itemWidth","offsetWidth","parseFloat","getComputedStyle","marginRight","getMax","parseInt","minButtons","Math","max","floor","toFixed","range","isNaN","MAX_SAFE_INTEGER","even","middle","left","right","rangeLength","rangeStart","ceil","setValue","e","event","preventDefault","refs","updateRef","VPaginationBtn","color","border","density","size","rounded","elevation","items","map","item","index","ref","isActive","key","icon","onClick","controls","prevDisabled","nextDisabled","updateFocus","currentIndex","$el","focus","onKeydown","_createVNode","class","style","_mergeProps"],"sources":["../../../src/components/VPagination/VPagination.tsx"],"sourcesContent":["// Styles\nimport './VPagination.sass'\n\n// Components\nimport { VBtn } from '../VBtn'\n\n// Composables\nimport { useDisplay } from '@/composables'\nimport { makeBorderProps } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRefs } from '@/composables/refs'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { computed, nextTick, shallowRef, toRef } from 'vue'\nimport { createRange, genericComponent, keyValues, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance } from 'vue'\n\ntype ItemSlot = {\n  isActive: boolean\n  key: string | number\n  page: string\n  props: Record<string, any>\n}\n\ntype ControlSlot = {\n  icon: IconValue\n  onClick: (e: Event) => void\n  disabled: boolean\n  'aria-label': string\n  'aria-disabled': boolean\n}\n\nexport type VPaginationSlots = {\n  item: ItemSlot\n  first: ControlSlot\n  prev: ControlSlot\n  next: ControlSlot\n  last: ControlSlot\n}\n\nexport const makeVPaginationProps = propsFactory({\n  activeColor: String,\n  start: {\n    type: [Number, String],\n    default: 1,\n  },\n  modelValue: {\n    type: Number,\n    default: (props: any) => props.start as number,\n  },\n  disabled: Boolean,\n  length: {\n    type: [Number, String],\n    default: 1,\n    validator: (val: number) => val % 1 === 0,\n  },\n  totalVisible: [Number, String],\n  firstIcon: {\n    type: IconValue,\n    default: '$first',\n  },\n  prevIcon: {\n    type: IconValue,\n    default: '$prev',\n  },\n  nextIcon: {\n    type: IconValue,\n    default: '$next',\n  },\n  lastIcon: {\n    type: IconValue,\n    default: '$last',\n  },\n  ariaLabel: {\n    type: String,\n    default: '$vuetify.pagination.ariaLabel.root',\n  },\n  pageAriaLabel: {\n    type: String,\n    default: '$vuetify.pagination.ariaLabel.page',\n  },\n  currentPageAriaLabel: {\n    type: String,\n    default: '$vuetify.pagination.ariaLabel.currentPage',\n  },\n  firstAriaLabel: {\n    type: String,\n    default: '$vuetify.pagination.ariaLabel.first',\n  },\n  previousAriaLabel: {\n    type: String,\n    default: '$vuetify.pagination.ariaLabel.previous',\n  },\n  nextAriaLabel: {\n    type: String,\n    default: '$vuetify.pagination.ariaLabel.next',\n  },\n  lastAriaLabel: {\n    type: String,\n    default: '$vuetify.pagination.ariaLabel.last',\n  },\n  ellipsis: {\n    type: String,\n    default: '...',\n  },\n  showFirstLastPage: Boolean,\n\n  ...makeBorderProps(),\n  ...makeComponentProps(),\n  ...makeDensityProps(),\n  ...makeElevationProps(),\n  ...makeRoundedProps(),\n  ...makeSizeProps(),\n  ...makeTagProps({ tag: 'nav' }),\n  ...makeThemeProps(),\n  ...makeVariantProps({ variant: 'text' } as const),\n}, 'VPagination')\n\nexport const VPagination = genericComponent<VPaginationSlots>()({\n  name: 'VPagination',\n\n  props: makeVPaginationProps(),\n\n  emits: {\n    'update:modelValue': (value: number) => true,\n    first: (value: number) => true,\n    prev: (value: number) => true,\n    next: (value: number) => true,\n    last: (value: number) => true,\n  },\n\n  setup (props, { slots, emit }) {\n    const page = useProxiedModel(props, 'modelValue')\n    const { t, n } = useLocale()\n    const { isRtl } = useRtl()\n    const { themeClasses } = provideTheme(props)\n    const { width } = useDisplay()\n    const maxButtons = shallowRef(-1)\n\n    provideDefaults(undefined, { scoped: true })\n\n    const { resizeRef } = useResizeObserver((entries: ResizeObserverEntry[]) => {\n      if (!entries.length) return\n\n      const { target, contentRect } = entries[0]\n\n      const firstItem = target.querySelector('.v-pagination__list > *') as HTMLElement\n\n      if (!firstItem) return\n\n      const totalWidth = contentRect.width\n      const itemWidth =\n        firstItem.offsetWidth +\n        parseFloat(getComputedStyle(firstItem).marginRight) * 2\n\n      maxButtons.value = getMax(totalWidth, itemWidth)\n    })\n\n    const length = computed(() => parseInt(props.length, 10))\n    const start = computed(() => parseInt(props.start, 10))\n\n    const totalVisible = computed(() => {\n      if (props.totalVisible != null) return parseInt(props.totalVisible, 10)\n      else if (maxButtons.value >= 0) return maxButtons.value\n      return getMax(width.value, 58)\n    })\n\n    function getMax (totalWidth: number, itemWidth: number) {\n      const minButtons = props.showFirstLastPage ? 5 : 3\n      return Math.max(0, Math.floor(\n        // Round to two decimal places to avoid floating point errors\n        +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)\n      ))\n    }\n\n    const range = computed(() => {\n      if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return []\n\n      if (totalVisible.value <= 0) return []\n      else if (totalVisible.value === 1) return [page.value]\n\n      if (length.value <= totalVisible.value) {\n        return createRange(length.value, start.value)\n      }\n\n      const even = totalVisible.value % 2 === 0\n      const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2)\n      const left = even ? middle : middle + 1\n      const right = length.value - middle\n\n      if (left - page.value >= 0) {\n        return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value]\n      } else if (page.value - right >= (even ? 1 : 0)) {\n        const rangeLength = totalVisible.value - 1\n        const rangeStart = length.value - rangeLength + start.value\n        return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)]\n      } else {\n        const rangeLength = Math.max(1, totalVisible.value - 3)\n        const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value\n        return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value]\n      }\n    })\n\n    // TODO: 'first' | 'prev' | 'next' | 'last' does not work here?\n    function setValue (e: Event, value: number, event?: any) {\n      e.preventDefault()\n      page.value = value\n      event && emit(event, value)\n    }\n\n    const { refs, updateRef } = useRefs<ComponentPublicInstance>()\n\n    provideDefaults({\n      VPaginationBtn: {\n        color: toRef(props, 'color'),\n        border: toRef(props, 'border'),\n        density: toRef(props, 'density'),\n        size: toRef(props, 'size'),\n        variant: toRef(props, 'variant'),\n        rounded: toRef(props, 'rounded'),\n        elevation: toRef(props, 'elevation'),\n      },\n    })\n\n    const items = computed(() => {\n      return range.value.map((item, index) => {\n        const ref = (e: any) => updateRef(e, index)\n\n        if (typeof item === 'string') {\n          return {\n            isActive: false,\n            key: `ellipsis-${index}`,\n            page: item,\n            props: {\n              ref,\n              ellipsis: true,\n              icon: true,\n              disabled: true,\n            },\n          }\n        } else {\n          const isActive = item === page.value\n          return {\n            isActive,\n            key: item,\n            page: n(item),\n            props: {\n              ref,\n              ellipsis: false,\n              icon: true,\n              disabled: !!props.disabled || +props.length < 2,\n              color: isActive ? props.activeColor : props.color,\n              'aria-current': isActive,\n              'aria-label': t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),\n              onClick: (e: Event) => setValue(e, item),\n            },\n          }\n        }\n      })\n    })\n\n    const controls = computed(() => {\n      const prevDisabled = !!props.disabled || page.value <= start.value\n      const nextDisabled = !!props.disabled || page.value >= start.value + length.value - 1\n\n      return {\n        first: props.showFirstLastPage ? {\n          icon: isRtl.value ? props.lastIcon : props.firstIcon,\n          onClick: (e: Event) => setValue(e, start.value, 'first'),\n          disabled: prevDisabled,\n          'aria-label': t(props.firstAriaLabel),\n          'aria-disabled': prevDisabled,\n        } : undefined,\n        prev: {\n          icon: isRtl.value ? props.nextIcon : props.prevIcon,\n          onClick: (e: Event) => setValue(e, page.value - 1, 'prev'),\n          disabled: prevDisabled,\n          'aria-label': t(props.previousAriaLabel),\n          'aria-disabled': prevDisabled,\n        },\n        next: {\n          icon: isRtl.value ? props.prevIcon : props.nextIcon,\n          onClick: (e: Event) => setValue(e, page.value + 1, 'next'),\n          disabled: nextDisabled,\n          'aria-label': t(props.nextAriaLabel),\n          'aria-disabled': nextDisabled,\n        },\n        last: props.showFirstLastPage ? {\n          icon: isRtl.value ? props.firstIcon : props.lastIcon,\n          onClick: (e: Event) => setValue(e, start.value + length.value - 1, 'last'),\n          disabled: nextDisabled,\n          'aria-label': t(props.lastAriaLabel),\n          'aria-disabled': nextDisabled,\n        } : undefined,\n      }\n    })\n\n    function updateFocus () {\n      const currentIndex = page.value - start.value\n      refs.value[currentIndex]?.$el.focus()\n    }\n\n    function onKeydown (e: KeyboardEvent) {\n      if (e.key === keyValues.left && !props.disabled && page.value > +props.start) {\n        page.value = page.value - 1\n        nextTick(updateFocus)\n      } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {\n        page.value = page.value + 1\n        nextTick(updateFocus)\n      }\n    }\n\n    useRender(() => (\n      <props.tag\n        ref={ resizeRef }\n        class={[\n          'v-pagination',\n          themeClasses.value,\n          props.class,\n        ]}\n        style={ props.style }\n        role=\"navigation\"\n        aria-label={ t(props.ariaLabel) }\n        onKeydown={ onKeydown }\n        data-test=\"v-pagination-root\"\n      >\n        <ul class=\"v-pagination__list\">\n          { props.showFirstLastPage && (\n            <li key=\"first\" class=\"v-pagination__first\" data-test=\"v-pagination-first\">\n              { slots.first ? slots.first(controls.value.first!) : (\n                <VBtn _as=\"VPaginationBtn\" { ...controls.value.first } />\n              )}\n            </li>\n          )}\n\n          <li key=\"prev\" class=\"v-pagination__prev\" data-test=\"v-pagination-prev\">\n            { slots.prev ? slots.prev(controls.value.prev) : (\n              <VBtn _as=\"VPaginationBtn\" { ...controls.value.prev } />\n            )}\n          </li>\n\n          { items.value.map((item, index) => (\n            <li\n              key={ item.key }\n              class={[\n                'v-pagination__item',\n                {\n                  'v-pagination__item--is-active': item.isActive,\n                },\n              ]}\n              data-test=\"v-pagination-item\"\n            >\n              { slots.item ? slots.item(item) : (\n                <VBtn _as=\"VPaginationBtn\" { ...item.props }>{ item.page }</VBtn>\n              )}\n            </li>\n          ))}\n\n          <li\n            key=\"next\"\n            class=\"v-pagination__next\"\n            data-test=\"v-pagination-next\"\n          >\n            { slots.next ? slots.next(controls.value.next) : (\n              <VBtn _as=\"VPaginationBtn\" { ...controls.value.next } />\n            )}\n          </li>\n\n          { props.showFirstLastPage && (\n            <li\n              key=\"last\"\n              class=\"v-pagination__last\"\n              data-test=\"v-pagination-last\"\n            >\n              { slots.last ? slots.last(controls.value.last!) : (\n                <VBtn _as=\"VPaginationBtn\" { ...controls.value.last } />\n              )}\n            </li>\n          )}\n        </ul>\n      </props.tag>\n    ))\n\n    return {}\n  },\n})\n\nexport type VPagination = InstanceType<typeof VPagination>\n"],"mappings":"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","ignoreList":[]}