{"version":3,"file":"pagination.mjs","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 { buildProps, debugWarn, definePropType, mutable } from '@bigin/utils'\nimport { useLocale, useNamespace } from '@bigin/hooks'\nimport { bPaginationKey } from '@bigin/tokens'\n\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 { ExtractPropTypes, VNode } from 'vue'\n\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  total: Number,\n  pageSize: Number,\n  defaultPageSize: Number,\n  currentPage: Number,\n  defaultCurrentPage: Number,\n  pageCount: Number,\n  pagerCount: {\n    type: Number,\n    validator: (value: unknown) => {\n      return (\n        typeof value === 'number' &&\n        Math.trunc(value) === value &&\n        value > 4 &&\n        value < 22 &&\n        value % 2 === 1\n      )\n    },\n    default: 7,\n  },\n  layout: {\n    type: String,\n    default: (['sizes', 'total', '->', 'pager'] as LayoutKey[]).join(', '),\n  },\n  pageSizes: {\n    type: definePropType<number[]>(Array),\n    default: () => mutable([10, 20, 30, 40, 50, 100] as const),\n  },\n  popperClass: {\n    type: String,\n    default: '',\n  },\n  prevText: {\n    type: String,\n    default: '',\n  },\n  nextText: {\n    type: String,\n    default: '',\n  },\n  small: Boolean,\n  background: Boolean,\n  disabled: Boolean,\n  hideOnSinglePage: Boolean,\n} as const)\nexport type PaginationProps = ExtractPropTypes<typeof paginationProps>\n\nexport const paginationEmits = {\n  'update:current-page': (val: number) => typeof val === 'number',\n  'update:page-size': (val: number) => typeof val === 'number',\n  'size-change': (val: number) => typeof val === 'number',\n  'current-change': (val: number) => typeof val === 'number',\n  'prev-click': (val: number) => typeof val === 'number',\n  'next-click': (val: number) => typeof val === 'number',\n}\nexport type PaginationEmits = typeof paginationEmits\n\nconst componentName = 'BPagination'\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    // 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      // <b-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    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(bPaginationKey, {\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('b.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          onClick: prev,\n          background: props.background,\n        }),\n        jumper: h(Jumper, { size: props.small ? 'small' : 'default' }),\n        pager: h(Pager, {\n          currentPage: currentPageBridge.value,\n          pageCount: pageCountBridge.value,\n          pagerCount: props.pagerCount,\n          onChange: handleCurrentChange,\n          disabled: props.disabled,\n          background: props.background,\n        }),\n        next: h(Next, {\n          disabled: props.disabled,\n          currentPage: currentPageBridge.value,\n          pageCount: pageCountBridge.value,\n          nextText: props.nextText,\n          onClick: next,\n          background: props.background,\n        }),\n        sizes: h(Sizes, {\n          pageSize: pageSizeBridge.value,\n          pageSizes: props.pageSizes,\n          popperClass: props.popperClass,\n          disabled: props.disabled,\n          size: props.small ? 'small' : 'default',\n        }),\n        slot: slots?.default?.() ?? null,\n        total: h(Total, {\n          total: isAbsent(props.total) ? 0 : props.total,\n          current: isAbsent(props.currentPage) ? 1 : props.currentPage,\n          sizes: isAbsent(props.pageSize) ? 10 : props.pageSize,\n        }),\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          role: 'pagination',\n          'aria-label': 'pagination',\n          class: [\n            ns.b(),\n            ns.is('background', props.background),\n            {\n              [ns.m('small')]: props.small,\n            },\n          ],\n          dataTestName: 'pagination',\n        },\n        rootChildren\n      )\n    }\n  },\n})\n"],"names":[],"mappings":"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"}