{"version":3,"file":"useTableFooter2.mjs","sources":["../../../../../../../../packages/components/table/src/hooks/useTableFooter.ts"],"sourcesContent":["import { computed, h, nextTick, unref, watchEffect } from 'vue'\nimport { useEventListener } from '@tav-ui/hooks/event/useEventListener'\nimport TableFooter from '../components/TableFooter.vue'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { BasicTableProps } from '../types/table'\n\ntype Recordable<T = any> = Record<string, T>\ntype Nullable<T> = T | null\ninterface ComponentElRef<T extends HTMLElement = HTMLDivElement> {\n  $el: T\n}\ntype ComponentRef<T extends HTMLElement = HTMLDivElement> = ComponentElRef<T> | null\n\nexport function useTableFooter(\n  propsRef: ComputedRef<BasicTableProps>,\n  scrollRef: ComputedRef<{\n    x: string | number | true\n    y: Nullable<number>\n    scrollToFirstRowOnChange: boolean\n  }>,\n  tableElRef: Ref<ComponentRef>,\n  getDataSourceRef: ComputedRef<Recordable>\n) {\n  const getIsEmptyData = computed(() => {\n    return (unref(getDataSourceRef) || []).length === 0\n  })\n\n  const getFooterProps = computed((): Recordable | undefined => {\n    const { summaryFunc, showSummary, summaryData } = unref(propsRef)\n    return showSummary && !unref(getIsEmptyData)\n      ? () => h(TableFooter, { summaryFunc, summaryData, scroll: unref(scrollRef) })\n      : undefined\n  })\n\n  watchEffect(() => {\n    handleSummary()\n  })\n\n  function handleSummary() {\n    const { showSummary } = unref(propsRef)\n    if (!showSummary || unref(getIsEmptyData)) return\n\n    nextTick(() => {\n      const tableEl = unref(tableElRef)\n      if (!tableEl) return\n      const bodyDomList = tableEl.$el.querySelectorAll('.ant-table-body')\n      const bodyDom = bodyDomList[0]\n      useEventListener({\n        el: bodyDom,\n        name: 'scroll',\n        listener: () => {\n          const footerBodyDom = tableEl.$el.querySelector(\n            '.ant-table-footer .ant-table-body'\n          ) as HTMLDivElement\n          if (!footerBodyDom || !bodyDom) return\n          footerBodyDom.scrollLeft = bodyDom.scrollLeft\n        },\n        wait: 0,\n        options: true,\n      })\n    })\n  }\n  return { getFooterProps }\n}\n"],"names":[],"mappings":";;;;AAGO,SAAS,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE;AAClF,EAAE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM;AACxC,IAAI,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC;AACxD,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM;AACxC,IAAI,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtE,IAAI,OAAO,WAAW,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;AACzI,GAAG,CAAC,CAAC;AACL,EAAE,WAAW,CAAC,MAAM;AACpB,IAAI,aAAa,EAAE,CAAC;AACpB,GAAG,CAAC,CAAC;AACL,EAAE,SAAS,aAAa,GAAG;AAC3B,IAAI,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,cAAc,CAAC;AAC7C,MAAM,OAAO;AACb,IAAI,QAAQ,CAAC,MAAM;AACnB,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,OAAO;AAClB,QAAQ,OAAO;AACf,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;AAC1E,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACrC,MAAM,gBAAgB,CAAC;AACvB,QAAQ,EAAE,EAAE,OAAO;AACnB,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,QAAQ,EAAE,MAAM;AACxB,UAAU,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,mCAAmC,CAAC,CAAC;AAC/F,UAAU,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO;AACxC,YAAY,OAAO;AACnB,UAAU,aAAa,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACxD,SAAS;AACT,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AAC5B;;;;"}