{"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/table/src/table-footer/index.ts"],"sourcesContent":["// @ts-nocheck\nimport { defineComponent, h } from 'vue'\nimport { useNamespace } from '@bigin/hooks'\nimport { hColgroup } from '../h-helper'\nimport useStyle from './style-helper'\nimport type { Store } from '../store'\n\nimport type { PropType } from 'vue'\nimport type { DefaultRow, Sort, SummaryMethod } from '../table/defaults'\nexport interface TableFooter<T> {\n  fixed: string\n  store: Store<T>\n  summaryMethod: SummaryMethod<T>\n  sumText: string\n  border: boolean\n  defaultSort: Sort\n}\n\nexport default defineComponent({\n  name: 'BTableFooter',\n\n  props: {\n    fixed: {\n      type: String,\n      default: '',\n    },\n    store: {\n      required: true,\n      type: Object as PropType<TableFooter<DefaultRow>['store']>,\n    },\n    summaryMethod: Function as PropType<\n      TableFooter<DefaultRow>['summaryMethod']\n    >,\n    sumText: String,\n    border: Boolean,\n    defaultSort: {\n      type: Object as PropType<TableFooter<DefaultRow>['defaultSort']>,\n      default: () => {\n        return {\n          prop: '',\n          order: '',\n        }\n      },\n    },\n  },\n  setup(props) {\n    const { getCellClasses, getCellStyles, columns } = useStyle(\n      props as TableFooter<DefaultRow>\n    )\n    const ns = useNamespace('table')\n    return {\n      ns,\n      getCellClasses,\n      getCellStyles,\n      columns,\n    }\n  },\n  render() {\n    const {\n      columns,\n      getCellStyles,\n      getCellClasses,\n      summaryMethod,\n      sumText,\n      ns,\n    } = this\n    const data = this.store.states.data.value\n    let sums = []\n    if (summaryMethod) {\n      sums = summaryMethod({\n        columns,\n        data,\n      })\n    } else {\n      columns.forEach((column, index) => {\n        if (index === 0) {\n          sums[index] = sumText\n          return\n        }\n        const values = data.map((item) => Number(item[column.property]))\n        const precisions = []\n        let notNumber = true\n        values.forEach((value) => {\n          if (!Number.isNaN(+value)) {\n            notNumber = false\n            const decimal = `${value}`.split('.')[1]\n            precisions.push(decimal ? decimal.length : 0)\n          }\n        })\n        const precision = Math.max.apply(null, precisions)\n        if (!notNumber) {\n          sums[index] = values.reduce((prev, curr) => {\n            const value = Number(curr)\n            if (!Number.isNaN(+value)) {\n              return Number.parseFloat(\n                (prev + curr).toFixed(Math.min(precision, 20))\n              )\n            } else {\n              return prev\n            }\n          }, 0)\n        } else {\n          sums[index] = ''\n        }\n      })\n    }\n    return h(\n      'table',\n      {\n        class: ns.e('footer'),\n        cellspacing: '0',\n        cellpadding: '0',\n        border: '0',\n      },\n      [\n        hColgroup({\n          columns,\n        }),\n        h('tbody', [\n          h('tr', {}, [\n            ...columns.map((column, cellIndex) =>\n              h(\n                'td',\n                {\n                  key: cellIndex,\n                  colspan: column.colSpan,\n                  rowspan: column.rowSpan,\n                  class: getCellClasses(columns, cellIndex),\n                  style: getCellStyles(column, cellIndex),\n                },\n                [\n                  h(\n                    'div',\n                    {\n                      class: ['cell', column.labelClassName],\n                    },\n                    [sums[cellIndex]]\n                  ),\n                ]\n              )\n            ),\n          ]),\n        ]),\n      ]\n    )\n  },\n})\n"],"names":[],"mappings":"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"}