{"version":3,"file":"GraphSeriesToggler.cjs","sources":["../../../../src/graveyard/Graph/GraphSeriesToggler.tsx"],"sourcesContent":["import { difference, isEqual } from 'lodash';\nimport { Component, type JSX } from 'react';\nimport * as React from 'react';\n\nimport { GraphSeriesXY } from '@grafana/data';\n\n/** @deprecated */\nexport interface GraphSeriesTogglerAPI {\n  onSeriesToggle: (label: string, event: React.MouseEvent<HTMLElement>) => void;\n  toggledSeries: GraphSeriesXY[];\n}\n\n/** @deprecated */\nexport interface GraphSeriesTogglerProps {\n  children: (api: GraphSeriesTogglerAPI) => JSX.Element;\n  series: GraphSeriesXY[];\n  onHiddenSeriesChanged?: (hiddenSeries: string[]) => void;\n}\n\n/** @deprecated */\nexport interface GraphSeriesTogglerState {\n  hiddenSeries: string[];\n  toggledSeries: GraphSeriesXY[];\n}\n\n/** @deprecated */\nexport class GraphSeriesToggler extends Component<GraphSeriesTogglerProps, GraphSeriesTogglerState> {\n  constructor(props: GraphSeriesTogglerProps) {\n    super(props);\n\n    this.onSeriesToggle = this.onSeriesToggle.bind(this);\n\n    this.state = {\n      hiddenSeries: [],\n      toggledSeries: props.series,\n    };\n  }\n\n  componentDidUpdate(prevProps: Readonly<GraphSeriesTogglerProps>) {\n    const { series } = this.props;\n    if (!isEqual(prevProps.series, series)) {\n      this.setState({ hiddenSeries: [], toggledSeries: series });\n    }\n  }\n\n  onSeriesToggle(label: string, event: React.MouseEvent<HTMLElement>) {\n    const { series, onHiddenSeriesChanged } = this.props;\n    const { hiddenSeries } = this.state;\n\n    if (event.ctrlKey || event.metaKey || event.shiftKey) {\n      // Toggling series with key makes the series itself to toggle\n      const newHiddenSeries =\n        hiddenSeries.indexOf(label) > -1\n          ? hiddenSeries.filter((series) => series !== label)\n          : hiddenSeries.concat([label]);\n\n      const toggledSeries = series.map((series) => ({\n        ...series,\n        isVisible: newHiddenSeries.indexOf(series.label) === -1,\n      }));\n      this.setState({ hiddenSeries: newHiddenSeries, toggledSeries }, () =>\n        onHiddenSeriesChanged ? onHiddenSeriesChanged(newHiddenSeries) : undefined\n      );\n      return;\n    }\n\n    // Toggling series with out key toggles all the series but the clicked one\n    const allSeriesLabels = series.map((series) => series.label);\n    const newHiddenSeries =\n      hiddenSeries.length + 1 === allSeriesLabels.length ? [] : difference(allSeriesLabels, [label]);\n    const toggledSeries = series.map((series) => ({\n      ...series,\n      isVisible: newHiddenSeries.indexOf(series.label) === -1,\n    }));\n\n    this.setState({ hiddenSeries: newHiddenSeries, toggledSeries }, () =>\n      onHiddenSeriesChanged ? onHiddenSeriesChanged(newHiddenSeries) : undefined\n    );\n  }\n\n  render() {\n    const { children } = this.props;\n    const { toggledSeries } = this.state;\n\n    return children({\n      onSeriesToggle: this.onSeriesToggle,\n      toggledSeries,\n    });\n  }\n}\n"],"names":["Component","isEqual","newHiddenSeries","series","toggledSeries","difference"],"mappings":"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"}