{"version":3,"file":"GraphWithLegend.cjs","sources":["../../../../src/graveyard/Graph/GraphWithLegend.tsx"],"sourcesContent":["// Libraries\n\nimport { css } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, GraphSeriesValue } from '@grafana/data';\nimport { LegendDisplayMode, LegendPlacement } from '@grafana/schema';\n\nimport { CustomScrollbar } from '../../components/CustomScrollbar/CustomScrollbar';\nimport { VizLegend } from '../../components/VizLegend/VizLegend';\nimport { VizLegendItem } from '../../components/VizLegend/types';\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { Graph, GraphProps } from './Graph';\n\nexport interface GraphWithLegendProps extends GraphProps {\n  legendDisplayMode: LegendDisplayMode;\n  legendVisibility: boolean;\n  placement: LegendPlacement;\n  hideEmpty?: boolean;\n  hideZero?: boolean;\n  sortLegendBy?: string;\n  sortLegendDesc?: boolean;\n  onSeriesToggle?: (label: string, event: React.MouseEvent<HTMLElement>) => void;\n  onToggleSort: (sortBy: string) => void;\n}\n\nconst shouldHideLegendItem = (data: GraphSeriesValue[][], hideEmpty = false, hideZero = false) => {\n  const isZeroOnlySeries = data.reduce((acc, current) => acc + (current[1] || 0), 0) === 0;\n  const isNullOnlySeries = !data.reduce((acc, current) => acc && current[1] !== null, true);\n\n  return (hideEmpty && isNullOnlySeries) || (hideZero && isZeroOnlySeries);\n};\n\nexport const GraphWithLegend = (props: GraphWithLegendProps) => {\n  const {\n    series,\n    timeRange,\n    width,\n    height,\n    showBars,\n    showLines,\n    showPoints,\n    sortLegendBy,\n    sortLegendDesc,\n    legendDisplayMode,\n    legendVisibility,\n    placement,\n    onSeriesToggle,\n    onToggleSort,\n    hideEmpty,\n    hideZero,\n    isStacked,\n    lineWidth,\n    onHorizontalRegionSelected,\n    timeZone,\n    children,\n    ariaLabel,\n  } = props;\n  const { graphContainer, wrapper, legendContainer } = useStyles2(getGraphWithLegendStyles, props.placement);\n\n  const legendItems = series.reduce<VizLegendItem[]>((acc, s) => {\n    return shouldHideLegendItem(s.data, hideEmpty, hideZero)\n      ? acc\n      : acc.concat([\n          {\n            label: s.label,\n            color: s.color || '',\n            disabled: !s.isVisible,\n            yAxis: s.yAxis.index,\n            getDisplayValues: () => s.info || [],\n          },\n        ]);\n  }, []);\n\n  return (\n    <div className={wrapper} aria-label={ariaLabel}>\n      <div className={graphContainer}>\n        <Graph\n          series={series}\n          timeRange={timeRange}\n          timeZone={timeZone}\n          showLines={showLines}\n          showPoints={showPoints}\n          showBars={showBars}\n          width={width}\n          height={height}\n          isStacked={isStacked}\n          lineWidth={lineWidth}\n          onHorizontalRegionSelected={onHorizontalRegionSelected}\n        >\n          {children}\n        </Graph>\n      </div>\n\n      {legendVisibility && (\n        <div className={legendContainer}>\n          <CustomScrollbar hideHorizontalTrack>\n            <VizLegend\n              items={legendItems}\n              displayMode={legendDisplayMode}\n              placement={placement}\n              sortBy={sortLegendBy}\n              sortDesc={sortLegendDesc}\n              onLabelClick={(item, event) => {\n                if (onSeriesToggle) {\n                  onSeriesToggle(item.label, event);\n                }\n              }}\n              onToggleSort={onToggleSort}\n            />\n          </CustomScrollbar>\n        </div>\n      )}\n    </div>\n  );\n};\n\nconst getGraphWithLegendStyles = (_theme: GrafanaTheme2, placement: LegendPlacement) => ({\n  wrapper: css({\n    display: 'flex',\n    flexDirection: placement === 'bottom' ? 'column' : 'row',\n  }),\n  graphContainer: css({\n    minHeight: '65%',\n    flexGrow: 1,\n  }),\n  legendContainer: css({\n    padding: '10px 0',\n    maxHeight: placement === 'bottom' ? '35%' : 'none',\n  }),\n});\n"],"names":["useStyles2","jsxs","jsx","Graph","CustomScrollbar","VizLegend","css"],"mappings":"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"}