{"version":3,"file":"table-footer.vue2.mjs","sources":["../../../../../packages/components/table/src/table-footer.vue"],"sourcesContent":["<template>\n  <tfoot :class=\"ns.e('footer')\">\n    <tr v-if=\"!!summaryMethods\">\n      <td\n        :style=\"{\n          ...getCellStyle(columns[0], columns[0].fixed!),\n          bottom: summaryBottom + 'px'\n        }\"\n        :class=\"[\n          ns.e('footer-cell'),\n          ns.em('footer-cell', columns[0].fixed || 'center'),\n          ns.is('last', columns[0].typeLast),\n          ns.is('first', columns[0].typeFirst)\n        ]\"\n      >\n        合计\n      </td>\n\n      <td\n        v-for=\"column of columns.slice(1)\"\n        :style=\"{\n          ...getCellStyle(column, column.fixed),\n          bottom: summaryBottom + 'px'\n        }\"\n        :class=\"[\n          ns.e('footer-cell'),\n          ns.em('footer-cell', column.fixed || 'center'),\n          ns.is('last', column.typeLast),\n          ns.is('first', column.typeFirst)\n        ]\"\n        :key=\"column.key\"\n      >\n        {{\n          summaryMethods![column.key]?.({\n            key: column.key,\n            data: rootProps.data,\n            total: rootProps.data.reduce(\n              (acc, cur) => plus(acc, +(getChainValue(cur, column.key) ?? 0)),\n              0\n            )\n          })\n        }}\n      </td>\n    </tr>\n\n    <tr v-if=\"!!$slots.append\" ref=\"appendRef\" :class=\"ns.e('append')\">\n      <td :colspan=\"columns.length\" :class=\"ns.e('append-cell')\">\n        <slot name=\"append\"> </slot>\n      </td>\n    </tr>\n  </tfoot>\n</template>\n\n<script lang=\"ts\" setup>\nimport { getChainValue, plus } from '@element-ultra/utils'\nimport { inject, watch, shallowRef } from 'vue'\nimport { tableToken } from './token'\n\nconst { columns, ns, rootProps, summaryMethods, getCellStyle } =\n  inject(tableToken)!\n\nconst appendRef = shallowRef<HTMLTableRowElement>()\n\nlet observer: ResizeObserver | null = null\n\nconst summaryBottom = shallowRef(0)\n\nwatch(appendRef, (dom, oldDom) => {\n  oldDom && observer?.unobserve(oldDom)\n  observer?.disconnect()\n  summaryBottom.value = 0\n  if (dom) {\n    observer = new ResizeObserver(entries => {\n      const entry = entries[0]!\n      summaryBottom.value = entry.contentRect.height\n    })\n\n    observer.observe(dom)\n  }\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;AA0DA,IAAM,MAAA,EAAE,SAAS,EAAI,EAAA,SAAA,EAAW,gBAAgB,YAAa,EAAA,GAC3D,OAAO,UAAU,CAAA,CAAA;AAEnB,IAAA,MAAM,YAAY,UAAgC,EAAA,CAAA;AAElD,IAAA,IAAI,QAAkC,GAAA,IAAA,CAAA;AAEtC,IAAM,MAAA,aAAA,GAAgB,WAAW,CAAC,CAAA,CAAA;AAElC,IAAM,KAAA,CAAA,SAAA,EAAW,CAAC,GAAA,EAAK,MAAW,KAAA;AAChC,MAAA,MAAA,KAAU,qCAAU,SAAU,CAAA,MAAA,CAAA,CAAA,CAAA;AAC9B,MAAU,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,UAAA,EAAA,CAAA;AACV,MAAA,aAAA,CAAc,KAAQ,GAAA,CAAA,CAAA;AACtB,MAAA,IAAI,GAAK,EAAA;AACP,QAAW,QAAA,GAAA,IAAI,eAAe,CAAW,OAAA,KAAA;AACvC,UAAM,MAAA,KAAA,GAAQ,QAAQ,CAAC,CAAA,CAAA;AACvB,UAAc,aAAA,CAAA,KAAA,GAAQ,MAAM,WAAY,CAAA,MAAA,CAAA;AAAA,SACzC,CAAA,CAAA;AAED,QAAA,QAAA,CAAS,QAAQ,GAAG,CAAA,CAAA;AAAA,OACtB;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}