{"version":3,"file":"cell.mjs","sources":["../../../../../../../packages/components/table-v2/src/renderers/cell.tsx"],"sourcesContent":["import { renderSlot } from 'vue'\nimport { get } from 'lodash-unified'\nimport { isFunction, isObject } from '@element-plus/utils'\nimport { ExpandIcon, TableCell } from '../components'\nimport { Alignment } from '../constants'\nimport { placeholderSign } from '../private'\nimport { componentToSlot, enforceUnit, tryCall } from '../utils'\n\nimport type { FunctionalComponent, UnwrapNestedRefs, VNode } from 'vue'\nimport type { TableV2RowCellRenderParam } from '../components'\nimport type { Translator, UseNamespaceReturn } from '@element-plus/hooks'\nimport type { UseTableReturn } from '../use-table'\nimport type { TableV2Props } from '../table'\n\ntype CellRendererProps = TableV2RowCellRenderParam &\n  Pick<\n    TableV2Props,\n    'cellProps' | 'expandColumnKey' | 'indentSize' | 'iconSize' | 'rowKey'\n  > &\n  UnwrapNestedRefs<Pick<UseTableReturn, 'expandedRowKeys'>> & {\n    ns: UseNamespaceReturn\n    t: Translator\n  }\n\nconst CellRenderer: FunctionalComponent<CellRendererProps> = (\n  {\n    // renderer props\n    columns,\n    column,\n    columnIndex,\n    depth,\n    expandIconProps,\n    isScrolling,\n    rowData,\n    rowIndex,\n    // from use-table\n    style,\n    expandedRowKeys,\n    ns,\n    t,\n    // derived props\n    cellProps: _cellProps,\n    expandColumnKey,\n    indentSize,\n    iconSize,\n    rowKey,\n  },\n  { slots }\n) => {\n  const cellStyle = enforceUnit(style)\n\n  if (column.placeholderSign === placeholderSign) {\n    return <div class={ns.em('row-cell', 'placeholder')} style={cellStyle} />\n  }\n  const { cellRenderer, dataKey, dataGetter } = column\n\n  const cellData = isFunction(dataGetter)\n    ? dataGetter({ columns, column, columnIndex, rowData, rowIndex })\n    : get(rowData, dataKey ?? '')\n\n  const extraCellProps = tryCall(_cellProps, {\n    cellData,\n    columns,\n    column,\n    columnIndex,\n    rowIndex,\n    rowData,\n  })\n\n  const cellProps = {\n    class: ns.e('cell-text'),\n    columns,\n    column,\n    columnIndex,\n    cellData,\n    isScrolling,\n    rowData,\n    rowIndex,\n  }\n  const columnCellRenderer = componentToSlot<typeof cellProps>(cellRenderer)\n  const Cell = columnCellRenderer\n    ? columnCellRenderer(cellProps)\n    : renderSlot(slots, 'default', cellProps, () => [\n        <TableCell {...cellProps}></TableCell>,\n      ])\n\n  const kls = [\n    ns.e('row-cell'),\n    column.class,\n    column.align === Alignment.CENTER && ns.is('align-center'),\n    column.align === Alignment.RIGHT && ns.is('align-right'),\n  ]\n\n  const expandable =\n    rowIndex >= 0 && expandColumnKey && column.key === expandColumnKey\n  const expanded = rowIndex >= 0 && expandedRowKeys.includes(rowData[rowKey])\n\n  let IconOrPlaceholder: VNode | undefined\n  const iconStyle = `margin-inline-start: ${depth * indentSize}px;`\n  if (expandable) {\n    if (isObject(expandIconProps)) {\n      IconOrPlaceholder = (\n        <ExpandIcon\n          {...expandIconProps}\n          class={[ns.e('expand-icon'), ns.is('expanded', expanded)]}\n          size={iconSize}\n          expanded={expanded}\n          ariaLabel={t(\n            expanded ? 'el.table.collapseRowLabel' : 'el.table.expandRowLabel'\n          )}\n          style={iconStyle}\n          expandable\n        />\n      )\n    } else {\n      IconOrPlaceholder = (\n        <div\n          style={[\n            iconStyle,\n            `width: ${iconSize}px; height: ${iconSize}px;`,\n          ].join(' ')}\n        />\n      )\n    }\n  }\n\n  return (\n    <div class={kls} style={cellStyle} {...extraCellProps} role=\"cell\">\n      {IconOrPlaceholder}\n      {Cell}\n    </div>\n  )\n}\n\nCellRenderer.inheritAttrs = false\n\nexport default CellRenderer\n"],"names":["CellRenderer","columns","column","columnIndex","depth","expandIconProps","isScrolling","rowData","rowIndex","style","expandedRowKeys","ns","t","cellProps","_cellProps","expandColumnKey","indentSize","iconSize","rowKey","slots","cellStyle","enforceUnit","placeholderSign","_createVNode","em","cellRenderer","dataKey","dataGetter","cellData","isFunction","get","extraCellProps","tryCall","class","e","columnCellRenderer","componentToSlot","Cell","renderSlot","TableCell","kls","align","Alignment","CENTER","is","RIGHT","expandable","key","expanded","includes","IconOrPlaceholder","iconStyle","isObject","ExpandIcon","_mergeProps","join","inheritAttrs"],"mappings":"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"}