{"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 '@lit-element/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 '@lit-element/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","expandColumnKey","iconSize","rowKey","slots","_createVNode","enforceUnit","placeholderSign","cellStyle","dataGetter","cellData","class","columnCellRenderer","componentToSlot","Cell","renderSlot","expandable","_mergeProps","isObject","IconOrPlaceholder"],"mappings":";;;;;;;;;;;AAuBMA,MAAAA,YAAoD,GAAGA,CAC3D;AACE,EAAA,OAAA;EACAC,MAAO;EACPC,WAAM;EACNC,KAAW;EACXC,eAAK;EACLC,WAAe;EACfC,OAAW;EACXC,QAAO;EACPC,KAAQ;AACR,EAAA,eAAA;EACAC,EAAK;EACLC,SAAe,EAAA,UAAA;EACfC,eAAE;AACF,EAAA,UAAA;AACAC,EAAAA,QAAAA;EACAC,MAAe;GACL;EACVC,KAAQ;AACRC,CAAAA,KAAAA;AACF,EACA,MAAA,SAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA;AAAEC,EAAAA,IAAAA,MAAAA,CAAAA,eAAAA,KAAAA,eAAAA,EAAAA;AAAM,IACL,OAAAC,WAAA,CAAA,KAAA,EAAA;AACH,MAAA,OAAe,EAAA,EAAA,CAAA,EAAGC,CAAW,UAAA,eAAO,CAAA;AAEpC,MAAIhB,OAAOiB,EAAe,SAAA;AACxB,KAAA,EAAA,IAAAF,CAAA,CAAA;AAAA,GAAA;QAA4DG;AAAS,IAAA,YAAA;AACvE,IAAA,OAAA;IACM,UAAA;MAAc,MAAA,CAAA;QAAS,QAAA,GAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAA,CAAA;AAAEC,IAAAA,OAAAA;AAAW,UAAU;IAE9CC,WAAAA;IACWrB,OAAO;IAAEC,QAAM;IAAEC,GAAW,GAAA,CAAA,OAAA,EAAA,OAAA,IAAA,IAAA,GAAA,OAAA,GAAA,EAAA,CAAA,CAAA;QAAS,cAAA,GAAA,OAAA,CAAA,UAAA,EAAA;AAAEK,IAAAA,QAAAA;IAAW,OAC3DD;AAER,IAAA,MAAoB;IAClBe,WAAQ;IACRrB,QAAO;IACPC,OAAM;IACNC,CAAW;QACH,SAAA,GAAA;AACRI,IAAAA,KAAAA,EAAAA,EAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAAA;AACF,IAAE,OAAA;AAEF,IAAA;AACEgB,IAAAA,WAAW;IACXtB,QAAO;IACPC,WAAM;IACNC,OAAW;IACXmB,QAAQ;IACRhB;QACO,kBAAA,GAAA,eAAA,CAAA,YAAA,CAAA,CAAA;AACPE,EAAAA,MAAAA,IAAAA,GAAAA,kBAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA,GAAAA,UAAAA,CAAAA,KAAAA,EAAAA,SAAAA,EAAAA,SAAAA,EAAAA,MAAAA,CAAAA,WAAAA,CAAAA,WAAAA,EAAAA,SAAAA,EAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA;EACF,MAAC,GAAA,GAAA,CAAA,EAAA,CAAA,CAAA,CAAA,UAAA,CAAA,EAAA,MAAA,CAAA,KAAA,EAAA,MAAA,CAAA,KAAA,KAAA,SAAA,CAAA,MAAA,IAAA,EAAA,CAAA,EAAA,CAAA,cAAA,CAAA,EAAA,MAAA,CAAA,KAAA,KAAA,SAAA,CAAA,KAAA,IAAA,EAAA,CAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA;AACD,EAAA,MAAMgB,UAAkB,GAAA,QAAGC,IAAe,CAAA,IAAA,mBAA+B,MAAC,CAAA,GAAA,KAAA,eAAA,CAAA;EAC1E,MAAMC,QAAOF,GAAAA,QAAAA,IAAAA,CAAAA,IACTA,eAAAA,CAAAA,QAA4B,CAAA,OAC5BG,CAAAA,MAAAA,CAAAA,CAAAA,CAAU;AAId,EAAA,IAAA,iBACiB,CAAA;AAMjB,EAAA,MAAMC,SAAU,GAAA,CACdpB,qBAAgC,EAAA,KAAA,GAAA,UAAU,CAAA,GAAI,CAAA,CAAA;AAChD,EAAA,IAAA,UAAc,EAAA;AAEd,IAAA,IAAwC,QAAA,CAAA,eAAA,CAAA,EAAA;AACxC,MAAA,iBAAkB,GAAAS,WAAA,CAAA,UAA6B,EAAAY,UAAa,CAAK,eAAA,EAAA;AACjE,iBAAgB,CAAA,EAAA,CAAA,CAAA,CAAA,aAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,UAAA,EAAA,QAAA,CAAA,CAAA;AACd,QAAIC,MAAQ,EAAA,QAAgB;AAC1BC,QAAAA,UAAAA,EAAAA,QAAiB;AAEM,QAAA,OAAA,EACZ;AAAkD,QAAA,YAC3C,EAAA,IAAA;AAAA,OAAA,CAAA,EAAA,IAAA,CAAA,CAAA;AACI,KAAA,MAAA;AACF,MAAA,iBAAA,GAAAd,WAAA,CAAA,KAAA,EAAA;QAGnB,OAAA,EAAA,CAAA,SAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,YAAA,EAAA,QAAA,CAAA,GAAA,CAAA,CAAA,CAAA,IAAA,CAAA,GAAA,CAAA;AACH,OAAO,EAAA,IAAA,CAAA,CAAA;AACLc,KAAAA;AAAiB,GAAA;SAOhBd,WAAA,CAAA,KAAA,EAAAY,UAAA,CAAA;AACH,IAAA,OAAA,EAAA,GAAA;AACF,IAAA,OAAA,EAAA,SAAA;GAEAZ,EAAAA,cAAAA,EAAA;AAAA,IAAA,MAAA,EAAA,MACiB;IAAA,EAASG,CAAAA,iBAAAA,EAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAAS,EAAA;AAAoB,YAAA,CAAA,YAAA,GAAA,KAAA;;;;"}