{"version":3,"file":"VizLegendTableItem.cjs","sources":["../../../../src/components/VizLegend/VizLegendTableItem.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { useCallback } from 'react';\nimport * as React from 'react';\n\nimport { formattedValueToString, type GrafanaTheme2 } from '@grafana/data';\nimport { Trans } from '@grafana/i18n';\nimport { type LegendOverflow } from '@grafana/schema';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { hoverColor } from '../../themes/mixins';\n\nimport { VizLegendSeriesIcon } from './VizLegendSeriesIcon';\nimport { type VizLegendItem } from './types';\n\nexport interface Props {\n  key?: React.Key;\n  item: VizLegendItem;\n  className?: string;\n  onLabelClick?: (item: VizLegendItem, event: React.MouseEvent<HTMLButtonElement>) => void;\n  onLabelMouseOver?: (\n    item: VizLegendItem,\n    event: React.MouseEvent<HTMLButtonElement> | React.FocusEvent<HTMLButtonElement>\n  ) => void;\n  onLabelMouseOut?: (\n    item: VizLegendItem,\n    event: React.MouseEvent<HTMLButtonElement> | React.FocusEvent<HTMLButtonElement>\n  ) => void;\n  readonly?: boolean;\n  hasMixedAxes?: boolean;\n  overflow?: LegendOverflow;\n}\n\n/**\n * @internal\n */\nexport const LegendTableItem = ({\n  item,\n  onLabelClick,\n  onLabelMouseOver,\n  onLabelMouseOut,\n  className,\n  readonly,\n  hasMixedAxes,\n  overflow,\n}: Props) => {\n  const styles = useStyles2(getStyles, overflow);\n\n  const onMouseOver = useCallback(\n    (event: React.MouseEvent<HTMLButtonElement, MouseEvent> | React.FocusEvent<HTMLButtonElement>) => {\n      if (onLabelMouseOver) {\n        onLabelMouseOver(item, event);\n      }\n    },\n    [item, onLabelMouseOver]\n  );\n\n  const onMouseOut = useCallback(\n    (event: React.MouseEvent<HTMLButtonElement, MouseEvent> | React.FocusEvent<HTMLButtonElement>) => {\n      if (onLabelMouseOut) {\n        onLabelMouseOut(item, event);\n      }\n    },\n    [item, onLabelMouseOut]\n  );\n\n  const onClick = useCallback(\n    (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n      if (onLabelClick) {\n        onLabelClick(item, event);\n      }\n    },\n    [item, onLabelClick]\n  );\n\n  return (\n    <tr className={cx(styles.row, className)}>\n      <td>\n        <VizLegendSeriesIcon\n          color={item.color}\n          seriesName={item.fieldName ?? item.label}\n          readonly={readonly}\n          lineStyle={item.lineStyle}\n        />\n      </td>\n      <td className={styles.name}>\n        <button\n          disabled={readonly}\n          type=\"button\"\n          title={item.label}\n          onBlur={onMouseOut}\n          onFocus={onMouseOver}\n          onMouseOver={onMouseOver}\n          onMouseOut={onMouseOut}\n          onClick={!readonly ? onClick : undefined}\n          className={cx(styles.label, item.disabled && styles.labelDisabled)}\n        >\n          {item.label}{' '}\n          {item.yAxis === 2 && hasMixedAxes && (\n            <span className={styles.yAxisLabel}>\n              <Trans i18nKey=\"grafana-ui.viz-legend.right-axis-indicator\">(right y-axis)</Trans>\n            </span>\n          )}\n        </button>\n      </td>\n      {item.getDisplayValues &&\n        item.getDisplayValues().map((stat, index) => {\n          return <td key={`${stat.title}-${index}`}>{formattedValueToString(stat)}</td>;\n        })}\n    </tr>\n  );\n};\n\nLegendTableItem.displayName = 'LegendTableItem';\n\nconst getStyles = (theme: GrafanaTheme2, overflow?: LegendOverflow) => {\n  const rowHoverBg = hoverColor(theme.colors.background.primary, theme);\n\n  return {\n    row: css({\n      label: 'LegendRow',\n\n      '&:hover': {\n        background: rowHoverBg,\n      },\n    }),\n    label: css({\n      label: 'LegendLabel',\n      background: 'none',\n      border: 'none',\n      fontSize: 'inherit',\n      padding: 0,\n      width: '100%',\n\n      textOverflow: 'ellipsis',\n      whiteSpace: overflow === 'wrap' ? 'normal' : 'nowrap',\n\n      overflow: 'hidden',\n      userSelect: 'text',\n      textAlign: 'left',\n    }),\n    labelDisabled: css({\n      label: 'LegendLabelDisabled',\n      color: theme.colors.text.disabled,\n    }),\n    name: css({\n      textAlign: 'left',\n    }),\n    yAxisLabel: css({\n      color: theme.colors.text.secondary,\n    }),\n  };\n};\n"],"names":["useStyles2","useCallback","cx","jsx","VizLegendSeriesIcon","jsxs","Trans","formattedValueToString","hoverColor","css"],"mappings":"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"}