{"version":3,"file":"Header.mjs","sources":["../../../../../../../packages/vue-components/vc-table/src/Header/Header.tsx"],"sourcesContent":["import type {\n  CellType,\n  ColumnGroupType,\n  ColumnsType,\n  ColumnType,\n  DefaultRecordType,\n  GetComponentProps,\n  StickyOffsets,\n} from '../interface';\nimport { classNames } from '@antdv/utils';\nimport { computed, defineComponent } from 'vue';\nimport { useInjectTable } from '../context/TableContext';\nimport HeaderRow from './HeaderRow';\n\nfunction parseHeaderRows<RecordType>(\n  rootColumns: ColumnsType<RecordType>,\n): Array<Array<CellType<RecordType>>> {\n  const rows: Array<Array<CellType<RecordType>>> = [];\n\n  function fillRowCells(\n    columns: ColumnsType<RecordType>,\n    colIndex: number,\n    rowIndex = 0,\n  ): number[] {\n    // Init rows\n    rows[rowIndex] = rows[rowIndex] || [];\n\n    let currentColIndex = colIndex;\n    const colSpans: number[] = columns.filter(Boolean).map((column) => {\n      const cell: CellType<RecordType> = {\n        key: column.key,\n        class: classNames(column.className, column.class),\n        // children: column.title,\n        column,\n        colStart: currentColIndex,\n      };\n\n      let colSpan = 1;\n\n      const subColumns = (column as ColumnGroupType<RecordType>).children;\n      if (subColumns && subColumns.length > 0) {\n        colSpan = fillRowCells(subColumns, currentColIndex, rowIndex + 1).reduce(\n          (total, count) => total + count,\n          0,\n        );\n        cell.hasSubColumns = true;\n      }\n\n      if ('colSpan' in column)\n        ({ colSpan } = column);\n\n      if ('rowSpan' in column)\n        cell.rowSpan = column.rowSpan;\n\n      cell.colSpan = colSpan;\n      cell.colEnd = cell.colStart + colSpan - 1;\n      rows[rowIndex].push(cell);\n\n      currentColIndex += colSpan;\n\n      return colSpan;\n    });\n\n    return colSpans;\n  }\n\n  // Generate `rows` cell data\n  fillRowCells(rootColumns, 0);\n\n  // Handle `rowSpan`\n  const rowCount = rows.length;\n  for (let rowIndex = 0; rowIndex < rowCount; rowIndex += 1) {\n    rows[rowIndex].forEach((cell) => {\n      if (!('rowSpan' in cell) && !cell.hasSubColumns)\n\n        cell.rowSpan = rowCount - rowIndex;\n    });\n  }\n\n  return rows;\n}\n\nexport interface HeaderProps<RecordType = DefaultRecordType> {\n  columns: ColumnsType<RecordType>;\n  flattenColumns: ReadonlyArray<ColumnType<RecordType>>;\n  stickyOffsets: StickyOffsets;\n  customHeaderRow: GetComponentProps<ReadonlyArray<ColumnType<RecordType>>>;\n}\n\nexport default defineComponent<HeaderProps>({\n  name: 'TableHeader',\n  inheritAttrs: false,\n  props: ['columns', 'flattenColumns', 'stickyOffsets', 'customHeaderRow'] as any,\n  setup(props) {\n    const tableContext = useInjectTable();\n    const rows = computed(() => parseHeaderRows(props.columns));\n    return () => {\n      const { prefixCls, getComponent } = tableContext;\n      const { stickyOffsets, flattenColumns, customHeaderRow } = props;\n      const WrapperComponent = getComponent(['header', 'wrapper'], 'thead');\n      const trComponent = getComponent(['header', 'row'], 'tr');\n      const thComponent = getComponent(['header', 'cell'], 'th');\n      return (\n        <WrapperComponent class={`${prefixCls}-thead`}>\n          {rows.value.map((row, rowIndex) => {\n            const rowNode = (\n              <HeaderRow\n                key={rowIndex}\n                flattenColumns={flattenColumns}\n                cells={row}\n                stickyOffsets={stickyOffsets}\n                rowComponent={trComponent}\n                cellComponent={thComponent}\n                customHeaderRow={customHeaderRow}\n                index={rowIndex}\n              />\n            );\n\n            return rowNode;\n          })}\n        </WrapperComponent>\n      );\n    };\n  },\n});\n"],"names":["parseHeaderRows","rootColumns","rows","fillRowCells","columns","colIndex","rowIndex","currentColIndex","colSpans","filter","Boolean","map","column","cell","key","class","classNames","className","colStart","colSpan","subColumns","children","length","reduce","total","count","hasSubColumns","rowSpan","colEnd","push","rowCount","forEach","name","inheritAttrs","props","setup","tableContext","useInjectTable","computed","prefixCls","getComponent","stickyOffsets","flattenColumns","customHeaderRow","WrapperComponent","trComponent","thComponent","_createVNode","default","value","row","rowNode","HeaderRow"],"mappings":"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"}