{"version":3,"file":"HeaderRow.mjs","sources":["../../../../../../../packages/vue-components/vc-table/src/Header/HeaderRow.tsx"],"sourcesContent":["import type {\n  CellType,\n  ColumnType,\n  CustomizeComponent,\n  DefaultRecordType,\n  GetComponentProps,\n  StickyOffsets,\n} from '../interface';\nimport { defineComponent } from 'vue';\nimport Cell from '../Cell';\nimport { useInjectTable } from '../context/TableContext';\nimport { getCellFixedInfo } from '../utils/fixUtil';\nimport { getColumnsKey } from '../utils/valueUtil';\nimport DragHandleVue from './DragHandle';\n\nexport interface RowProps<RecordType = DefaultRecordType> {\n  cells: ReadonlyArray<CellType<RecordType>>;\n  stickyOffsets: StickyOffsets;\n  flattenColumns: ReadonlyArray<ColumnType<RecordType>>;\n  rowComponent: CustomizeComponent;\n  cellComponent: CustomizeComponent;\n  customHeaderRow: GetComponentProps<ReadonlyArray<ColumnType<RecordType>>>;\n  index: number;\n}\n\nexport default defineComponent<RowProps>({\n  name: 'HeaderRow',\n  props: [\n    'cells',\n    'stickyOffsets',\n    'flattenColumns',\n    'rowComponent',\n    'cellComponent',\n    'index',\n    'customHeaderRow',\n  ] as any,\n  setup(props: RowProps) {\n    const tableContext = useInjectTable();\n    return () => {\n      const { prefixCls, direction } = tableContext;\n      const {\n        cells,\n        stickyOffsets,\n        flattenColumns,\n        rowComponent: RowComponent,\n        cellComponent: CellComponent,\n        customHeaderRow,\n        index,\n      } = props;\n\n      let rowProps;\n      if (customHeaderRow) {\n        rowProps = customHeaderRow(\n          cells.map(cell => cell.column),\n          index,\n        );\n      }\n\n      const columnsKey = getColumnsKey(cells.map(cell => cell.column));\n\n      return (\n        <RowComponent {...rowProps}>\n          {cells.map((cell: CellType, cellIndex) => {\n            const { column } = cell;\n            const fixedInfo = getCellFixedInfo(\n              cell.colStart,\n              cell.colEnd,\n              flattenColumns,\n              stickyOffsets,\n              direction,\n            );\n\n            let additionalProps;\n            if (column && column.customHeaderCell)\n              additionalProps = cell.column.customHeaderCell(column);\n\n            const col: ColumnType<any> = column;\n            return (\n              <Cell\n                {...cell}\n                cellType=\"header\"\n                ellipsis={column.ellipsis}\n                align={column.align}\n                component={CellComponent}\n                prefixCls={prefixCls}\n                key={columnsKey[cellIndex]}\n                {...fixedInfo}\n                additionalProps={additionalProps}\n                rowType=\"header\"\n                column={column}\n                v-slots={{\n                  default: () => column.title,\n                  dragHandle: () =>\n                    col.resizable\n                      ? (\n                          <DragHandleVue\n                            prefixCls={prefixCls}\n                            width={col.width as number}\n                            minWidth={col.minWidth}\n                            maxWidth={col.maxWidth}\n                            column={col}\n                          />\n                        )\n                      : null,\n                }}\n              />\n            );\n          })}\n        </RowComponent>\n      );\n    };\n  },\n});\n"],"names":["name","props","setup","tableContext","useInjectTable","prefixCls","direction","cells","stickyOffsets","flattenColumns","rowComponent","RowComponent","cellComponent","CellComponent","customHeaderRow","index","rowProps","map","cell","column","columnsKey","getColumnsKey","_createVNode","default","cellIndex","fixedInfo","getCellFixedInfo","colStart","colEnd","additionalProps","customHeaderCell","col","Cell","ellipsis","align","title","dragHandle","resizable","DragHandleVue","width","minWidth","maxWidth"],"mappings":"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"}