{"version":3,"file":"SeriesIcon.cjs","sources":["../../../../src/components/VizLegend/SeriesIcon.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { CSSProperties } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, fieldColorModeRegistry } from '@grafana/data';\nimport { LineStyle } from '@grafana/schema';\n\nimport { useTheme2, useStyles2 } from '../../themes/ThemeContext';\n\nexport interface Props extends React.HTMLAttributes<HTMLDivElement> {\n  color?: string;\n  gradient?: string;\n  lineStyle?: LineStyle;\n  noMargin?: boolean;\n}\n\nexport const SeriesIcon = React.memo(\n  React.forwardRef<HTMLDivElement, Props>(({ color, className, gradient, lineStyle, noMargin, ...restProps }, ref) => {\n    const theme = useTheme2();\n    const styles = useStyles2(getStyles);\n\n    let cssColor: string;\n\n    if (gradient) {\n      const colors = fieldColorModeRegistry.get(gradient).getColors?.(theme);\n      if (colors?.length) {\n        cssColor = `linear-gradient(90deg, ${colors.join(', ')})`;\n      } else {\n        // Not sure what to default to, this will return gray, this should not happen though.\n        cssColor = theme.visualization.getColorByName('');\n      }\n    } else {\n      cssColor = color!;\n    }\n\n    let customStyle: CSSProperties;\n\n    if (lineStyle?.fill === 'dot' && !gradient) {\n      // make a circle bg image and repeat it\n      customStyle = {\n        backgroundImage: `radial-gradient(circle at 2px 2px, ${color} 2px, transparent 0)`,\n        backgroundSize: '4px 4px',\n        backgroundRepeat: 'space',\n      };\n    } else if (lineStyle?.fill === 'dash' && !gradient) {\n      // make a rectangle bg image and repeat it\n      customStyle = {\n        backgroundImage: `linear-gradient(to right, ${color} 100%, transparent 0%)`,\n        backgroundSize: '6px 4px',\n        backgroundRepeat: 'space',\n      };\n    } else {\n      customStyle = {\n        background: cssColor,\n        borderRadius: theme.shape.radius.pill,\n      };\n    }\n\n    return (\n      <div\n        data-testid=\"series-icon\"\n        ref={ref}\n        className={cx(className, styles.forcedColors, styles.container, noMargin ? null : styles.margin)}\n        style={customStyle}\n        {...restProps}\n      />\n    );\n  })\n);\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  margin: css({\n    marginRight: '8px',\n  }),\n  container: css({\n    display: 'inline-block',\n    width: '14px',\n    height: '4px',\n  }),\n  forcedColors: css({\n    '@media (forced-colors: active)': {\n      forcedColorAdjust: 'none',\n    },\n  }),\n});\n\nSeriesIcon.displayName = 'SeriesIcon';\n"],"names":["React","useTheme2","useStyles2","fieldColorModeRegistry","jsx","cx","css"],"mappings":"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"}