{"version":3,"file":"data-table-cell.mjs","sources":["../../../../../packages/components/data-table/src/data-table-cell.tsx"],"sourcesContent":["import { getChainValue } from '@element-ultra/utils'\nimport { defineComponent, inject, PropType } from 'vue'\nimport type { DataTableRow, DataTreeRow } from './data-table'\nimport { dataBodyToken } from './token'\nimport type { FixedColumn, StaticColumn } from './utils'\nimport { dataTableToken } from './token'\n\nconst buildCell = <\n  Name extends 'LeftCell' | 'CenterCell' | 'RightCell',\n  Column = Name extends 'CenterCell' ? StaticColumn : FixedColumn\n>(\n  name: Name\n) => {\n  const getClassName = {\n    LeftCell(extra: string[] = []) {\n      const { cellClass, leftCellClass } = inject(dataBodyToken)!\n      return [cellClass, leftCellClass, ...extra]\n    },\n    CenterCell(extra: string[] = []) {\n      const { cellClass, centerCellClass } = inject(dataBodyToken)!\n      return [cellClass, centerCellClass, ...extra]\n    },\n    RightCell(extra: string[] = []) {\n      const { cellClass, rightCellClass } = inject(dataBodyToken)!\n      return [cellClass, rightCellClass, ...extra]\n    }\n  }[name]\n\n  const styleGetters = {\n    LeftCell(column: FixedColumn) {\n      return {\n        left: column.left + 'px'\n      }\n    },\n    CenterCell(column: StaticColumn) {\n      return {}\n    },\n    RightCell(column: FixedColumn) {\n      return {\n        right: column.right + 'px'\n      }\n    }\n  }\n  const styleGetter = styleGetters[name]\n\n  return defineComponent({\n    name,\n    props: {\n      column: {\n        type: Object as PropType<Column>,\n        required: true\n      },\n\n      columnIndex: {\n        type: Number,\n        required: true\n      },\n\n      row: {\n        type: Object as PropType<DataTableRow | DataTreeRow>,\n        required: true\n      }\n    },\n    setup(props) {\n      const { rootProps } = inject(dataTableToken)!\n\n      const { row, columnIndex } = props\n      const { index, data } = row\n      const column = props.column as FixedColumn\n      const classes = getClassName(\n        rootProps.cellClass?.(row, column, columnIndex)\n      )\n      let val = getChainValue(data, column.key)\n\n      const cellConfig = rootProps.mergeCell?.(row, column, columnIndex)\n      const showCell = !cellConfig || (cellConfig.colspan && cellConfig.rowspan)\n\n      return () => {\n        const content = column.render!({\n          val,\n          v: val,\n          wrap: row,\n          row: data,\n          index\n        })\n\n        return showCell ? (\n          <td\n            class={classes}\n            title={typeof val === 'object' ? undefined : val}\n            rowspan={cellConfig?.rowspan}\n            colspan={cellConfig?.colspan}\n            style={{\n              ...styleGetter(column),\n              'text-align': column.align\n            }}\n          >\n            <div>{content}</div>\n          </td>\n        ) : null\n      }\n    }\n  })\n}\n\n/** 左栏 */\nexport const LeftCell = buildCell('LeftCell')\n\n/** 中栏 */\nexport const CenterCell = buildCell('CenterCell')\n\n/** 右栏 */\nexport const RightCell = buildCell('RightCell')\n"],"names":["buildCell","name","getClassName","LeftCell","extra","cellClass","leftCellClass","inject","dataBodyToken","CenterCell","centerCellClass","RightCell","rightCellClass","styleGetters","column","left","right","styleGetter","props","type","Object","required","columnIndex","Number","row","setup","rootProps","dataTableToken","index","data","classes","val","getChainValue","key","cellConfig","mergeCell","showCell","colspan","rowspan","content","render","v","wrap","_createVNode","undefined","align"],"mappings":"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"}