UNPKG

@grafana/ui

Version:
1 lines 4.45 kB
{"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;;;;"}