{"version":3,"file":"AutoCell.mjs","sources":["../../../../../../src/components/Table/TableNG/Cells/AutoCell.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { Property } from 'csstype';\n\nimport { GrafanaTheme2, formattedValueToString } from '@grafana/data';\nimport { TableCellDisplayMode, TableCellOptions } from '@grafana/schema';\n\nimport { useStyles2 } from '../../../../themes';\nimport { clearLinkButtonStyles } from '../../../Button';\nimport { DataLinksContextMenu } from '../../../DataLinks/DataLinksContextMenu';\nimport { AutoCellProps } from '../types';\nimport { getCellLinks } from '../utils';\n\nexport default function AutoCell({ value, field, justifyContent, rowIdx, cellOptions }: AutoCellProps) {\n  const styles = useStyles2(getStyles, justifyContent);\n\n  const displayValue = field.display!(value);\n  const formattedValue = formattedValueToString(displayValue);\n  const hasLinks = Boolean(getCellLinks(field, rowIdx)?.length);\n  const clearButtonStyle = useStyles2(clearLinkButtonStyles);\n\n  return (\n    <div className={styles.cell}>\n      {hasLinks ? (\n        <DataLinksContextMenu links={() => getCellLinks(field, rowIdx) || []}>\n          {(api) => {\n            if (api.openMenu) {\n              return (\n                <button\n                  className={cx(clearButtonStyle, getLinkStyle(styles, cellOptions, api.targetClassName))}\n                  onClick={api.openMenu}\n                >\n                  {formattedValue}\n                </button>\n              );\n            } else {\n              return <div className={getLinkStyle(styles, cellOptions, api.targetClassName)}>{formattedValue}</div>;\n            }\n          }}\n        </DataLinksContextMenu>\n      ) : (\n        formattedValue\n      )}\n    </div>\n  );\n}\n\nconst getLinkStyle = (\n  styles: ReturnType<typeof getStyles>,\n  cellOptions: TableCellOptions,\n  targetClassName: string | undefined\n) => {\n  if (cellOptions.type === TableCellDisplayMode.Auto) {\n    return cx(styles.linkCell, targetClassName);\n  }\n\n  return cx(styles.cellLinkForColoredCell, targetClassName);\n};\n\nconst getStyles = (theme: GrafanaTheme2, justifyContent: Property.JustifyContent | undefined) => ({\n  cell: css({\n    display: 'flex',\n    justifyContent: justifyContent,\n\n    a: {\n      color: 'inherit',\n    },\n  }),\n  cellLinkForColoredCell: css({\n    cursor: 'pointer',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    userSelect: 'text',\n    whiteSpace: 'nowrap',\n    fontWeight: theme.typography.fontWeightMedium,\n    textDecoration: 'underline',\n  }),\n  linkCell: css({\n    cursor: 'pointer',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    userSelect: 'text',\n    whiteSpace: 'nowrap',\n    color: theme.colors.text.link,\n    fontWeight: theme.typography.fontWeightMedium,\n    paddingRight: theme.spacing(1.5),\n    a: {\n      color: theme.colors.text.link,\n    },\n    '&:hover': {\n      textDecoration: 'underline',\n      color: theme.colors.text.link,\n    },\n  }),\n});\n"],"names":[],"mappings":"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"}