{"version":3,"file":"TableCell.mjs","sources":["../../src/table/TableCell.tsx"],"sourcesContent":["import TableStatusText from './TableStatusText';\nimport StatusIcon from '../statusIcon';\nimport { Flag } from '@wise/art';\nimport React, { ImgHTMLAttributes } from 'react';\nimport { clsx } from 'clsx';\nimport Body from '../body';\nimport Money, { MoneyProps } from '../money';\nimport AvatarView, { AvatarViewProps } from '../avatarView';\n\ninterface TableCellTypeProp {\n  type: 'leading' | 'text' | 'currency' | 'status' | 'media';\n}\n\n// `Media`, `Leading` and `Status` cell types have 2 text fields: `primaryText` and `secondaryText`\ninterface TableCellTextProps {\n  primaryText?: string;\n  secondaryText?: string;\n}\n\n// `Leading`, `Text` and `Currency` cells' types can have a status indicator with `error` or `success` values\ninterface TableCellStatusProp {\n  status?: 'error' | 'success';\n}\n\nexport interface TableCellMedia extends TableCellTypeProp, TableCellTextProps {\n  media?: ImgHTMLAttributes<HTMLImageElement>;\n}\n\nexport interface TableCellLeading\n  extends TableCellTypeProp, TableCellTextProps, TableCellStatusProp {\n  avatar?: Pick<AvatarViewProps, 'badge' | 'imgSrc' | 'profileName' | 'profileType'> & {\n    asset?: AvatarViewProps['children'];\n    /** @deprecated Use `\"imgSrc\" instead. */\n    src?: AvatarViewProps['imgSrc'];\n  };\n}\n\nexport interface TableCellText extends TableCellTypeProp, TableCellStatusProp {\n  text?: string;\n}\n\nexport interface TableCellCurrency extends TableCellTypeProp, TableCellStatusProp {\n  primaryCurrency?: MoneyProps;\n  secondaryCurrency?: MoneyProps;\n  flag?: boolean;\n}\n\nexport interface TableCellStatus extends TableCellTypeProp, TableCellTextProps {\n  sentiment?: 'negative' | 'neutral' | 'positive' | 'warning' | 'pending';\n}\n\nexport interface TableCellType {\n  cell?: TableCellLeading & TableCellText & TableCellCurrency & TableCellStatus & TableCellMedia;\n  alignment?: 'left' | 'right';\n}\n\n// These properties should be exported only on the lib level to prevent visual issues because of incorrect usage.\nexport interface TableCellProps extends TableCellType {\n  className?: string;\n  colSpan?: number;\n  children?: React.ReactNode;\n}\n\nconst TableCell = ({ cell, alignment = 'left', className, colSpan, children }: TableCellProps) => {\n  const getContentMedia = () => {\n    let mediaContent = null;\n\n    if (cell?.type === 'leading' && cell?.avatar) {\n      mediaContent = (\n        <AvatarView size={40} {...cell.avatar} imgSrc={cell.avatar.imgSrc ?? cell.avatar.src}>\n          {cell.avatar.asset}\n        </AvatarView>\n      );\n    }\n\n    if (cell?.type === 'currency' && cell?.primaryCurrency?.currency && cell?.flag !== false) {\n      mediaContent = (\n        <Flag code={cell?.primaryCurrency?.currency?.toLowerCase()} intrinsicSize={24} />\n      );\n    }\n\n    if (cell?.type === 'status') {\n      mediaContent = <StatusIcon size={24} sentiment={cell?.sentiment ?? 'neutral'} />;\n    }\n\n    if (cell?.type === 'media' && cell.media) {\n      // eslint-disable-next-line jsx-a11y/alt-text\n      mediaContent = <img {...cell.media} />;\n    }\n\n    if (mediaContent) {\n      return (\n        <div\n          aria-hidden=\"true\"\n          className=\"np-table-content-media\"\n          data-testid=\"np-table-content-media\"\n        >\n          {mediaContent}\n        </div>\n      );\n    }\n  };\n\n  const formatCurrencyValue = (currency?: MoneyProps) => {\n    if (currency) {\n      return <Money amount={currency.amount} currency={currency.currency} alwaysShowDecimals />;\n    }\n\n    return '';\n  };\n\n  return (\n    <td\n      className={clsx(\n        'np-table-cell',\n        cell?.type ? `np-table-cell--${cell?.type}` : '',\n        `np-table-cell--${alignment}`,\n        className,\n      )}\n      colSpan={colSpan}\n    >\n      {cell?.type === 'text' && cell?.text && (\n        <TableStatusText text={cell?.text} status={cell?.status} />\n      )}\n      {cell?.type && ['leading', 'currency', 'status', 'media'].includes(cell?.type) && (\n        <div\n          className={clsx('np-table-content', {\n            'np-table-content--reversed': alignment === 'right',\n          })}\n          data-testid=\"np-table-content\"\n        >\n          {getContentMedia()}\n          <div className=\"np-table-content-body\">\n            {(cell?.primaryCurrency ?? cell?.primaryText) && (\n              <TableStatusText\n                text={\n                  cell?.type === 'currency'\n                    ? formatCurrencyValue(cell?.primaryCurrency)\n                    : (cell?.primaryText ?? '')\n                }\n                status={cell?.type !== 'status' ? cell?.status : undefined}\n                typography=\"default-bold\"\n              />\n            )}\n            {(cell?.secondaryCurrency ?? cell?.secondaryText) && (\n              <Body>\n                {cell?.type === 'currency'\n                  ? formatCurrencyValue(cell?.secondaryCurrency)\n                  : cell?.secondaryText}\n              </Body>\n            )}\n          </div>\n        </div>\n      )}\n      {children}\n    </td>\n  );\n};\n\nexport default TableCell;\n"],"names":["TableCell","cell","alignment","className","colSpan","children","getContentMedia","mediaContent","type","avatar","_jsx","AvatarView","size","imgSrc","src","asset","primaryCurrency","currency","flag","Flag","code","toLowerCase","intrinsicSize","StatusIcon","sentiment","media","formatCurrencyValue","Money","amount","alwaysShowDecimals","_jsxs","clsx","text","TableStatusText","status","includes","primaryText","undefined","typography","secondaryCurrency","secondaryText","Body"],"mappings":"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"}