{"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 '@hd-front-end/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 { UseNamespaceReturn } from '@hd-front-end/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  }\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    // 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          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","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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"}