{"version":3,"file":"cell.mjs","sources":["../../../../../../../packages/components/table-v2/src/renderers/cell.tsx"],"sourcesContent":["import { get } from 'lodash-unified'\nimport { isFunction, isObject } from '@bigin/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 { CellRendererParams } from '../types'\nimport type { TableV2RowCellRenderParam } from '../components'\nimport type { UseNamespaceReturn } from '@bigin/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 columnCellRenderer = componentToSlot(cellRenderer)\n\n  const CellComponent =\n    columnCellRenderer ||\n    slots.default ||\n    ((props: CellRendererParams<any>) => <TableCell {...props} />)\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\n  const Cell = CellComponent(cellProps)\n\n  const kls = [\n    ns.e('row-cell'),\n    column.align === Alignment.CENTER && ns.is('align-center'),\n    column.align === Alignment.RIGHT && ns.is('align-right'),\n  ]\n\n  const expandable = rowIndex >= 0 && 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}>\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","columnCellRenderer","componentToSlot","CellComponent","default","props","TableCell","cellData","isFunction","get","extraCellProps","tryCall","class","e","Cell","kls","align","Alignment","CENTER","is","RIGHT","expandable","key","expanded","includes","IconOrPlaceholder","iconStyle","isObject","join","_mergeProps","inheritAttrs"],"mappings":"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"}