{"version":3,"file":"SeriesIcon.mjs","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';\n\nexport interface Props extends React.HTMLAttributes<HTMLDivElement> {\n  color?: string;\n  gradient?: string;\n  lineStyle?: LineStyle;\n}\n\nexport const SeriesIcon = React.memo(\n  React.forwardRef<HTMLDivElement, Props>(({ color, className, gradient, lineStyle, ...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)}\n        style={customStyle}\n        {...restProps}\n      />\n    );\n  })\n);\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  container: css({\n    marginRight: '8px',\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":[],"mappings":";;;;;;;;;;AAeO,MAAM,aAAa,KAAM,CAAA,IAAA;AAAA,EAC9B,KAAA,CAAM,UAAkC,CAAA,CAAC,EAAE,KAAA,EAAO,SAAW,EAAA,QAAA,EAAU,SAAW,EAAA,GAAG,SAAU,EAAA,EAAG,GAAQ,KAAA;AAhB5G,IAAA,IAAA,EAAA,EAAA,EAAA;AAiBI,IAAA,MAAM,QAAQ,SAAU,EAAA;AACxB,IAAM,MAAA,MAAA,GAAS,WAAW,SAAS,CAAA;AAEnC,IAAI,IAAA,QAAA;AAEJ,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,MAAM,UAAS,EAAuB,GAAA,CAAA,EAAA,GAAA,sBAAA,CAAA,GAAA,CAAI,QAAQ,CAAA,EAAE,cAArC,IAAiD,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,KAAA,CAAA;AAChE,MAAA,IAAI,iCAAQ,MAAQ,EAAA;AAClB,QAAA,QAAA,GAAW,CAA0B,uBAAA,EAAA,MAAA,CAAO,IAAK,CAAA,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,OACjD,MAAA;AAEL,QAAW,QAAA,GAAA,KAAA,CAAM,aAAc,CAAA,cAAA,CAAe,EAAE,CAAA;AAAA;AAClD,KACK,MAAA;AACL,MAAW,QAAA,GAAA,KAAA;AAAA;AAGb,IAAI,IAAA,WAAA;AAEJ,IAAA,IAAA,CAAI,SAAW,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,IAAA,MAAS,KAAS,IAAA,CAAC,QAAU,EAAA;AAE1C,MAAc,WAAA,GAAA;AAAA,QACZ,eAAA,EAAiB,sCAAsC,KAAK,CAAA,oBAAA,CAAA;AAAA,QAC5D,cAAgB,EAAA,SAAA;AAAA,QAChB,gBAAkB,EAAA;AAAA,OACpB;AAAA,KACS,MAAA,IAAA,CAAA,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAW,IAAS,MAAA,MAAA,IAAU,CAAC,QAAU,EAAA;AAElD,MAAc,WAAA,GAAA;AAAA,QACZ,eAAA,EAAiB,6BAA6B,KAAK,CAAA,sBAAA,CAAA;AAAA,QACnD,cAAgB,EAAA,SAAA;AAAA,QAChB,gBAAkB,EAAA;AAAA,OACpB;AAAA,KACK,MAAA;AACL,MAAc,WAAA,GAAA;AAAA,QACZ,UAAY,EAAA,QAAA;AAAA,QACZ,YAAA,EAAc,KAAM,CAAA,KAAA,CAAM,MAAO,CAAA;AAAA,OACnC;AAAA;AAGF,IACE,uBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,aAAY,EAAA,aAAA;AAAA,QACZ,GAAA;AAAA,QACA,WAAW,EAAG,CAAA,SAAA,EAAW,MAAO,CAAA,YAAA,EAAc,OAAO,SAAS,CAAA;AAAA,QAC9D,KAAO,EAAA,WAAA;AAAA,QACN,GAAG;AAAA;AAAA,KACN;AAAA,GAEH;AACH;AAEA,MAAM,SAAA,GAAY,CAAC,KAA0B,MAAA;AAAA,EAC3C,WAAW,GAAI,CAAA;AAAA,IACb,WAAa,EAAA,KAAA;AAAA,IACb,OAAS,EAAA,cAAA;AAAA,IACT,KAAO,EAAA,MAAA;AAAA,IACP,MAAQ,EAAA;AAAA,GACT,CAAA;AAAA,EACD,cAAc,GAAI,CAAA;AAAA,IAChB,gCAAkC,EAAA;AAAA,MAChC,iBAAmB,EAAA;AAAA;AACrB,GACD;AACH,CAAA,CAAA;AAEA,UAAA,CAAW,WAAc,GAAA,YAAA;;;;"}