{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/table-page/src/index.ts"],"sourcesContent":["import {\n  computed,\n  defineComponent,\n  h,\n  reactive,\n  ref,\n  vShow,\n  withDirectives,\n} from 'vue'\nimport { ElEmpty, useNamespace, vLoading } from 'element-plus'\nimport { DIV_TAG } from '@element-plus/constants'\nimport { useTablePageConfig } from '@element-plus/components/config-provider-v2'\nimport EpTable from './table'\nimport EpPagination from './pagination'\nimport { tablePageProps } from './table-page'\nimport type { IQueryParams } from './types'\n\nexport default defineComponent({\n  name: 'ElTablePage',\n  props: {\n    ...tablePageProps,\n  },\n  setup(props, { attrs, slots, expose, emit }) {\n    const epTableRef = ref()\n    const pageTableRef = ref()\n    const headerWrapperRef = ref()\n    const tableWrapperRef = ref()\n    const footerWrapperRef = ref()\n\n    const ns = useNamespace('table')\n    const ROOT_PREFIX = ns.b('page')\n    const TABLE_PREFIX = ns.b('wrapper')\n\n    const { tablePageConfig } = useTablePageConfig()\n\n    const pagination = computed(() => {\n      return {\n        ...tablePageConfig.value.pagination,\n        ...props.pagination,\n      }\n    })\n    const firstPageSize = computed(\n      () =>\n        pagination.value.defaultPageSize ??\n        pagination.value.pageSizes?.[0] ??\n        10\n    )\n    const config = computed(() => {\n      return {\n        ...tablePageConfig.value.config,\n        ...props.config,\n      }\n    })\n    const currentPageKey = computed(() => config.value.currentPage)\n    const pageSizeKey = computed(() => config.value.pageSize)\n    const totalKey = computed(() => config.value.total)\n    const isEmpty = computed(\n      () => state.loading === false && state.tableData.length === 0\n    )\n\n    const state: any = reactive({\n      [currentPageKey.value]: 1,\n      [pageSizeKey.value]: firstPageSize.value,\n      [totalKey.value]: 0,\n      loading: false,\n      tableData: [],\n    })\n\n    // methods\n    const query = async (params: IQueryParams = {}) => {\n      const currentPageValue =\n        params[currentPageKey.value] ?? state[currentPageKey.value]\n      const pageSizeValue =\n        params[pageSizeKey.value] ?? state[pageSizeKey.value]\n      state[currentPageKey.value] = currentPageValue\n      state[pageSizeKey.value] = pageSizeValue\n\n      return new Promise((resolve, reject) => {\n        state.loading = true\n        props?.httpRequest?.({\n          params: {\n            [currentPageKey.value]: currentPageValue,\n            [pageSizeKey.value]: pageSizeValue,\n            ...params,\n          },\n          resolve: ({ list, total }: { list: any; total: number }) => {\n            state.loading = false\n            state.tableData = list\n            state[totalKey.value] = total ?? 0\n            emit('data-change', state)\n            return resolve(state)\n          },\n          reject: (e: Error) => {\n            state.loading = false\n            emit('data-change', state)\n            return reject(e)\n          },\n        })\n      })\n    }\n    if (props.firstInvoke) {\n      query()\n    }\n\n    const handleSizeChange = (pageSize: number) => {\n      state[pageSizeKey.value] = pageSize\n      // query()\n    }\n    const handleCurrentChange = (currentPage: number) => {\n      state[currentPageKey.value] = currentPage\n      // query()\n    }\n\n    const handleChange = () => query()\n\n    // public api\n    const request = ({ ...args }) => {\n      return query(args)\n    }\n\n    const getTable = () => epTableRef.value?.getTable()\n\n    const getState = () => state\n\n    // 获取当前页的数量\n    const getCurrentPageCounts = (\n      currentPage: number,\n      pageSize: number,\n      total: number\n    ) => {\n      const pages = Math.ceil(total / pageSize)\n      const prevSize = (currentPage - 1) * pageSize\n      return total <= pageSize\n        ? total\n        : currentPage === pages\n        ? total % prevSize\n        : pageSize\n    }\n\n    // 获取前一页的currentPage(删除操作时，可以调用该方法获取正确的currentPage来调用后端接口)\n    const getCurrentPageBySubtract = (count: number) => {\n      const currentPageValue = state[currentPageKey.value]\n      const counts = getCurrentPageCounts(\n        currentPageValue,\n        state[pageSizeKey.value],\n        state[totalKey.value]\n      )\n      return Math.max(\n        1,\n        counts - count > 0 ? currentPageValue : currentPageValue - 1\n      )\n    }\n\n    const getTableWrapperHeight = () => {\n      const pageTable = pageTableRef.value\n      const header = headerWrapperRef.value\n      const footer = footerWrapperRef.value\n      if (pageTable && header && footer) {\n        return (\n          pageTable.offsetHeight - header.offsetHeight - footer.$el.offsetHeight\n        )\n      } else {\n        return 0\n      }\n    }\n\n    expose({\n      request,\n      getTable,\n      getState,\n      getCurrentPageCounts,\n      getCurrentPageBySubtract,\n      tableRef: tableWrapperRef,\n    })\n\n    return () => {\n      const { columns } = props\n      const tableWrapperHeight = getTableWrapperHeight()\n      const needFixed = tableWrapperHeight > props.boundaryValue\n\n      const pureAttrs = { ...attrs }\n      delete pureAttrs.class\n      delete pureAttrs.style\n\n      const tableData = {\n        height: '100%',\n        ...pureAttrs,\n        columns,\n        data: state.tableData,\n        ref: epTableRef,\n        key: needFixed || isEmpty.value ? 'true' : 'false',\n      }\n      // if (needFixed || isEmpty.value) {\n      //   ;(tableData as any).height = '100%'\n      // }\n\n      const empty = h(ElEmpty, { imageSize: 120, ...pureAttrs }, slots)\n      const table = h(EpTable, tableData as any, {\n        empty: () => empty,\n        ...slots,\n      })\n      const loadingTable = withDirectives(table, [[vLoading, state.loading]])\n      const wrapperTable = h(\n        DIV_TAG,\n        {\n          class: [\n            TABLE_PREFIX,\n            needFixed || isEmpty.value ? `${TABLE_PREFIX}--fixed` : '',\n          ],\n          ref: tableWrapperRef,\n        },\n        [\n          slots.table\n            ? withDirectives(slots.table({ list: state.tableData })?.[0], [\n                [vLoading, state.loading],\n              ])\n            : loadingTable,\n        ]\n      )\n\n      const paginationVnode = h(\n        EpPagination,\n        {\n          onSizeChange: handleSizeChange,\n          onCurrentChange: handleCurrentChange,\n          onChange: handleChange,\n          ...pagination.value,\n          ref: footerWrapperRef,\n          currentPage: state[currentPageKey.value],\n          pageSize: state[pageSizeKey.value],\n          total: state[totalKey.value],\n        },\n        slots\n      )\n\n      return h(\n        DIV_TAG,\n        {\n          class: ROOT_PREFIX,\n          ref: pageTableRef,\n        },\n        [\n          h(\n            DIV_TAG,\n            {\n              class: `${ROOT_PREFIX}__header`,\n              ref: headerWrapperRef,\n            },\n            [slots.header && slots.header()]\n          ),\n          wrapperTable,\n          withDirectives(paginationVnode, [[vShow, props.showPagination]]),\n        ]\n      )\n    }\n  },\n})\n"],"names":["_a"],"mappings":";;;;;;;;AAiBA,gBAAe,eAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,aAAA;AAAA,EACN,KAAO,EAAA;AAAA,IACL,GAAG,cAAA;AAAA,GACL;AAAA,EACA,MAAM,KAAO,EAAA,EAAE,OAAO,KAAO,EAAA,MAAA,EAAQ,MAAQ,EAAA;AAC3C,IAAA,MAAM,aAAa,GAAI,EAAA,CAAA;AACvB,IAAA,MAAM,eAAe,GAAI,EAAA,CAAA;AACzB,IAAA,MAAM,mBAAmB,GAAI,EAAA,CAAA;AAC7B,IAAA,MAAM,kBAAkB,GAAI,EAAA,CAAA;AAC5B,IAAA,MAAM,mBAAmB,GAAI,EAAA,CAAA;AAE7B,IAAM,MAAA,EAAA,GAAK,aAAa,OAAO,CAAA,CAAA;AAC/B,IAAM,MAAA,WAAA,GAAc,EAAG,CAAA,CAAA,CAAE,MAAM,CAAA,CAAA;AAC/B,IAAM,MAAA,YAAA,GAAe,EAAG,CAAA,CAAA,CAAE,SAAS,CAAA,CAAA;AAEnC,IAAM,MAAA,EAAE,eAAgB,EAAA,GAAI,kBAAmB,EAAA,CAAA;AAE/C,IAAM,MAAA,UAAA,GAAa,SAAS,MAAM;AAChC,MAAO,OAAA;AAAA,QACL,GAAG,gBAAgB,KAAM,CAAA,UAAA;AAAA,QACzB,GAAG,KAAM,CAAA,UAAA;AAAA,OACX,CAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,MAAM,aAAgB,GAAA,QAAA;AAAA,MACpB,MAAG;AA1CT,QAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA2CQ,QAAW,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAA,KAAA,CAAM,oBAAjB,IACA,GAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAW,MAAM,SAAjB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA6B,OAD7B,IAEA,GAAA,EAAA,GAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KACJ,CAAA;AACA,IAAM,MAAA,MAAA,GAAS,SAAS,MAAM;AAC5B,MAAO,OAAA;AAAA,QACL,GAAG,gBAAgB,KAAM,CAAA,MAAA;AAAA,QACzB,GAAG,KAAM,CAAA,MAAA;AAAA,OACX,CAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,MAAM,cAAiB,GAAA,QAAA,CAAS,MAAM,MAAA,CAAO,MAAM,WAAW,CAAA,CAAA;AAC9D,IAAA,MAAM,WAAc,GAAA,QAAA,CAAS,MAAM,MAAA,CAAO,MAAM,QAAQ,CAAA,CAAA;AACxD,IAAA,MAAM,QAAW,GAAA,QAAA,CAAS,MAAM,MAAA,CAAO,MAAM,KAAK,CAAA,CAAA;AAClD,IAAA,MAAM,OAAU,GAAA,QAAA;AAAA,MACd,MAAM,KAAM,CAAA,OAAA,KAAY,KAAS,IAAA,KAAA,CAAM,UAAU,MAAW,KAAA,CAAA;AAAA,KAC9D,CAAA;AAEA,IAAA,MAAM,QAAa,QAAS,CAAA;AAAA,MAC1B,CAAC,eAAe,KAAQ,GAAA,CAAA;AAAA,MACxB,CAAC,WAAY,CAAA,KAAA,GAAQ,aAAc,CAAA,KAAA;AAAA,MACnC,CAAC,SAAS,KAAQ,GAAA,CAAA;AAAA,MAClB,OAAS,EAAA,KAAA;AAAA,MACT,WAAW,EAAC;AAAA,KACb,CAAA,CAAA;AAGD,IAAA,MAAM,KAAQ,GAAA,OAAO,MAAuB,GAAA,EAAO,KAAA;AArEvD,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAsEM,MAAA,MAAM,oBACJ,EAAO,GAAA,MAAA,CAAA,cAAA,CAAe,KAAtB,CAAA,KAAA,IAAA,GAAA,EAAA,GAAgC,MAAM,cAAe,CAAA,KAAA,CAAA,CAAA;AACvD,MAAA,MAAM,iBACJ,EAAO,GAAA,MAAA,CAAA,WAAA,CAAY,KAAnB,CAAA,KAAA,IAAA,GAAA,EAAA,GAA6B,MAAM,WAAY,CAAA,KAAA,CAAA,CAAA;AACjD,MAAA,KAAA,CAAM,eAAe,KAAS,CAAA,GAAA,gBAAA,CAAA;AAC9B,MAAA,KAAA,CAAM,YAAY,KAAS,CAAA,GAAA,aAAA,CAAA;AAE3B,MAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AA7E9C,QAAAA,IAAAA,GAAAA,CAAAA;AA8EQ,QAAA,KAAA,CAAM,OAAU,GAAA,IAAA,CAAA;AAChB,QAAA,CAAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,WAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAA,IAAqB,CAAA,KAAA,EAAA;AAAA,UACnB,MAAQ,EAAA;AAAA,YACN,CAAC,eAAe,KAAQ,GAAA,gBAAA;AAAA,YACxB,CAAC,YAAY,KAAQ,GAAA,aAAA;AAAA,YACrB,GAAG,MAAA;AAAA,WACL;AAAA,UACA,OAAS,EAAA,CAAC,EAAE,IAAA,EAAM,OAA0C,KAAA;AAC1D,YAAA,KAAA,CAAM,OAAU,GAAA,KAAA,CAAA;AAChB,YAAA,KAAA,CAAM,SAAY,GAAA,IAAA,CAAA;AAClB,YAAM,KAAA,CAAA,QAAA,CAAS,SAAS,KAAS,IAAA,IAAA,GAAA,KAAA,GAAA,CAAA,CAAA;AACjC,YAAA,IAAA,CAAK,eAAe,KAAK,CAAA,CAAA;AACzB,YAAA,OAAO,QAAQ,KAAK,CAAA,CAAA;AAAA,WACtB;AAAA,UACA,MAAA,EAAQ,CAAC,CAAa,KAAA;AACpB,YAAA,KAAA,CAAM,OAAU,GAAA,KAAA,CAAA;AAChB,YAAA,IAAA,CAAK,eAAe,KAAK,CAAA,CAAA;AACzB,YAAA,OAAO,OAAO,CAAC,CAAA,CAAA;AAAA,WACjB;AAAA,SACF,CAAA,CAAA;AAAA,OACD,CAAA,CAAA;AAAA,KACH,CAAA;AACA,IAAA,IAAI,MAAM,WAAa,EAAA;AACrB,MAAM,KAAA,EAAA,CAAA;AAAA,KACR;AAEA,IAAM,MAAA,gBAAA,GAAmB,CAAC,QAAqB,KAAA;AAC7C,MAAA,KAAA,CAAM,YAAY,KAAS,CAAA,GAAA,QAAA,CAAA;AAAA,KAE7B,CAAA;AACA,IAAM,MAAA,mBAAA,GAAsB,CAAC,WAAwB,KAAA;AACnD,MAAA,KAAA,CAAM,eAAe,KAAS,CAAA,GAAA,WAAA,CAAA;AAAA,KAEhC,CAAA;AAEA,IAAM,MAAA,YAAA,GAAe,MAAM,KAAM,EAAA,CAAA;AAGjC,IAAA,MAAM,OAAU,GAAA,CAAC,EAAK,GAAA,IAAA,EAAW,KAAA;AAC/B,MAAA,OAAO,MAAM,IAAI,CAAA,CAAA;AAAA,KACnB,CAAA;AAEA,IAAA,MAAM,WAAW,MAAG;AAxHxB,MAAA,IAAA,EAAA,CAAA;AAwH2B,MAAA,OAAA,CAAA,EAAA,GAAA,UAAA,CAAW,UAAX,IAAkB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAA,EAAA,CAAA;AAAA,KAAA,CAAA;AAEzC,IAAA,MAAM,WAAW,MAAM,KAAA,CAAA;AAGvB,IAAA,MAAM,oBAAuB,GAAA,CAC3B,WACA,EAAA,QAAA,EACA,KACG,KAAA;AACH,MAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,IAAK,CAAA,KAAA,GAAQ,QAAQ,CAAA,CAAA;AACxC,MAAM,MAAA,QAAA,GAAA,CAAY,cAAc,CAAK,IAAA,QAAA,CAAA;AACrC,MAAA,OAAO,SAAS,QACZ,GAAA,KAAA,GACA,WAAgB,KAAA,KAAA,GAChB,QAAQ,QACR,GAAA,QAAA,CAAA;AAAA,KACN,CAAA;AAGA,IAAM,MAAA,wBAAA,GAA2B,CAAC,KAAkB,KAAA;AAClD,MAAM,MAAA,gBAAA,GAAmB,MAAM,cAAe,CAAA,KAAA,CAAA,CAAA;AAC9C,MAAA,MAAM,MAAS,GAAA,oBAAA;AAAA,QACb,gBAAA;AAAA,QACA,MAAM,WAAY,CAAA,KAAA,CAAA;AAAA,QAClB,MAAM,QAAS,CAAA,KAAA,CAAA;AAAA,OACjB,CAAA;AACA,MAAA,OAAO,IAAK,CAAA,GAAA;AAAA,QACV,CAAA;AAAA,QACA,MAAS,GAAA,KAAA,GAAQ,CAAI,GAAA,gBAAA,GAAmB,gBAAmB,GAAA,CAAA;AAAA,OAC7D,CAAA;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,wBAAwB,MAAM;AAClC,MAAA,MAAM,YAAY,YAAa,CAAA,KAAA,CAAA;AAC/B,MAAA,MAAM,SAAS,gBAAiB,CAAA,KAAA,CAAA;AAChC,MAAA,MAAM,SAAS,gBAAiB,CAAA,KAAA,CAAA;AAChC,MAAI,IAAA,SAAA,IAAa,UAAU,MAAQ,EAAA;AACjC,QAAA,OACE,SAAU,CAAA,YAAA,GAAe,MAAO,CAAA,YAAA,GAAe,OAAO,GAAI,CAAA,YAAA,CAAA;AAAA,OAEvD,MAAA;AACL,QAAO,OAAA,CAAA,CAAA;AAAA,OACT;AAAA,KACF,CAAA;AAEA,IAAO,MAAA,CAAA;AAAA,MACL,OAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,oBAAA;AAAA,MACA,wBAAA;AAAA,MACA,QAAU,EAAA,eAAA;AAAA,KACX,CAAA,CAAA;AAED,IAAA,OAAO,MAAM;AA/KjB,MAAA,IAAA,EAAA,CAAA;AAgLM,MAAM,MAAA,EAAE,SAAY,GAAA,KAAA,CAAA;AACpB,MAAA,MAAM,qBAAqB,qBAAsB,EAAA,CAAA;AACjD,MAAM,MAAA,SAAA,GAAY,qBAAqB,KAAM,CAAA,aAAA,CAAA;AAE7C,MAAM,MAAA,SAAA,GAAY,EAAE,GAAG,KAAM,EAAA,CAAA;AAC7B,MAAA,OAAO,SAAU,CAAA,KAAA,CAAA;AACjB,MAAA,OAAO,SAAU,CAAA,KAAA,CAAA;AAEjB,MAAA,MAAM,SAAY,GAAA;AAAA,QAChB,MAAQ,EAAA,MAAA;AAAA,QACR,GAAG,SAAA;AAAA,QACH,OAAA;AAAA,QACA,MAAM,KAAM,CAAA,SAAA;AAAA,QACZ,GAAK,EAAA,UAAA;AAAA,QACL,GAAK,EAAA,SAAA,IAAa,OAAQ,CAAA,KAAA,GAAQ,MAAS,GAAA,OAAA;AAAA,OAC7C,CAAA;AAKA,MAAM,MAAA,KAAA,GAAQ,EAAE,OAAS,EAAA,EAAE,WAAW,GAAK,EAAA,GAAG,SAAU,EAAA,EAAG,KAAK,CAAA,CAAA;AAChE,MAAM,MAAA,KAAA,GAAQ,CAAE,CAAA,OAAA,EAAS,SAAkB,EAAA;AAAA,QACzC,OAAO,MAAM,KAAA;AAAA,QACb,GAAG,KAAA;AAAA,OACJ,CAAA,CAAA;AACD,MAAM,MAAA,YAAA,GAAe,eAAe,KAAO,EAAA,CAAC,CAAC,QAAU,EAAA,KAAA,CAAM,OAAO,CAAC,CAAC,CAAA,CAAA;AACtE,MAAA,MAAM,YAAe,GAAA,CAAA;AAAA,QACnB,OAAA;AAAA,QACA;AAAA,UACE,KAAO,EAAA;AAAA,YACL,YAAA;AAAA,YACA,SAAa,IAAA,OAAA,CAAQ,KAAQ,GAAA,CAAA,EAAG,YAAwB,CAAA,OAAA,CAAA,GAAA,EAAA;AAAA,WAC1D;AAAA,UACA,GAAK,EAAA,eAAA;AAAA,SACP;AAAA,QACA;AAAA,UACE,KAAM,CAAA,KAAA,GACF,cAAe,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,KAAM,CAAA,EAAE,IAAM,EAAA,KAAA,CAAM,SAAU,EAAC,CAArC,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAyC,CAAI,CAAA,EAAA;AAAA,YAC1D,CAAC,QAAU,EAAA,KAAA,CAAM,OAAO,CAAA;AAAA,WACzB,CACD,GAAA,YAAA;AAAA,SACN;AAAA,OACF,CAAA;AAEA,MAAA,MAAM,eAAkB,GAAA,CAAA;AAAA,QACtB,YAAA;AAAA,QACA;AAAA,UACE,YAAc,EAAA,gBAAA;AAAA,UACd,eAAiB,EAAA,mBAAA;AAAA,UACjB,QAAU,EAAA,YAAA;AAAA,UACV,GAAG,UAAW,CAAA,KAAA;AAAA,UACd,GAAK,EAAA,gBAAA;AAAA,UACL,WAAA,EAAa,MAAM,cAAe,CAAA,KAAA,CAAA;AAAA,UAClC,QAAA,EAAU,MAAM,WAAY,CAAA,KAAA,CAAA;AAAA,UAC5B,KAAA,EAAO,MAAM,QAAS,CAAA,KAAA,CAAA;AAAA,SACxB;AAAA,QACA,KAAA;AAAA,OACF,CAAA;AAEA,MAAO,OAAA,CAAA;AAAA,QACL,OAAA;AAAA,QACA;AAAA,UACE,KAAO,EAAA,WAAA;AAAA,UACP,GAAK,EAAA,YAAA;AAAA,SACP;AAAA,QACA;AAAA,UACE,CAAA;AAAA,YACE,OAAA;AAAA,YACA;AAAA,cACE,OAAO,CAAG,EAAA,WAAA,CAAA,QAAA,CAAA;AAAA,cACV,GAAK,EAAA,gBAAA;AAAA,aACP;AAAA,YACA,CAAC,KAAA,CAAM,MAAU,IAAA,KAAA,CAAM,QAAQ,CAAA;AAAA,WACjC;AAAA,UACA,YAAA;AAAA,UACA,cAAA,CAAe,iBAAiB,CAAC,CAAC,OAAO,KAAM,CAAA,cAAc,CAAC,CAAC,CAAA;AAAA,SACjE;AAAA,OACF,CAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}