{"version":3,"file":"page.mjs","sources":["../../../../../../packages/components/page/src/page.ts"],"sourcesContent":["import {\r\n  h,\r\n  ref,\r\n  provide,\r\n  computed,\r\n  defineComponent,\r\n  getCurrentInstance,\r\n  watch,\r\n} from 'vue'\r\nimport { useLocale } from '@sgui-plus/hooks'\r\nimport { debugWarn } from '@sgui-plus/utils/error'\r\nimport { buildProps, definePropType } from '@sgui-plus/utils/props'\r\nimport { mutable } from '@sgui-plus/utils/types'\r\nimport { PageContextKey } from './constants'\r\n\r\nimport Prev from './components/prev.vue'\r\nimport Next from './components/next.vue'\r\nimport Sizes from './components/sizes.vue'\r\nimport Jumper from './components/jumper.vue'\r\nimport Total from './components/total.vue'\r\nimport Pager from './components/pager.vue'\r\nimport Pages from './components/pages.vue'\r\nimport Holder from './components/holder.vue'\r\n\r\nimport type { VNode, ExtractPropTypes } from 'vue'\r\n\r\n/**\r\n * It it user's responsibility to guarantee that the value of props.total... is number\r\n * (same as pageSize, currentPage, pageCount)\r\n * Otherwise we can reasonable infer that the corresponding field is absent\r\n */\r\nconst isAbsent = (v: unknown): v is undefined => typeof v !== 'number'\r\n\r\ntype LayoutKey =\r\n  | 'prev'\r\n  | 'pager'\r\n  | 'next'\r\n  | 'jumper'\r\n  | 'total'\r\n  | 'sizes'\r\n  | 'slot'\r\n  | 'pages'\r\n  | 'holder'\r\n\r\nexport const pageProps = buildProps({\r\n  total: Number,\r\n  pageSize: Number,\r\n  defaultPageSize: Number,\r\n  currentPage: Number,\r\n  defaultCurrentPage: Number,\r\n  pageCount: Number,\r\n  pagerCount: {\r\n    type: Number,\r\n    validator: (value: unknown) => {\r\n      return (\r\n        typeof value === 'number' &&\r\n        (value | 0) === value &&\r\n        value > 4 &&\r\n        value < 22 &&\r\n        value % 2 === 1\r\n      )\r\n    },\r\n    default: 7,\r\n  },\r\n  layout: {\r\n    type: String,\r\n    default: (\r\n      ['total', 'holder', 'prev', 'pager', 'next', 'sizes'] as LayoutKey[]\r\n    ).join(', '),\r\n  },\r\n  pageSizes: {\r\n    type: definePropType<number[]>(Array),\r\n    default: () => mutable([10, 20, 30, 40, 50, 100] as const),\r\n  },\r\n  popperClass: {\r\n    type: String,\r\n    default: '',\r\n  },\r\n  prevText: {\r\n    type: String,\r\n    default: '',\r\n  },\r\n  nextText: {\r\n    type: String,\r\n    default: '',\r\n  },\r\n  type: String,\r\n  size: {\r\n    type: String,\r\n    validator: (value: unknown) => {\r\n      return (\r\n        typeof value === 'string' &&\r\n        ['default', 'small'].includes(value)\r\n      )\r\n    },\r\n    default: 'default'\r\n  },\r\n  disabled: Boolean,\r\n  hideOnSinglePage: Boolean,\r\n  placement: {\r\n    type: String,\r\n    default: 'bottom',\r\n  },\r\n  transfer: {\r\n    type: Boolean,\r\n    default: true,\r\n  },\r\n  activeColor: String,\r\n  activeBackground : String,\r\n  isLessPages: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  showTotal: {\r\n    type: Boolean,\r\n    default: true,\r\n  },\r\n  showPages: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  showJumper: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  showSizes: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  showFirstAndLast: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  justify: {\r\n    type: String,\r\n    default: 'left'\r\n  }\r\n} as const)\r\nexport type PageProps = ExtractPropTypes<typeof pageProps>\r\n\r\nexport const pageEmits = {\r\n  'update:current-page': (val: number) => typeof val === 'number',\r\n  'update:page-size': (val: number) => typeof val === 'number',\r\n  'on-change': (currentPage: number, pageSize: number) => typeof currentPage === 'number',\r\n}\r\nexport type PageEmits = typeof pageEmits\r\n\r\nconst componentName = 'SgPage'\r\nexport default defineComponent({\r\n  name: componentName,\r\n\r\n  props: pageProps,\r\n  emits: pageEmits,\r\n\r\n  setup(props, { emit, slots }) {\r\n    const { t } = useLocale()\r\n    const vnodeProps = getCurrentInstance()!.vnode.props || {}\r\n    // we can find @xxx=\"xxx\" props on `vnodeProps` to check if user bind corresponding events\r\n    const hasCurrentPageListener =\r\n      'onUpdate:currentPage' in vnodeProps ||\r\n      'onUpdate:current-page' in vnodeProps ||\r\n      'onOnChange' in vnodeProps\r\n    const hasPageSizeListener =\r\n      'onUpdate:pageSize' in vnodeProps ||\r\n      'onUpdate:page-size' in vnodeProps ||\r\n      'onOnChange' in vnodeProps\r\n    const assertValidUsage = computed(() => {\r\n      // Users have to set either one, otherwise count of pages cannot be determined\r\n      if (isAbsent(props.total) && isAbsent(props.pageCount)) return false\r\n      // <sg-page ...otherProps :current-page=\"xxx\" /> without corresponding listener is forbidden now\r\n      // Users have to use two way binding of `currentPage`\r\n      // If users just want to provide a default value, `defaultCurrentPage` is here for you\r\n      if (!isAbsent(props.currentPage) && !hasCurrentPageListener) return false\r\n      // When you want to change sizes, things get more complex, detailed below\r\n      // Basically the most important value we need is page count\r\n      // either directly from props.pageCount\r\n      // or calculated from props.total\r\n      // we will take props.pageCount precedence over props.total\r\n      if (props.layout.includes('sizes')) {\r\n        if (!isAbsent(props.pageCount)) {\r\n          // if props.pageCount is assign by user, then user have to watch pageSize change\r\n          // and recalculate pageCount\r\n          if (!hasPageSizeListener) return false\r\n        } else if (!isAbsent(props.total)) {\r\n          // Otherwise, we will see if user have props.pageSize defined\r\n          // If so, meaning user want to have pageSize controlled himself/herself from component\r\n          // Thus page size listener is required\r\n          // users are account for page size change\r\n          if (!isAbsent(props.pageSize)) {\r\n            if (!hasPageSizeListener) {\r\n              return false\r\n            }\r\n          } else {\r\n            // (else block just for explaination)\r\n            // else page size is controlled by sg-page internally\r\n          }\r\n        }\r\n      }\r\n      return true\r\n    })\r\n\r\n    const innerPageSize = ref(\r\n      isAbsent(props.defaultPageSize) ? 10 : props.defaultPageSize\r\n    )\r\n    const innerCurrentPage = ref(\r\n      isAbsent(props.defaultCurrentPage) ? 1 : props.defaultCurrentPage\r\n    )\r\n    const pageSizeBridge = computed({\r\n      get() {\r\n        return isAbsent(props.pageSize) ? innerPageSize.value : props.pageSize\r\n      },\r\n      set(v: number) {\r\n        if (isAbsent(props.pageSize)) {\r\n          innerPageSize.value = v\r\n        }\r\n        if (hasPageSizeListener) {\r\n          emit('update:page-size', v)\r\n          emit('on-change', currentPageBridge.value, v)\r\n        }\r\n      },\r\n    })\r\n\r\n    const pageCountBridge = computed<number>(() => {\r\n      let pageCount = 0\r\n      if (!isAbsent(props.pageCount)) {\r\n        pageCount = props.pageCount\r\n      } else if (!isAbsent(props.total)) {\r\n        pageCount = Math.max(1, Math.ceil(props.total / pageSizeBridge.value))\r\n      }\r\n      return pageCount\r\n    })\r\n\r\n    const currentPageBridge = computed<number>({\r\n      get() {\r\n        return isAbsent(props.currentPage)\r\n          ? innerCurrentPage.value\r\n          : props.currentPage\r\n      },\r\n      set(v) {\r\n        let newCurrentPage = v\r\n        if (v < 1) {\r\n          newCurrentPage = 1\r\n        } else if (v > pageCountBridge.value) {\r\n          newCurrentPage = pageCountBridge.value\r\n        }\r\n        if (isAbsent(props.currentPage)) {\r\n          innerCurrentPage.value = newCurrentPage\r\n        }\r\n        if (hasCurrentPageListener) {\r\n          emit('update:current-page', newCurrentPage)\r\n          emit('on-change', newCurrentPage, pageSizeBridge.value)\r\n        }\r\n      },\r\n    })\r\n\r\n    watch(pageCountBridge, (val) => {\r\n      if (currentPageBridge.value > val) currentPageBridge.value = val\r\n    })\r\n\r\n    function handleCurrentChange(val: number) {\r\n      currentPageBridge.value = val\r\n    }\r\n\r\n    function handleSizeChange(val: number) {\r\n      pageSizeBridge.value = val\r\n      const newPageCount = pageCountBridge.value\r\n      if (currentPageBridge.value > newPageCount) {\r\n        currentPageBridge.value = newPageCount\r\n      }\r\n    }\r\n\r\n    function prev() {\r\n      if (props.disabled) return\r\n      currentPageBridge.value -= 1\r\n    }\r\n\r\n    function next() {\r\n      if (props.disabled) return\r\n      currentPageBridge.value += 1\r\n    }\r\n\r\n    function changePage(page) {\r\n      if (props.disabled) return\r\n      currentPageBridge.value = page\r\n    }\r\n\r\n    function handelPageClick(val: number) {\r\n      handleCurrentChange(val)\r\n    }\r\n\r\n    function addClass(element: any, cls: string) {\r\n      if (element) {\r\n        if (!element.props) {\r\n          element.props = {}\r\n        }\r\n        element.props.class = [element.props.class, cls].join(' ')\r\n      }\r\n    }\r\n\r\n    provide(PageContextKey, {\r\n      pageCount: pageCountBridge,\r\n      disabled: computed(() => props.disabled),\r\n      currentPage: currentPageBridge,\r\n      changeEvent: handleCurrentChange,\r\n      handleSizeChange,\r\n    })\r\n\r\n    return () => {\r\n      if (!assertValidUsage.value) {\r\n        debugWarn(componentName, t('sg.page.deprecationWarning'))\r\n        return null\r\n      }\r\n      if (!props.layout) return null\r\n      if (props.hideOnSinglePage && pageCountBridge.value <= 1) return null\r\n      const rootChildren: Array<VNode | VNode[] | null> = []\r\n\r\n      const TEMPLATE_MAP: Record<\r\n        Exclude<LayoutKey, '->'>,\r\n        VNode | VNode[] | null\r\n      > = {\r\n        prev: h(Prev, {\r\n          disabled: props.disabled,\r\n          currentPage: currentPageBridge.value,\r\n          prevText: props.prevText,\r\n          onClick: prev,\r\n          onChangePage: changePage,\r\n          showFirstAndLast: props.showFirstAndLast,\r\n        }),\r\n        jumper: h(Jumper, {\r\n          showJumper: props.showJumper,\r\n        }),\r\n        pager: h(Pager, {\r\n          currentPage: currentPageBridge.value,\r\n          pageCount: pageCountBridge.value,\r\n          pagerCount: props.pagerCount,\r\n          onChange: handelPageClick,\r\n          disabled: props.disabled,\r\n          activeColor: props.activeColor,\r\n          activeBackground : props.activeBackground,\r\n          type: props.type,\r\n          isLessPages: props.isLessPages,\r\n        }),\r\n        next: h(Next, {\r\n          disabled: props.disabled,\r\n          currentPage: currentPageBridge.value,\r\n          pageCount: pageCountBridge.value,\r\n          nextText: props.nextText,\r\n          onClick: next,\r\n          onChangePage: changePage,\r\n          showFirstAndLast: props.showFirstAndLast,\r\n        }),\r\n        sizes: h(Sizes, {\r\n          pageSize: pageSizeBridge.value,\r\n          pageSizes: props.pageSizes,\r\n          popperClass: props.popperClass,\r\n          disabled: props.disabled,\r\n          size: props.size,\r\n          placement: props.placement,\r\n          transfer: props.transfer,\r\n          showSizes: props.showSizes,\r\n        }),\r\n        slot: slots?.default?.() ?? null,\r\n        total: h(Total, {\r\n          total: isAbsent(props.total) ? 0 : props.total,\r\n          showTotal: props.showTotal,\r\n        }),\r\n        pages: h(Pages, {\r\n          pages: pageCountBridge.value,\r\n          showPages: props.showPages\r\n        }),\r\n        holder: h(Holder)\r\n      }\r\n\r\n      const components = props.layout\r\n        .split(',')\r\n        .map((item: string) => item.trim()) as LayoutKey[]\r\n\r\n      components.forEach((c) => {\r\n        rootChildren.push(TEMPLATE_MAP[c])\r\n      })\r\n\r\n      addClass(rootChildren[0], 'is-first')\r\n      addClass(rootChildren[rootChildren.length - 1], 'is-last')\r\n\r\n      return h(\r\n        'div',\r\n        {\r\n          role: 'page',\r\n          'aria-label': 'page',\r\n          class: [\r\n            'sg-page',\r\n            {\r\n              'sg-page--small': props.size === 'small',\r\n              [`sg-page--${props.type}`]: props.type,\r\n              [`sg-page--${props.justify}`]: true\r\n            }\r\n          ],\r\n          style: props.type && props.activeColor ? {\r\n            '--sg-page-active-color': props.activeColor\r\n          } : {}\r\n        },\r\n        rootChildren\r\n      )\r\n    }\r\n  },\r\n})\r\n"],"names":[],"mappings":"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"}