@fluentui/react-charts 9.0.2 → 9.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -7
- package/dist/index.d.ts +767 -0
- package/lib/AreaChart.js +1 -0
- package/lib/AreaChart.js.map +1 -0
- package/lib/HeatMapChart.js +1 -0
- package/lib/HeatMapChart.js.map +1 -0
- package/lib/HorizontalBarChartWithAxis.js +1 -0
- package/lib/HorizontalBarChartWithAxis.js.map +1 -0
- package/lib/SankeyChart.js +1 -0
- package/lib/SankeyChart.js.map +1 -0
- package/lib/VerticalStackedBarChart.js +1 -0
- package/lib/VerticalStackedBarChart.js.map +1 -0
- package/lib/components/AreaChart/AreaChart.js +775 -0
- package/lib/components/AreaChart/AreaChart.js.map +1 -0
- package/lib/components/AreaChart/AreaChart.types.js +4 -0
- package/lib/components/AreaChart/AreaChart.types.js.map +1 -0
- package/lib/components/AreaChart/index.js +3 -0
- package/lib/components/AreaChart/index.js.map +1 -0
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +64 -0
- package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -0
- package/lib/components/CommonComponents/CartesianChart.js +30 -14
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/DeclarativeChart/DeclarativeChart.js +112 -65
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +570 -159
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DonutChart/Arc/Arc.js +1 -1
- package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.js +1 -1
- package/lib/components/DonutChart/DonutChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.js +3 -0
- package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +9 -0
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.js +588 -0
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -0
- package/lib/components/HeatMapChart/HeatMapChart.types.js +4 -0
- package/lib/components/HeatMapChart/HeatMapChart.types.js.map +1 -0
- package/lib/components/HeatMapChart/index.js +3 -0
- package/lib/components/HeatMapChart/index.js.map +1 -0
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js +46 -0
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +571 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js +4 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -0
- package/lib/components/HorizontalBarChartWithAxis/index.js +3 -0
- package/lib/components/HorizontalBarChartWithAxis/index.js.map +1 -0
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +76 -0
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -0
- package/lib/components/Legends/Legends.js +38 -37
- package/lib/components/Legends/Legends.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +43 -35
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.js +1022 -0
- package/lib/components/SankeyChart/SankeyChart.js.map +1 -0
- package/lib/components/SankeyChart/SankeyChart.types.js +3 -0
- package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -0
- package/lib/components/SankeyChart/index.js +3 -0
- package/lib/components/SankeyChart/index.js.map +1 -0
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +109 -0
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -0
- package/lib/components/ScatterChart/ScatterChart.js +46 -59
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +165 -88
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +904 -0
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -0
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js +1 -0
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -0
- package/lib/components/VerticalStackedBarChart/index.js +3 -0
- package/lib/components/VerticalStackedBarChart/index.js.map +1 -0
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +73 -0
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -0
- package/lib/index.js +5 -0
- package/lib/index.js.map +1 -1
- package/lib/types/DataPoint.js +1 -3
- package/lib/types/DataPoint.js.map +1 -1
- package/lib/utilities/SVGTooltipText.js +49 -4
- package/lib/utilities/SVGTooltipText.js.map +1 -1
- package/lib/utilities/colors.js +20 -0
- package/lib/utilities/colors.js.map +1 -1
- package/lib/utilities/string.js +32 -0
- package/lib/utilities/string.js.map +1 -0
- package/lib/utilities/test-data.js +53 -0
- package/lib/utilities/test-data.js.map +1 -1
- package/lib/utilities/utilities.js +90 -18
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/AreaChart.js +6 -0
- package/lib-commonjs/AreaChart.js.map +1 -0
- package/lib-commonjs/HeatMapChart.js +6 -0
- package/lib-commonjs/HeatMapChart.js.map +1 -0
- package/lib-commonjs/HorizontalBarChartWithAxis.js +6 -0
- package/lib-commonjs/HorizontalBarChartWithAxis.js.map +1 -0
- package/lib-commonjs/SankeyChart.js +6 -0
- package/lib-commonjs/SankeyChart.js.map +1 -0
- package/lib-commonjs/VerticalStackedBarChart.js +6 -0
- package/lib-commonjs/VerticalStackedBarChart.js.map +1 -0
- package/lib-commonjs/components/AreaChart/AreaChart.js +781 -0
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -0
- package/lib-commonjs/components/AreaChart/AreaChart.types.js +7 -0
- package/lib-commonjs/components/AreaChart/AreaChart.types.js.map +1 -0
- package/lib-commonjs/components/AreaChart/index.js +8 -0
- package/lib-commonjs/components/AreaChart/index.js.map +1 -0
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +104 -0
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +29 -14
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +120 -73
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +592 -178
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.js +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.js +3 -0
- package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +9 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +599 -0
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -0
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js +7 -0
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js.map +1 -0
- package/lib-commonjs/components/HeatMapChart/index.js +8 -0
- package/lib-commonjs/components/HeatMapChart/index.js.map +1 -0
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js +68 -0
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +580 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js +7 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/index.js +8 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/index.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +116 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -0
- package/lib-commonjs/components/Legends/Legends.js +37 -37
- package/lib-commonjs/components/Legends/Legends.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +41 -33
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.js +1038 -0
- package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -0
- package/lib-commonjs/components/SankeyChart/SankeyChart.types.js +6 -0
- package/lib-commonjs/components/SankeyChart/SankeyChart.types.js.map +1 -0
- package/lib-commonjs/components/SankeyChart/index.js +8 -0
- package/lib-commonjs/components/SankeyChart/index.js.map +1 -0
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +179 -0
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +45 -58
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +164 -87
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +915 -0
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js +6 -0
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/index.js +8 -0
- package/lib-commonjs/components/VerticalStackedBarChart/index.js.map +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +120 -0
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -0
- package/lib-commonjs/index.js +5 -0
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/types/DataPoint.js +1 -3
- package/lib-commonjs/types/DataPoint.js.map +1 -1
- package/lib-commonjs/utilities/SVGTooltipText.js +49 -4
- package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
- package/lib-commonjs/utilities/colors.js +23 -0
- package/lib-commonjs/utilities/colors.js.map +1 -1
- package/lib-commonjs/utilities/string.js +29 -0
- package/lib-commonjs/utilities/string.js.map +1 -0
- package/lib-commonjs/utilities/test-data.js +59 -0
- package/lib-commonjs/utilities/test-data.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +94 -17
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +11 -8
- package/lib/components/DeclarativeChart/PlotlySchema.js +0 -7
- package/lib/components/DeclarativeChart/PlotlySchema.js.map +0 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchema.js +0 -10
- package/lib-commonjs/components/DeclarativeChart/PlotlySchema.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["HorizontalBarChartWithAxis.tsx"],"sourcesContent":["import * as React from 'react';\nimport { max as d3Max } from 'd3-array';\nimport { select as d3Select } from 'd3-selection';\nimport { scaleLinear as d3ScaleLinear, ScaleLinear as D3ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\nimport { Legend } from '../../components/Legends/Legends.types';\nimport { Legends } from '../../components/Legends/Legends';\nimport { useId } from '@fluentui/react-utilities';\nimport { useHorizontalBarChartWithAxisStyles } from './useHorizontalBarChartWithAxisStyles.styles';\nimport {\n AccessibilityProps,\n HorizontalBarChartWithAxisDataPoint,\n RefArrayData,\n Margins,\n ChartPopoverProps,\n Chart,\n} from '../../index';\nimport { ChildProps } from '../CommonComponents/CartesianChart.types';\nimport { CartesianChart } from '../CommonComponents/CartesianChart';\nimport { HorizontalBarChartWithAxisProps } from './HorizontalBarChartWithAxis.types';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n YAxisType,\n XAxisTypes,\n NumericAxis,\n StringAxis,\n getTypeOfAxis,\n getNextColor,\n areArraysEqual,\n useRtl,\n DataVizPalette,\n getColorFromToken,\n} from '../../utilities/index';\ntype ColorScale = (_p?: number) => string;\n\nexport const HorizontalBarChartWithAxis: React.FunctionComponent<HorizontalBarChartWithAxisProps> = React.forwardRef<\n HTMLDivElement,\n HorizontalBarChartWithAxisProps\n>((props, forwardedRef) => {\n const _refArray: RefArrayData[] = [];\n const _calloutId: string = useId('callout');\n const _isRtl: boolean = useRtl();\n const _tooltipId: string = useId('HBCWATooltipID_');\n const _xAxisType: XAxisTypes =\n props.data! && props.data!.length > 0\n ? (getTypeOfAxis(props.data![0].x, true) as XAxisTypes)\n : XAxisTypes.NumericAxis;\n const _yAxisType: YAxisType =\n props.data! && props.data!.length > 0\n ? (getTypeOfAxis(props.data![0].y, false) as YAxisType)\n : YAxisType.StringAxis;\n const _emptyChartId: string = useId('_HBCWithAxis_empty');\n let _points: HorizontalBarChartWithAxisDataPoint[] = [];\n let _barHeight: number = 0;\n let _colors: string[] = [];\n let _margins: Margins;\n let _bars: JSX.Element[];\n let _yAxisLabels: string[];\n let _xMax: number;\n let _calloutAnchorPoint: HorizontalBarChartWithAxisDataPoint | null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let tooltipElement: any;\n const cartesianChartRef = React.useRef<Chart>(null);\n\n const [color, setColor] = React.useState<string>('');\n const [dataForHoverCard, setDataForHoverCard] = React.useState<number>(0);\n const [isLegendSelected, setIsLegendSelected] = React.useState<boolean>(\n (props.legendProps?.selectedLegends && props.legendProps.selectedLegends.length > 0) ||\n props.legendProps?.selectedLegend !== undefined,\n );\n const [isLegendHovered, setIsLegendHovered] = React.useState<boolean>(false);\n const [selectedLegendTitle, setSelectedLegendTitle] = React.useState<string>(props.legendProps?.selectedLegend ?? '');\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string>('');\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<HorizontalBarChartWithAxisDataPoint>();\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps>();\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const prevPropsRef = React.useRef<HorizontalBarChartWithAxisProps | null>(null);\n\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n }),\n [],\n );\n\n const classes = useHorizontalBarChartWithAxisStyles(props);\n function _adjustProps(): void {\n _points = props.data || [];\n _barHeight = props.barHeight || 32;\n const defaultPalette: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n ];\n _colors = props.colors! || defaultPalette;\n }\n\n function _getMargins(margins: Margins) {\n _margins = margins;\n }\n\n function _renderContentForOnlyBars(point: HorizontalBarChartWithAxisDataPoint): JSX.Element {\n const { useSingleColor = false } = props;\n let selectedPointIndex = 0;\n props.data!.forEach((yDataPoint: HorizontalBarChartWithAxisDataPoint, index: number) => {\n if (yDataPoint.y === point.y) {\n selectedPointIndex = index;\n }\n });\n // eslint-disable-next-line @typescript-eslint/no-shadow\n let color: string;\n if (useSingleColor) {\n //if useSingle color , then check if user has given a palette or not\n // and pick the first color from that or else from our paltette.\n color = props.colors ? _createColors()(1) : getNextColor(1, 0);\n } else {\n color = point.color ? point.color : props.colors ? _createColors()(point.x) : getNextColor(selectedPointIndex, 0);\n }\n return (\n <>\n <ChartPopover\n XValue={point.xAxisCalloutData || point.x.toString()}\n legend={point.legend}\n YValue={point.yAxisCalloutData || point.y}\n color={color}\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n />\n </>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n function _renderCallout(props?: HorizontalBarChartWithAxisDataPoint): JSX.Element | null {\n return props ? _renderContentForOnlyBars(props) : null;\n }\n\n function _getCustomizedCallout() {\n return props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps, _renderCallout)\n : null;\n }\n\n function _getGraphData(\n xScale: NumericAxis,\n yScale: NumericAxis | StringAxis,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n yElement?: SVGElement | null,\n ) {\n return (_bars =\n _yAxisType === YAxisType.NumericAxis\n ? _createNumericBars(containerHeight, containerWidth, xElement!, yElement!)\n : _createStringBars(containerHeight, containerWidth, xElement!, yElement!));\n }\n\n function _createColors(): D3ScaleLinear<string, string> | ColorScale {\n const increment = _colors.length <= 1 ? 1 : 1 / (_colors.length - 1);\n const { useSingleColor = false } = props;\n if (useSingleColor) {\n return (_p?: number) => {\n const { colors } = props;\n return colors && colors.length > 0 ? colors[0] : getColorFromToken(DataVizPalette.color16);\n };\n }\n const domainValues = [];\n for (let i = 0; i < _colors.length; i++) {\n domainValues.push(increment * i * _xMax);\n }\n const colorScale = d3ScaleLinear<string>().domain(domainValues).range(_colors);\n return colorScale;\n }\n\n function _refCallback(element: SVGRectElement, legendTitle: string): void {\n _refArray.push({ index: legendTitle, refElement: element });\n }\n\n function _onBarHover(\n point: HorizontalBarChartWithAxisDataPoint,\n // eslint-disable-next-line @typescript-eslint/no-shadow\n color: string,\n mouseEvent: React.MouseEvent<SVGElement, MouseEvent>,\n ): void {\n mouseEvent.persist();\n // eslint-disable-next-line @typescript-eslint/no-shadow\n if ((isLegendSelected === false || _isLegendHighlighted(point.legend)) && _calloutAnchorPoint !== point) {\n _calloutAnchorPoint = point;\n setPopoverOpen(true);\n _updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n setDataForHoverCard(point.x);\n setSelectedLegendTitle(point.legend!);\n setColor(props.useSingleColor || props.enableGradient ? color : point.color!);\n // To display callout value, if no callout value given, taking given point.x value as a string.\n setXCalloutValue(point.yAxisCalloutData! || point.y.toString());\n setYCalloutValue(point.xAxisCalloutData || point.x.toString());\n setDataPointCalloutProps(point);\n setCallOutAccessibilityData(point.callOutAccessibilityData);\n }\n }\n\n function _onBarLeave(): void {\n setPopoverOpen(false);\n }\n\n function _handleChartMouseLeave(): void {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n function _onBarFocus(point: HorizontalBarChartWithAxisDataPoint, refArrayIndexNumber: number, color: string): void {\n if ((isLegendSelected === false || _isLegendHighlighted(point.legend)) && _calloutAnchorPoint !== point) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n _refArray.forEach((obj: RefArrayData, index: number) => {\n if (refArrayIndexNumber === index) {\n setPopoverOpen(true);\n setSelectedLegendTitle(point.legend!);\n setDataForHoverCard(point.x);\n setColor(props.useSingleColor ? color : point.color!);\n setXCalloutValue(point.yAxisCalloutData || point.y.toString());\n setYCalloutValue(point.xAxisCalloutData! || point.x.toString());\n setDataPointCalloutProps(point);\n setCallOutAccessibilityData(point.callOutAccessibilityData);\n }\n });\n }\n }\n\n function _getScales(\n containerHeight: number,\n containerWidth: number,\n isNumericScale: boolean,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): { xBarScale: any; yBarScale: any } {\n if (isNumericScale) {\n const xMax = d3Max(_points, (point: HorizontalBarChartWithAxisDataPoint) => point.x as number)!;\n const yMax = d3Max(_points, (point: HorizontalBarChartWithAxisDataPoint) => point.y as number)!;\n const xBarScale = d3ScaleLinear()\n .domain(_isRtl ? [xMax, 0] : [0, xMax])\n .nice()\n .range([_margins.left!, containerWidth - _margins.right!]);\n const yBarScale = d3ScaleLinear()\n .domain([0, yMax])\n .range([containerHeight - _margins.bottom!, _margins.top!]);\n return { xBarScale, yBarScale };\n } else {\n const xMax = d3Max(_points, (point: HorizontalBarChartWithAxisDataPoint) => point.x as number)!;\n // please note these padding default values must be consistent in here\n // and CatrtesianChartBase w for more details refer example\n // http://using-d3js.com/04_07_ordinal_scales.html\n const yBarScale = d3ScaleBand()\n .domain(_yAxisLabels)\n .range([containerHeight - _margins.bottom! - _barHeight / 2, _margins.top! + _barHeight / 2])\n .padding(props.yAxisPadding || 0);\n\n const xBarScale = d3ScaleLinear()\n .domain(_isRtl ? [xMax, 0] : [0, xMax])\n .nice()\n .range([_margins.left!, containerWidth - _margins.right!]);\n return { xBarScale, yBarScale };\n }\n }\n\n function _createNumericBars(\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement,\n yElement: SVGElement,\n ): JSX.Element[] {\n const { useSingleColor = false } = props;\n const { xBarScale, yBarScale } = _getScales(containerHeight, containerWidth, true);\n const sortedBars: HorizontalBarChartWithAxisDataPoint[] = [..._points];\n sortedBars.sort((a, b) => {\n const aValue = typeof a.y === 'number' ? a.y : parseFloat(a.y);\n const bValue = typeof b.y === 'number' ? b.y : parseFloat(b.y);\n return bValue - aValue;\n });\n\n const bars = sortedBars.map((point: HorizontalBarChartWithAxisDataPoint, index: number) => {\n let shouldHighlight = true;\n if (isLegendHovered || isLegendSelected) {\n shouldHighlight = _isLegendHighlighted(point.legend);\n }\n const barHeight: number = Math.max(yBarScale(point.y), 0);\n if (barHeight < 1) {\n return <React.Fragment key={point.x}> </React.Fragment>;\n }\n let startColor: string;\n if (useSingleColor) {\n //if useSingle color , then check if user has given a palette or not\n // and pick the first color from that or else from our paltette.\n startColor = props.colors ? _createColors()(1) : getNextColor(1, 0);\n } else {\n startColor = props.colors ? _createColors()(point.x) : getNextColor(index, 0);\n }\n\n startColor = point.color && !useSingleColor ? point.color : startColor;\n\n return (\n <React.Fragment key={`${index}_${point.x}`}>\n <rect\n key={point.y}\n x={_isRtl ? xBarScale(point.x) : _margins.left!}\n y={yBarScale(point.y) - _barHeight / 2}\n data-is-focusable={shouldHighlight}\n width={\n _isRtl\n ? containerWidth - _margins.right! - Math.max(xBarScale(point.x), 0)\n : Math.max(xBarScale(point.x), 0) - _margins.left!\n }\n height={_barHeight}\n ref={(e: SVGRectElement) => {\n _refCallback(e, point.legend!);\n }}\n rx={props.roundCorners ? 3 : 0}\n onClick={point.onClick}\n onMouseOver={(event: React.MouseEvent<SVGElement, MouseEvent>) => _onBarHover(point, startColor, event)}\n aria-label={_getAriaLabel(point)}\n role=\"img\"\n aria-labelledby={`toolTip${_calloutId}`}\n onMouseLeave={_onBarLeave}\n onFocus={() => _onBarFocus(point, index, startColor)}\n onBlur={_onBarLeave}\n fill={startColor}\n opacity={shouldHighlight ? 1 : 0.1}\n tabIndex={point.legend !== '' ? 0 : undefined}\n />\n </React.Fragment>\n );\n });\n return bars;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _tooltipOfYAxislabels(ytooltipProps: any) {\n const { tooltipCls, yAxis, id } = ytooltipProps;\n if (yAxis === null) {\n return null;\n }\n const div = d3Select('body').append('div').attr('id', id).attr('class', tooltipCls).style('opacity', 0);\n const aa = yAxis!.selectAll('#BaseSpan')._groups[0];\n const baseSpanLength = aa && Object.keys(aa)!.length;\n const originalDataArray: string[] = [];\n for (let i = 0; i < baseSpanLength; i++) {\n const originalData = aa[i].dataset && (Object.values(aa[i].dataset)[0] as string);\n originalDataArray.push(originalData);\n }\n const tickObject = yAxis!.selectAll('.tick')._groups[0];\n const tickObjectLength = tickObject && Object.keys(tickObject)!.length;\n for (let i = 0; i < tickObjectLength; i++) {\n const d1 = tickObject[i];\n d3Select(d1)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .on('mouseover', (event: any, d) => {\n if (!tooltipElement) {\n div.style('opacity', 0.9);\n div\n .text(originalDataArray[i])\n .style('left', event.pageX + 'px')\n .style('top', event.pageY - 28 + 'px');\n }\n })\n .on('mouseout', d => {\n div.style('opacity', 0);\n });\n }\n }\n\n function _createStringBars(\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement,\n yElement: SVGElement,\n ): JSX.Element[] {\n const { xBarScale, yBarScale } = _getScales(containerHeight, containerWidth, false);\n const { useSingleColor = false } = props;\n const bars = _points.map((point: HorizontalBarChartWithAxisDataPoint, index: number) => {\n let shouldHighlight = true;\n if (isLegendHovered || isLegendSelected) {\n shouldHighlight = _isLegendHighlighted(point.legend);\n }\n const barHeight: number = Math.max(yBarScale(point.y), 0);\n if (barHeight < 1) {\n return <React.Fragment key={point.x}> </React.Fragment>;\n }\n let startColor: string;\n if (useSingleColor) {\n //if useSingle color , then check if user has given a palette or not\n // and pick the first color from that or else from our paltette.\n startColor = props.colors ? _createColors()(1) : getNextColor(1, 0);\n } else {\n startColor = props.colors ? _createColors()(point.x) : getNextColor(index, 0);\n }\n\n startColor = point.color && !useSingleColor ? point.color : startColor;\n\n return (\n <React.Fragment key={`${index}_${point.x}`}>\n <rect\n transform={`translate(0,${0.5 * (yBarScale.bandwidth() - _barHeight)})`}\n key={point.x}\n x={_isRtl ? xBarScale(point.x) : _margins.left!}\n y={yBarScale(point.y)}\n rx={props.roundCorners ? 3 : 0}\n width={\n _isRtl\n ? containerWidth - _margins.right! - Math.max(xBarScale(point.x), 0)\n : Math.max(xBarScale(point.x), 0) - _margins.left!\n }\n height={_barHeight}\n aria-labelledby={`toolTip${_calloutId}`}\n aria-label={_getAriaLabel(point)}\n role=\"img\"\n ref={(e: SVGRectElement) => {\n _refCallback(e, point.legend!);\n }}\n onClick={point.onClick}\n onMouseOver={(event: React.MouseEvent<SVGElement, MouseEvent>) => _onBarHover(point, startColor, event)}\n onMouseLeave={_onBarLeave}\n onBlur={_onBarLeave}\n data-is-focusable={shouldHighlight}\n opacity={shouldHighlight ? 1 : 0.1}\n onFocus={() => _onBarFocus(point, index, startColor)}\n fill={startColor}\n tabIndex={point.legend !== '' ? 0 : undefined}\n />\n </React.Fragment>\n );\n });\n\n // Removing un wanted tooltip div from DOM, when prop not provided, for proper cleanup\n // of unwanted DOM elements, to prevent flacky behaviour in tooltips , that might occur\n // in creating tooltips when tooltips are enabled( as we try to recreate a tspan with _tooltipId)\n if (!props.showYAxisLablesTooltip) {\n try {\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n //eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at y axis labels.\n if (props.showYAxisLablesTooltip) {\n const yAxisElement = d3Select(yElement).call(yBarScale);\n if (!tooltipElement) {\n try {\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n //eslint-disable-next-line no-empty\n } catch (e) {}\n }\n const ytooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n yAxis: yAxisElement,\n };\n yAxisElement && _tooltipOfYAxislabels(ytooltipProps);\n }\n return bars;\n }\n\n function _onLegendHover(customMessage: string): void {\n if (!_isLegendSelected()) {\n setIsLegendHovered(true);\n setSelectedLegendTitle(customMessage);\n }\n }\n\n function _onLegendLeave(isLegendFocused?: boolean): void {\n if (!!isLegendFocused || !_isLegendSelected()) {\n setIsLegendHovered(false);\n setSelectedLegendTitle('');\n setIsLegendSelected(isLegendFocused ? false : _isLegendSelected());\n }\n }\n\n function _getLegendData(data: HorizontalBarChartWithAxisDataPoint[]): JSX.Element {\n const { useSingleColor } = props;\n const actions: Legend[] = [];\n\n data.forEach((point: HorizontalBarChartWithAxisDataPoint, _index: number) => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const color: string = useSingleColor ? (props.colors ? _createColors()(1) : getNextColor(1, 0)) : point.color!;\n\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: point.legend!,\n color,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(point.legend!);\n },\n // eslint-disable-next-line @typescript-eslint/no-shadow\n onMouseOutAction: (isLegendSelected?: boolean) => {\n _onLegendLeave(isLegendSelected);\n },\n };\n actions.push(legend);\n });\n const legends = (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={_onLegendSelectionChange}\n />\n );\n return legends;\n }\n\n function _isLegendSelected(): boolean {\n return isLegendSelected!;\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n function _isLegendHighlighted(legend?: string) {\n return _getHighlightedLegend().includes(legend!);\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : selectedLegendTitle ? [selectedLegendTitle] : [];\n }\n\n function _onLegendSelectionChange(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(selectedLegends);\n setSelectedLegendTitle(currentLegend?.title!);\n } else {\n setSelectedLegends(selectedLegends.slice(-1));\n setSelectedLegendTitle(currentLegend?.title!);\n }\n setIsLegendSelected(selectedLegends.length > 0);\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n }\n\n function _getAxisData(yAxisData: IAxisData) {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n // For HBCWA x and y Values are swapped\n const { yAxisDomainValues: domainValue } = yAxisData;\n _xMax = Math.max(domainValue[domainValue.length - 1], props.xMaxValue || 0);\n }\n }\n function _getAriaLabel(point: HorizontalBarChartWithAxisDataPoint): string {\n const xValue = point.xAxisCalloutData || point.x;\n const yValue = point.yAxisCalloutData || point.y;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ` + `${yValue}.`;\n }\n\n function _getChartTitle(): string {\n const { chartTitle, data } = props;\n return (chartTitle ? `${chartTitle}. ` : '') + `Horizontal bar chart with ${data?.length || 0} bars. `;\n }\n\n function _isChartEmpty(): boolean {\n return !(props.data && props.data.length > 0);\n }\n\n function _updatePosition(newX: number, newY: number): void {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n if (!_isChartEmpty()) {\n _adjustProps();\n const calloutProps: ChartPopoverProps = {\n color: color,\n legend: selectedLegendTitle,\n XValue: xCalloutValue,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData),\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n isCartesian: true,\n isPopoverOpen,\n clickPosition,\n };\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n\n const reversedBars = [..._points].reverse();\n _yAxisLabels = reversedBars.map((point: HorizontalBarChartWithAxisDataPoint) => point.y as string);\n _xMax = Math.max(d3Max(_points, (point: HorizontalBarChartWithAxisDataPoint) => point.x)!, props.xMaxValue || 0);\n const legendBars: JSX.Element = _getLegendData(_points);\n return (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_points}\n chartType={ChartTypes.HorizontalBarChartWithAxis}\n xAxisType={_xAxisType}\n yAxisType={_yAxisType}\n stringDatasetForYAxisDomain={_yAxisLabels}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n barwidth={_barHeight}\n getmargins={_getMargins}\n getGraphData={_getGraphData}\n getAxisData={_getAxisData}\n onChartMouseLeave={_handleChartMouseLeave}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line @typescript-eslint/no-shadow\n children={(props: ChildProps) => {\n return (\n <>\n <g>{_bars}</g>\n </>\n );\n }}\n />\n );\n } else {\n return (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n }\n});\nHorizontalBarChartWithAxis.displayName = 'HorizontalBarChartWithAxis';\n"],"names":["HorizontalBarChartWithAxis","React","forwardRef","props","forwardedRef","_refArray","_calloutId","useId","_isRtl","useRtl","_tooltipId","_xAxisType","data","length","getTypeOfAxis","x","XAxisTypes","NumericAxis","_yAxisType","y","YAxisType","StringAxis","_emptyChartId","_points","_barHeight","_colors","_margins","_bars","_yAxisLabels","_xMax","_calloutAnchorPoint","tooltipElement","cartesianChartRef","useRef","color","setColor","useState","dataForHoverCard","setDataForHoverCard","isLegendSelected","setIsLegendSelected","legendProps","selectedLegends","selectedLegend","undefined","isLegendHovered","setIsLegendHovered","selectedLegendTitle","setSelectedLegendTitle","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","setSelectedLegends","dataPointCalloutProps","setDataPointCalloutProps","callOutAccessibilityData","setCallOutAccessibilityData","isPopoverOpen","setPopoverOpen","clickPosition","setClickPosition","prevPropsRef","useEffect","current","prevProps","areArraysEqual","useImperativeHandle","componentRef","chartContainer","classes","useHorizontalBarChartWithAxisStyles","_adjustProps","barHeight","defaultPalette","getColorFromToken","DataVizPalette","color6","color1","color5","color7","colors","_getMargins","margins","_renderContentForOnlyBars","point","useSingleColor","selectedPointIndex","forEach","yDataPoint","index","_createColors","getNextColor","createElement","Fragment","ChartPopover","XValue","xAxisCalloutData","toString","legend","YValue","yAxisCalloutData","culture","_renderCallout","_getCustomizedCallout","onRenderCalloutPerDataPoint","_getGraphData","xScale","yScale","containerHeight","containerWidth","xElement","yElement","_createNumericBars","_createStringBars","increment","_p","color16","domainValues","i","push","colorScale","d3ScaleLinear","domain","range","_refCallback","element","legendTitle","refElement","_onBarHover","mouseEvent","persist","_isLegendHighlighted","_updatePosition","clientX","clientY","enableGradient","_onBarLeave","_handleChartMouseLeave","_onBarFocus","refArrayIndexNumber","obj","_getScales","isNumericScale","xMax","d3Max","yMax","xBarScale","nice","left","right","yBarScale","bottom","top","d3ScaleBand","padding","yAxisPadding","sortedBars","sort","a","b","aValue","parseFloat","bValue","bars","map","shouldHighlight","Math","max","key","startColor","rect","data-is-focusable","width","height","ref","e","rx","roundCorners","onClick","onMouseOver","event","aria-label","_getAriaLabel","role","aria-labelledby","onMouseLeave","onFocus","onBlur","fill","opacity","tabIndex","_tooltipOfYAxislabels","ytooltipProps","tooltipCls","yAxis","id","div","d3Select","append","attr","style","aa","selectAll","_groups","baseSpanLength","Object","keys","originalDataArray","originalData","dataset","values","tickObject","tickObjectLength","d1","on","d","text","pageX","pageY","transform","bandwidth","showYAxisLablesTooltip","document","getElementById","remove","yAxisElement","call","tooltip","_onLegendHover","customMessage","_isLegendSelected","_onLegendLeave","isLegendFocused","_getLegendData","actions","_index","title","hoverAction","onMouseOutAction","legends","Legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onChange","_onLegendSelectionChange","_getHighlightedLegend","includes","currentLegend","canSelectMultipleLegends","slice","_getAxisData","yAxisData","yAxisDomainValues","domainValue","xMaxValue","xValue","yValue","ariaLabel","_getChartTitle","chartTitle","_isChartEmpty","newX","newY","threshold","distance","sqrt","pow","calloutProps","getAccessibleDataObject","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","isCartesian","tickParams","tickValues","tickFormat","reversedBars","reverse","legendBars","CartesianChart","points","chartType","ChartTypes","xAxisType","yAxisType","stringDatasetForYAxisDomain","barwidth","getmargins","getGraphData","getAxisData","onChartMouseLeave","children","g","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["HorizontalBarChartWithAxis.types.ts"],"sourcesContent":["import { RenderFunction } from '../../utilities/index';\nimport {\n CartesianChartProps,\n CartesianChartStyleProps,\n CartesianChartStyles,\n HorizontalBarChartWithAxisDataPoint,\n} from '../../index';\n\n/**\n * Horizontal Bar Chart with Axis properties\n * {@docCategory HorizontalBarChartWithAxis}\n */\nexport interface HorizontalBarChartWithAxisProps extends CartesianChartProps {\n /**\n * Data to render in the chart.\n */\n data?: HorizontalBarChartWithAxisDataPoint[];\n\n /**\n * Define a custom callout renderer for a data point.\n */\n onRenderCalloutPerDataPoint?: RenderFunction<HorizontalBarChartWithAxisDataPoint>;\n\n /**\n * Width of each bar in the chart.\n */\n barHeight?: number;\n\n /**\n * Colors from which to select the color of each bar.\n */\n colors?: string[];\n\n /**\n * chart title for the chart\n */\n chartTitle?: string;\n\n /**\n * This prop makes sure that all the bars are of same color.\n * it will take the first color from the array of colors in\n * prop `colors` or if `colors` prop is not given then default color is palette.blueLight\n * @default false\n */\n useSingleColor?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: HorizontalBarChartWithAxisStyles;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n\n /**\n * it's padding between bar's or lines in the graph\n */\n yAxisPadding?: number;\n\n /**\n *@default false\n *Used for to elipse y axis labes and show tooltip on x axis labels\n */\n showYAxisLablesTooltip?: boolean;\n\n /**\n *@default false\n *Used for showing complete y axis lables */\n showYAxisLables?: boolean;\n\n /**\n * @default false\n * The prop used to enable gradient fill color for the chart.\n */\n enableGradient?: boolean;\n\n /**\n * @default false\n * The prop used to enable rounded corners for the bars.\n */\n roundCorners?: boolean;\n}\n\n/**\n * Horizontal Bar Chart with Axis style properties\n * {@docCategory HorizontalBarChartWithAxis}\n */\nexport interface HorizontalBarChartWithAxisStyleProps extends CartesianChartStyleProps {\n /**\n * color of the datapoint legend\n */\n legendColor?: string;\n}\n\n/**\n * Horizontal Bar Chart with Axis styles\n * {@docCategory HorizontalBarChartWithAxis}\n */\nexport interface HorizontalBarChartWithAxisStyles extends CartesianChartStyles {\n /**\n * Style for the chart label.\n *\n */\n chartLabel?: string;\n\n /**\n * Style for the line representing the domain of the x-axis.\n *\n */\n xAxisDomain?: string;\n\n /**\n * Style for the lines representing the ticks along the x-axis.\n *\n */\n xAxisTicks?: string;\n\n /**\n * Style for the text labeling each tick along the x-axis.\n *\n */\n xAxisText?: string;\n\n /**\n * Style for the line representing the domain of the y-axis.\n *\n */\n yAxisDomain?: string;\n\n /**\n * Style for the lines representing the ticks along the y-axis.\n *\n */\n yAxisTicks?: string;\n\n /**\n * Style for the text labeling each tick along the y-axis.\n *\n */\n yAxisText?: string;\n\n /**\n * Style to change the opacity of bars in dataviz when we hover on a single bar or legends\n */\n opacityChangeOnHover: string;\n}\n"],"names":[],"rangeMappings":";;;","mappings":"AAgGA;;;CAGC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
const _export_star = require("@swc/helpers/_/_export_star");
|
|
6
|
+
_export_star._(require("./HorizontalBarChartWithAxis"), exports);
|
|
7
|
+
_export_star._(require("./HorizontalBarChartWithAxis.types"), exports);
|
|
8
|
+
_export_star._(require("../../types/index"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"sourcesContent":["export * from './HorizontalBarChartWithAxis';\nexport * from './HorizontalBarChartWithAxis.types';\nexport * from '../../types/index';\n"],"names":[],"rangeMappings":";;;;;;;","mappings":";;;;;uBAAc;uBACA;uBACA"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
hbcWithAxisClassNames: function() {
|
|
13
|
+
return hbcWithAxisClassNames;
|
|
14
|
+
},
|
|
15
|
+
useHorizontalBarChartWithAxisStyles: function() {
|
|
16
|
+
return useHorizontalBarChartWithAxisStyles;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _react = require("@griffel/react");
|
|
20
|
+
const hbcWithAxisClassNames = {
|
|
21
|
+
opacityChangeOnHover: 'fui-hbcwa__opacityChangeOnHover',
|
|
22
|
+
xAxisTicks: 'fui-hbcwa__xAxisTicks',
|
|
23
|
+
tooltip: 'fui-hbcwa__tooltip',
|
|
24
|
+
chartLabel: '',
|
|
25
|
+
xAxisDomain: '',
|
|
26
|
+
xAxisText: '',
|
|
27
|
+
yAxisDomain: '',
|
|
28
|
+
yAxisTicks: '',
|
|
29
|
+
yAxisText: '',
|
|
30
|
+
root: '',
|
|
31
|
+
xAxis: '',
|
|
32
|
+
yAxis: '',
|
|
33
|
+
legendContainer: '',
|
|
34
|
+
hover: '',
|
|
35
|
+
calloutContentRoot: '',
|
|
36
|
+
calloutContentX: '',
|
|
37
|
+
calloutContentY: '',
|
|
38
|
+
descriptionMessage: '',
|
|
39
|
+
calloutDateTimeContainer: '',
|
|
40
|
+
calloutInfoContainer: '',
|
|
41
|
+
calloutBlockContainer: '',
|
|
42
|
+
calloutBlockContainertoDrawShapefalse: '',
|
|
43
|
+
calloutBlockContainertoDrawShapetrue: '',
|
|
44
|
+
calloutlegendText: '',
|
|
45
|
+
axisTitle: '',
|
|
46
|
+
chartTitle: '',
|
|
47
|
+
shapeStyles: '',
|
|
48
|
+
chartWrapper: ''
|
|
49
|
+
};
|
|
50
|
+
const useStyles = /*#__PURE__*/ (0, _react.__styles)({
|
|
51
|
+
opacityChangeOnHover: {
|
|
52
|
+
abs64n: "f9das1l"
|
|
53
|
+
},
|
|
54
|
+
xAxisTicks: {},
|
|
55
|
+
tooltip: {
|
|
56
|
+
Bahqtrf: "fk6fouc",
|
|
57
|
+
Be2twd7: "fkhj508",
|
|
58
|
+
Bhrd7zp: "figsok6",
|
|
59
|
+
Bg96gwp: "f1i3iumi",
|
|
60
|
+
mc9l5x: "f22iagw",
|
|
61
|
+
Beiy3e4: "f1vx9l62",
|
|
62
|
+
z8tnut: "f17mpqex",
|
|
63
|
+
z189sj: [
|
|
64
|
+
"f1vdfbxk",
|
|
65
|
+
"f1f5gg8d"
|
|
66
|
+
],
|
|
67
|
+
Byoj8tv: "fdvome7",
|
|
68
|
+
uwmqm3: [
|
|
69
|
+
"f1f5gg8d",
|
|
70
|
+
"f1vdfbxk"
|
|
71
|
+
],
|
|
72
|
+
qhf8xq: "f1euv43f",
|
|
73
|
+
fsow6f: "f17mccla",
|
|
74
|
+
Bhzewxz: "fr6rvge",
|
|
75
|
+
De3pzq: "fxugw4r",
|
|
76
|
+
Beyfa6y: 0,
|
|
77
|
+
Bbmb7ep: 0,
|
|
78
|
+
Btl43ni: 0,
|
|
79
|
+
B7oj6ja: 0,
|
|
80
|
+
Dimara: "fq9zq91",
|
|
81
|
+
Bkecrkj: "f1aehjj5"
|
|
82
|
+
}
|
|
83
|
+
}, {
|
|
84
|
+
d: [
|
|
85
|
+
".f9das1l{opacity:0.1;}",
|
|
86
|
+
".fk6fouc{font-family:var(--fontFamilyBase);}",
|
|
87
|
+
".fkhj508{font-size:var(--fontSizeBase300);}",
|
|
88
|
+
".figsok6{font-weight:var(--fontWeightRegular);}",
|
|
89
|
+
".f1i3iumi{line-height:var(--lineHeightBase300);}",
|
|
90
|
+
".f22iagw{display:flex;}",
|
|
91
|
+
".f1vx9l62{flex-direction:column;}",
|
|
92
|
+
".f17mpqex{padding-top:var(--spacingHorizontalS);}",
|
|
93
|
+
".f1vdfbxk{padding-right:var(--spacingHorizontalS);}",
|
|
94
|
+
".f1f5gg8d{padding-left:var(--spacingHorizontalS);}",
|
|
95
|
+
".fdvome7{padding-bottom:var(--spacingHorizontalS);}",
|
|
96
|
+
".f1euv43f{position:absolute;}",
|
|
97
|
+
".f17mccla{text-align:center;}",
|
|
98
|
+
".fr6rvge{top:var(--spacingVerticalNone);}",
|
|
99
|
+
".fxugw4r{background-color:var(--colorNeutralBackground1);}",
|
|
100
|
+
[
|
|
101
|
+
".fq9zq91{border-radius:var(--borderRadiusSmall);}",
|
|
102
|
+
{
|
|
103
|
+
p: -1
|
|
104
|
+
}
|
|
105
|
+
],
|
|
106
|
+
".f1aehjj5{pointer-events:none;}"
|
|
107
|
+
]
|
|
108
|
+
});
|
|
109
|
+
const useHorizontalBarChartWithAxisStyles = (props)=>{
|
|
110
|
+
const baseStyles = useStyles();
|
|
111
|
+
return {
|
|
112
|
+
opacityChangeOnHover: (0, _react.mergeClasses)(hbcWithAxisClassNames.opacityChangeOnHover, baseStyles.opacityChangeOnHover),
|
|
113
|
+
xAxisTicks: (0, _react.mergeClasses)(hbcWithAxisClassNames.xAxisTicks, baseStyles.xAxisTicks),
|
|
114
|
+
tooltip: (0, _react.mergeClasses)(hbcWithAxisClassNames.tooltip, baseStyles.tooltip)
|
|
115
|
+
};
|
|
116
|
+
}; //# sourceMappingURL=useHorizontalBarChartWithAxisStyles.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["useHorizontalBarChartWithAxisStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nexport const hbcWithAxisClassNames = {\n opacityChangeOnHover: 'fui-hbcwa__opacityChangeOnHover',\n xAxisTicks: 'fui-hbcwa__xAxisTicks',\n tooltip: 'fui-hbcwa__tooltip',\n chartLabel: '',\n xAxisDomain: '',\n xAxisText: '',\n yAxisDomain: '',\n yAxisTicks: '',\n yAxisText: '',\n root: '',\n xAxis: '',\n yAxis: '',\n legendContainer: '',\n hover: '',\n calloutContentRoot: '',\n calloutContentX: '',\n calloutContentY: '',\n descriptionMessage: '',\n calloutDateTimeContainer: '',\n calloutInfoContainer: '',\n calloutBlockContainer: '',\n calloutBlockContainertoDrawShapefalse: '',\n calloutBlockContainertoDrawShapetrue: '',\n calloutlegendText: '',\n axisTitle: '',\n chartTitle: '',\n shapeStyles: '',\n chartWrapper: ''\n};\nconst useStyles = makeStyles({\n opacityChangeOnHover: {\n opacity: 0.1\n },\n xAxisTicks: {},\n tooltip: {\n ...typographyStyles.body1,\n display: 'flex',\n flexDirection: 'column',\n ...shorthands.padding(tokens.spacingHorizontalS),\n position: 'absolute',\n textAlign: 'center',\n top: tokens.spacingVerticalNone,\n backgroundColor: tokens.colorNeutralBackground1,\n borderRadius: tokens.borderRadiusSmall,\n pointerEvents: 'none'\n }\n});\n/**\n * Apply styling to the HorizontalBarChartWithAxis slots based on the state\n */ export const useHorizontalBarChartWithAxisStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n opacityChangeOnHover: mergeClasses(hbcWithAxisClassNames.opacityChangeOnHover, baseStyles.opacityChangeOnHover),\n xAxisTicks: mergeClasses(hbcWithAxisClassNames.xAxisTicks, baseStyles.xAxisTicks),\n tooltip: mergeClasses(hbcWithAxisClassNames.tooltip, baseStyles.tooltip)\n };\n};\n"],"names":["hbcWithAxisClassNames","useHorizontalBarChartWithAxisStyles","opacityChangeOnHover","xAxisTicks","tooltip","chartLabel","xAxisDomain","xAxisText","yAxisDomain","yAxisTicks","yAxisText","root","xAxis","yAxis","legendContainer","hover","calloutContentRoot","calloutContentX","calloutContentY","descriptionMessage","calloutDateTimeContainer","calloutInfoContainer","calloutBlockContainer","calloutBlockContainertoDrawShapefalse","calloutBlockContainertoDrawShapetrue","calloutlegendText","axisTitle","chartTitle","shapeStyles","chartWrapper","useStyles","__styles","abs64n","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","mc9l5x","Beiy3e4","z8tnut","z189sj","Byoj8tv","uwmqm3","qhf8xq","fsow6f","Bhzewxz","De3pzq","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bkecrkj","d","p","props","baseStyles","mergeClasses"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAEaA,qBAAqB;eAArBA;;IAkDIC,mCAAmC;eAAnCA;;;uBApDoC;AAE9C,MAAMD,wBAAwB;IACjCE,sBAAsB;IACtBC,YAAY;IACZC,SAAS;IACTC,YAAY;IACZC,aAAa;IACbC,WAAW;IACXC,aAAa;IACbC,YAAY;IACZC,WAAW;IACXC,MAAM;IACNC,OAAO;IACPC,OAAO;IACPC,iBAAiB;IACjBC,OAAO;IACPC,oBAAoB;IACpBC,iBAAiB;IACjBC,iBAAiB;IACjBC,oBAAoB;IACpBC,0BAA0B;IAC1BC,sBAAsB;IACtBC,uBAAuB;IACvBC,uCAAuC;IACvCC,sCAAsC;IACtCC,mBAAmB;IACnBC,WAAW;IACXC,YAAY;IACZC,aAAa;IACbC,cAAc;AAClB;AACA,MAAMC,YAAS,WAAA,GAAGC,IAAAA,eAAA,EAAA;IAAA7B,sBAAA;QAAA8B,QAAA;IAAA;IAAA7B,YAAA,CAAA;IAAAC,SAAA;QAAA6B,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,QAAA;YAAA;YAAA;SAAA;QAAAC,SAAA;QAAAC,QAAA;YAAA;YAAA;SAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;IAAA;AAAA,GAAA;IAAAC,GAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAC,GAAA,CAAA;YAAA;SAAA;QAAA;KAAA;AAAA;AAoBP,MAAMrD,sCAAuCsD,CAAAA;IACpD,MAAMC,aAAa1B;IACnB,OAAO;QACH5B,sBAAsBuD,IAAAA,mBAAY,EAACzD,sBAAsBE,oBAAoB,EAAEsD,WAAWtD,oBAAoB;QAC9GC,YAAYsD,IAAAA,mBAAY,EAACzD,sBAAsBG,UAAU,EAAEqD,WAAWrD,UAAU;QAChFC,SAASqD,IAAAA,mBAAY,EAACzD,sBAAsBI,OAAO,EAAEoD,WAAWpD,OAAO;IAC3E;AACJ"}
|
|
@@ -28,23 +28,30 @@ const Legends = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
28
28
|
memorizeCurrent: true
|
|
29
29
|
});
|
|
30
30
|
_react.useEffect(()=>{
|
|
31
|
-
|
|
31
|
+
var _props_selectedLegends;
|
|
32
|
+
const initialSelectedLegends = (_props_selectedLegends = props.selectedLegends) !== null && _props_selectedLegends !== void 0 ? _props_selectedLegends : props.defaultSelectedLegends;
|
|
33
|
+
var _props_selectedLegend;
|
|
34
|
+
const initialSelectedLegend = (_props_selectedLegend = props.selectedLegend) !== null && _props_selectedLegend !== void 0 ? _props_selectedLegend : props.defaultSelectedLegend;
|
|
35
|
+
let selectedLegendsState = {};
|
|
32
36
|
if (props.canSelectMultipleLegends) {
|
|
33
|
-
var
|
|
34
|
-
|
|
37
|
+
var _this;
|
|
38
|
+
selectedLegendsState = ((_this = initialSelectedLegends !== null && initialSelectedLegends !== void 0 ? initialSelectedLegends : []) === null || _this === void 0 ? void 0 : _this.reduce((combineDict, key)=>({
|
|
35
39
|
[key]: true,
|
|
36
|
-
...
|
|
40
|
+
...combineDict
|
|
37
41
|
}), {})) || {};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
setSelectedLegends(selectedLegendsState);
|
|
43
|
+
} else if (initialSelectedLegend !== undefined) {
|
|
44
|
+
selectedLegendsState = {
|
|
45
|
+
[initialSelectedLegend]: true
|
|
41
46
|
};
|
|
47
|
+
setSelectedLegends(selectedLegendsState);
|
|
42
48
|
}
|
|
43
|
-
setSelectedLegends(defaultSelectedLegends);
|
|
44
49
|
}, [
|
|
45
50
|
props.canSelectMultipleLegends,
|
|
46
51
|
props.defaultSelectedLegend,
|
|
47
|
-
props.defaultSelectedLegends
|
|
52
|
+
props.defaultSelectedLegends,
|
|
53
|
+
props.selectedLegend,
|
|
54
|
+
props.selectedLegends
|
|
48
55
|
]);
|
|
49
56
|
_isLegendSelected = Object.keys(selectedLegends).length > 0;
|
|
50
57
|
const dataToRender = _generateData();
|
|
@@ -142,10 +149,16 @@ const Legends = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
142
149
|
return dataItems;
|
|
143
150
|
}
|
|
144
151
|
/**
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
|
|
148
|
-
|
|
152
|
+
* Determine whether the component is in "controlled" mode for selections, where the selected legend(s) are
|
|
153
|
+
* determined entirely by props passed in from the parent component.
|
|
154
|
+
*/ function _isInControlledMode() {
|
|
155
|
+
return props.canSelectMultipleLegends ? props.selectedLegends !== undefined : props.selectedLegend !== undefined;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get the new selected legends based on the legend that was clicked when multi-select is enabled.
|
|
159
|
+
* @param legend The legend that was clicked
|
|
160
|
+
* @returns An object with the new selected legend(s) state data.
|
|
161
|
+
*/ function _getNewSelectedLegendsForMultiselect(legend) {
|
|
149
162
|
let legendsSelected = {
|
|
150
163
|
...selectedLegends
|
|
151
164
|
};
|
|
@@ -160,38 +173,25 @@ const Legends = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
160
173
|
legendsSelected = {};
|
|
161
174
|
}
|
|
162
175
|
}
|
|
163
|
-
setSelectedLegends(legendsSelected);
|
|
164
176
|
return legendsSelected;
|
|
165
177
|
}
|
|
166
178
|
/**
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
* @
|
|
170
|
-
*/ function
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
} else {
|
|
175
|
-
setSelectedLegends({
|
|
176
|
-
[legend.title]: true
|
|
177
|
-
});
|
|
178
|
-
return true;
|
|
179
|
-
}
|
|
179
|
+
* Get the new selected legends based on the legend that was clicked when single-select is enabled.
|
|
180
|
+
* @param legend The legend that was clicked
|
|
181
|
+
* @returns An object with the new selected legend state data.
|
|
182
|
+
*/ function _getNewSelectedLegendsForSingleSelect(legend) {
|
|
183
|
+
return selectedLegends[legend.title] ? {} : {
|
|
184
|
+
[legend.title]: true
|
|
185
|
+
};
|
|
180
186
|
}
|
|
181
187
|
function _onClick(legend, event) {
|
|
182
188
|
var _props_onChange, _legend_action;
|
|
183
189
|
const { canSelectMultipleLegends = false } = props;
|
|
184
|
-
|
|
185
|
-
if (
|
|
186
|
-
|
|
187
|
-
selectedLegends = Object.keys(nextSelectedLegends);
|
|
188
|
-
} else {
|
|
189
|
-
const isSelected = _canSelectOnlySingleLegend(legend);
|
|
190
|
-
selectedLegends = isSelected ? [
|
|
191
|
-
legend.title
|
|
192
|
-
] : [];
|
|
190
|
+
const nextSelectedLegends = canSelectMultipleLegends ? _getNewSelectedLegendsForMultiselect(legend) : _getNewSelectedLegendsForSingleSelect(legend);
|
|
191
|
+
if (!_isInControlledMode()) {
|
|
192
|
+
setSelectedLegends(nextSelectedLegends);
|
|
193
193
|
}
|
|
194
|
-
(_props_onChange = props.onChange) === null || _props_onChange === void 0 ? void 0 : _props_onChange.call(props,
|
|
194
|
+
(_props_onChange = props.onChange) === null || _props_onChange === void 0 ? void 0 : _props_onChange.call(props, Object.keys(nextSelectedLegends), event, legend);
|
|
195
195
|
(_legend_action = legend.action) === null || _legend_action === void 0 ? void 0 : _legend_action.call(legend);
|
|
196
196
|
}
|
|
197
197
|
function _onHoverOverLegend(legend) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Legends.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button } from '@fluentui/react-button';\nimport { Legend, LegendsProps, LegendShape } from './Legends.types';\nimport { Shape } from './shape';\nimport { useLegendStyles } from './useLegendsStyles.styles';\nimport { Overflow, OverflowItem } from '@fluentui/react-overflow';\nimport { useFocusableGroup, useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { OverflowMenu } from './OverflowMenu';\nimport { tokens } from '@fluentui/react-theme';\n\n// This is an internal interface used for rendering the legends with unique key\ninterface LegendItem extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n name?: string;\n title: string;\n action: VoidFunction;\n hoverAction: VoidFunction;\n onMouseOutAction: VoidFunction;\n color: string;\n shape?: LegendShape;\n key: number;\n opacity?: number;\n stripePattern?: boolean;\n isLineLegendInBarChart?: boolean;\n}\n\ninterface LegendMap {\n [key: string]: boolean;\n}\n\nexport interface LegendState {\n activeLegend: string;\n /** Set of legends selected, both for multiple selection and single selection */\n selectedLegends: LegendMap;\n}\nexport const Legends: React.FunctionComponent<LegendsProps> = React.forwardRef<HTMLDivElement, LegendsProps>(\n (props, forwardedRef) => {\n /** Boolean variable to check if one or more legends are selected */\n let _isLegendSelected = false;\n\n // set states separately for each instance of the component\n const [activeLegend, setActiveLegend] = React.useState('');\n const [selectedLegends, setSelectedLegends] = React.useState<LegendMap>({});\n const focusAttributes = useFocusableGroup();\n const arrowAttributes = useArrowNavigationGroup({ axis: 'horizontal', memorizeCurrent: true });\n\n React.useEffect(() => {\n let defaultSelectedLegends = {};\n if (props.canSelectMultipleLegends) {\n defaultSelectedLegends =\n props.defaultSelectedLegends?.reduce((combinedDict, key) => ({ [key]: true, ...combinedDict }), {}) || {};\n } else if (props.defaultSelectedLegend) {\n defaultSelectedLegends = { [props.defaultSelectedLegend]: true };\n }\n\n setSelectedLegends(defaultSelectedLegends);\n }, [props.canSelectMultipleLegends, props.defaultSelectedLegend, props.defaultSelectedLegends]);\n\n _isLegendSelected = Object.keys(selectedLegends).length > 0;\n const dataToRender = _generateData();\n const { overflowStyles, allowFocusOnLegends = true, canSelectMultipleLegends = false } = props;\n const classes = useLegendStyles(props);\n const itemIds = dataToRender.map((_item, index) => index.toString());\n const overflowHoverCardLegends: JSX.Element[] = [];\n props.legends.map((legend, index) => {\n const hoverCardElement = _renderButton(legend, index);\n overflowHoverCardLegends.push(hoverCardElement);\n });\n const overflowString = props.overflowText ? props.overflowText : 'more';\n return props.enabledWrapLines ? renderWrappedLegends() : renderLegends();\n\n function renderLegends(): JSX.Element {\n return (\n <div\n {...focusAttributes}\n {...arrowAttributes}\n {...(allowFocusOnLegends && {\n role: 'listbox',\n 'aria-label': 'Legends',\n 'aria-multiselectable': canSelectMultipleLegends,\n })}\n className={classes.root}\n >\n <Overflow>\n <div className={classes.resizableArea} style={{ textAlign: props.centerLegends ? 'center' : 'unset' }}>\n {dataToRender.map((item, id) => (\n <OverflowItem key={id} id={id.toString()}>\n {_renderButton(item)}\n </OverflowItem>\n ))}\n <OverflowMenu itemIds={itemIds} title={`${overflowString}`} items={overflowHoverCardLegends} />\n </div>\n </Overflow>\n </div>\n );\n }\n\n function renderWrappedLegends(): JSX.Element {\n return (\n <div\n {...focusAttributes}\n {...arrowAttributes}\n {...(allowFocusOnLegends && {\n role: 'listbox',\n 'aria-label': 'Legends',\n 'aria-multiselectable': canSelectMultipleLegends,\n })}\n style={{ justifyContent: props.centerLegends ? 'center' : 'unset', flexWrap: 'wrap', ...overflowStyles }}\n className={classes.root}\n >\n <div className={classes.resizableArea} style={{ display: 'flex', flexWrap: 'wrap', overflow: 'auto' }}>\n {dataToRender.map((item, id) => (\n <div key={id} style={{ flex: '0 1 auto', margin: '4px' }}>\n {_renderButton(item)}\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n function _generateData(): LegendItem[] {\n const { /*allowFocusOnLegends = true,*/ shape } = props;\n const dataItems: LegendItem[] = props.legends.map((legend: Legend, index: number) => {\n return {\n /* ...(allowFocusOnLegends && {\n nativeButtonProps: getIntrinsicElementProps(\n 'div',\n {\n legend,\n ...buttonProperties,\n },\n ['title'],\n ),\n 'aria-setsize': props.legends.length,\n 'aria-posinset': index + 1,\n }), */\n title: legend.title,\n action: legend.action!,\n hoverAction: legend.hoverAction!,\n onMouseOutAction: legend.onMouseOutAction!,\n color: legend.color,\n shape: shape ? shape : legend.shape,\n stripePattern: legend.stripePattern,\n isLineLegendInBarChart: legend.isLineLegendInBarChart,\n opacity: legend.opacity,\n key: index,\n };\n });\n return dataItems;\n }\n\n /**\n * This function will get called when there is an ability to\n * select multiple legends\n * @param legend ILegend\n */\n function _canSelectMultipleLegends(legend: Legend): { [key: string]: boolean } {\n let legendsSelected = { ...selectedLegends };\n if (legendsSelected[legend.title]) {\n // Delete entry for the deselected legend to make\n // the number of keys equal to the number of selected legends\n delete legendsSelected[legend.title];\n } else {\n legendsSelected[legend.title] = true;\n // Clear set if all legends are selected\n if (Object.keys(legendsSelected).length === props.legends.length) {\n legendsSelected = {};\n }\n }\n setSelectedLegends(legendsSelected);\n return legendsSelected;\n }\n\n /**\n * This function will get called when there is\n * ability to select only single legend\n * @param legend ILegend\n */\n\n function _canSelectOnlySingleLegend(legend: Legend): boolean {\n if (selectedLegends[legend.title]) {\n setSelectedLegends({});\n return false;\n } else {\n setSelectedLegends({ [legend.title]: true });\n return true;\n }\n }\n\n function _onClick(legend: Legend, event: React.MouseEvent<HTMLButtonElement>): void {\n const { canSelectMultipleLegends = false } = props;\n let selectedLegends: string[] = [];\n if (canSelectMultipleLegends) {\n const nextSelectedLegends = _canSelectMultipleLegends(legend);\n selectedLegends = Object.keys(nextSelectedLegends);\n } else {\n const isSelected = _canSelectOnlySingleLegend(legend);\n selectedLegends = isSelected ? [legend.title] : [];\n }\n props.onChange?.(selectedLegends, event, legend);\n legend.action?.();\n }\n\n function _onHoverOverLegend(legend: Legend) {\n if (legend.hoverAction) {\n setActiveLegend(legend.title);\n legend.hoverAction();\n }\n }\n\n function _onLeave(legend: Legend) {\n if (legend.onMouseOutAction) {\n setActiveLegend('');\n legend.onMouseOutAction();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _renderButton(data: any, index?: number) {\n const { allowFocusOnLegends = true } = props;\n const legend: Legend = {\n title: data.title,\n color: data.color,\n shape: data.shape,\n action: data.action,\n hoverAction: data.hoverAction,\n onMouseOutAction: data.onMouseOutAction,\n stripePattern: data.stripePattern,\n isLineLegendInBarChart: data.isLineLegendInBarChart,\n opacity: data.opacity,\n };\n const color = _getColor(legend.title, legend.color);\n const onClickHandler = (event: React.MouseEvent<HTMLButtonElement>) => {\n _onClick(legend, event);\n };\n const onHoverHandler = () => {\n _onHoverOverLegend(legend);\n };\n const onMouseOut = () => {\n _onLeave(legend);\n };\n const shape = _getShape(legend, color);\n return (\n <Button\n {...(allowFocusOnLegends && {\n 'aria-selected': !!selectedLegends[legend.title],\n role: 'option',\n 'aria-label': `${legend.title}`,\n 'aria-setsize': data['aria-setsize'],\n 'aria-posinset': data['aria-posinset'],\n })}\n {...(data.nativeButtonProps && { ...data.nativeButtonProps })}\n key={index}\n className={classes.legend}\n onClick={onClickHandler}\n onMouseOver={onHoverHandler}\n onMouseOut={onMouseOut}\n onFocus={onHoverHandler}\n onBlur={onMouseOut}\n appearance={'outline'}\n size=\"small\"\n style={{\n '--rect-height': legend.isLineLegendInBarChart ? '4px' : '12px',\n '--rect-backgroundColor': legend.stripePattern ? '' : color,\n '--rect-borderColor': legend.color ? legend.color : tokens.colorNeutralStroke1,\n '--rect-content': legend.stripePattern\n ? // eslint-disable-next-line @fluentui/max-len\n `repeating-linear-gradient(135deg, transparent, transparent 3px, ${color} 1px, ${color} 4px)`\n : '',\n }} /* eslint-enable react/jsx-no-bind */\n >\n {shape}\n <div className={classes.text} style={{ opacity: color === tokens.colorNeutralBackground1 ? '0.67' : '' }}>\n {legend.title}\n </div>\n </Button>\n );\n }\n\n function _getShape(legend: Legend, color: string): React.ReactNode | string {\n const svgParentProps: React.SVGAttributes<SVGElement> = {\n className: classes.shape,\n };\n const svgChildProps: React.SVGAttributes<SVGElement> = {\n fill: color,\n strokeWidth: 2,\n stroke: legend.color,\n };\n return (\n <Shape\n svgProps={svgParentProps}\n pathProps={svgChildProps}\n shape={legend.shape as LegendShape}\n classNameForNonSvg={classes.rect}\n style={\n {\n height: legend.isLineLegendInBarChart ? '4px' : '12px',\n backgroundColor: legend.stripePattern ? '' : color,\n borderColor: legend.color ? legend.color : tokens.colorNeutralStroke1,\n content: legend.stripePattern\n ? // eslint-disable-next-line @fluentui/max-len\n `repeating-linear-gradient(135deg, transparent, transparent 3px, ${color} 1px, ${color} 4px)`\n : '',\n '--rect-content-high-contrast': `linear-gradient(to right, ${color}, ${color})`,\n '--rect-opacity-high-contrast': color === tokens.colorNeutralBackground1 ? '0.6' : '',\n } as React.CSSProperties\n }\n />\n );\n }\n\n function _getColor(title: string, color: string): string {\n let legendColor = color;\n // if one or more legends are selected\n if (_isLegendSelected) {\n // if the given legend (title) is one of the selected legends\n if (selectedLegends[title]) {\n legendColor = color;\n }\n // if the given legend is unselected\n else {\n legendColor = tokens.colorNeutralBackground1;\n }\n }\n // if no legend is selected\n else {\n // if the given legend is hovered\n // or none of the legends is hovered\n if (activeLegend === title || activeLegend === '') {\n legendColor = color;\n }\n // if there is a hovered legend but the given legend is not the one\n else {\n legendColor = tokens.colorNeutralBackground1;\n }\n }\n return legendColor;\n }\n },\n);\nLegends.displayName = 'Legends';\n"],"names":["Legends","React","forwardRef","props","forwardedRef","_isLegendSelected","activeLegend","setActiveLegend","useState","selectedLegends","setSelectedLegends","focusAttributes","useFocusableGroup","arrowAttributes","useArrowNavigationGroup","axis","memorizeCurrent","useEffect","defaultSelectedLegends","canSelectMultipleLegends","reduce","combinedDict","key","defaultSelectedLegend","Object","keys","length","dataToRender","_generateData","overflowStyles","allowFocusOnLegends","classes","useLegendStyles","itemIds","map","_item","index","toString","overflowHoverCardLegends","legends","legend","hoverCardElement","_renderButton","push","overflowString","overflowText","enabledWrapLines","renderWrappedLegends","renderLegends","createElement","div","role","className","root","Overflow","resizableArea","style","textAlign","centerLegends","item","id","OverflowItem","OverflowMenu","title","items","justifyContent","flexWrap","display","overflow","flex","margin","shape","dataItems","action","hoverAction","onMouseOutAction","color","stripePattern","isLineLegendInBarChart","opacity","_canSelectMultipleLegends","legendsSelected","_canSelectOnlySingleLegend","_onClick","event","nextSelectedLegends","isSelected","onChange","_onHoverOverLegend","_onLeave","data","_getColor","onClickHandler","onHoverHandler","onMouseOut","_getShape","Button","nativeButtonProps","onClick","onMouseOver","onFocus","onBlur","appearance","size","tokens","colorNeutralStroke1","text","colorNeutralBackground1","svgParentProps","svgChildProps","fill","strokeWidth","stroke","Shape","svgProps","pathProps","classNameForNonSvg","rect","height","backgroundColor","borderColor","content","legendColor","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["Legends.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button } from '@fluentui/react-button';\nimport { Legend, LegendsProps, LegendShape } from './Legends.types';\nimport { Shape } from './shape';\nimport { useLegendStyles } from './useLegendsStyles.styles';\nimport { Overflow, OverflowItem } from '@fluentui/react-overflow';\nimport { useFocusableGroup, useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { OverflowMenu } from './OverflowMenu';\nimport { tokens } from '@fluentui/react-theme';\n\n// This is an internal interface used for rendering the legends with unique key\ninterface LegendItem extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n name?: string;\n title: string;\n action: VoidFunction;\n hoverAction: VoidFunction;\n onMouseOutAction: VoidFunction;\n color: string;\n shape?: LegendShape;\n key: number;\n opacity?: number;\n stripePattern?: boolean;\n isLineLegendInBarChart?: boolean;\n}\n\ninterface LegendMap {\n [key: string]: boolean;\n}\n\nexport interface LegendState {\n activeLegend: string;\n /** Set of legends selected, both for multiple selection and single selection */\n selectedLegends: LegendMap;\n}\nexport const Legends: React.FunctionComponent<LegendsProps> = React.forwardRef<HTMLDivElement, LegendsProps>(\n (props, forwardedRef) => {\n /** Boolean variable to check if one or more legends are selected */\n let _isLegendSelected = false;\n\n // set states separately for each instance of the component\n const [activeLegend, setActiveLegend] = React.useState('');\n const [selectedLegends, setSelectedLegends] = React.useState<LegendMap>({});\n const focusAttributes = useFocusableGroup();\n const arrowAttributes = useArrowNavigationGroup({ axis: 'horizontal', memorizeCurrent: true });\n\n React.useEffect(() => {\n const initialSelectedLegends = props.selectedLegends ?? props.defaultSelectedLegends;\n const initialSelectedLegend = props.selectedLegend ?? props.defaultSelectedLegend;\n let selectedLegendsState = {};\n if (props.canSelectMultipleLegends) {\n selectedLegendsState =\n (initialSelectedLegends ?? [])?.reduce(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (combineDict: any, key: any) => ({ [key]: true, ...combineDict }),\n {},\n ) || {};\n setSelectedLegends(selectedLegendsState);\n } else if (initialSelectedLegend !== undefined) {\n selectedLegendsState = { [initialSelectedLegend]: true };\n setSelectedLegends(selectedLegendsState);\n }\n }, [\n props.canSelectMultipleLegends,\n props.defaultSelectedLegend,\n props.defaultSelectedLegends,\n props.selectedLegend,\n props.selectedLegends,\n ]);\n\n _isLegendSelected = Object.keys(selectedLegends).length > 0;\n const dataToRender = _generateData();\n const { overflowStyles, allowFocusOnLegends = true, canSelectMultipleLegends = false } = props;\n const classes = useLegendStyles(props);\n const itemIds = dataToRender.map((_item, index) => index.toString());\n const overflowHoverCardLegends: JSX.Element[] = [];\n props.legends.map((legend, index) => {\n const hoverCardElement = _renderButton(legend, index);\n overflowHoverCardLegends.push(hoverCardElement);\n });\n const overflowString = props.overflowText ? props.overflowText : 'more';\n return props.enabledWrapLines ? renderWrappedLegends() : renderLegends();\n\n function renderLegends(): JSX.Element {\n return (\n <div\n {...focusAttributes}\n {...arrowAttributes}\n {...(allowFocusOnLegends && {\n role: 'listbox',\n 'aria-label': 'Legends',\n 'aria-multiselectable': canSelectMultipleLegends,\n })}\n className={classes.root}\n >\n <Overflow>\n <div className={classes.resizableArea} style={{ textAlign: props.centerLegends ? 'center' : 'unset' }}>\n {dataToRender.map((item, id) => (\n <OverflowItem key={id} id={id.toString()}>\n {_renderButton(item)}\n </OverflowItem>\n ))}\n <OverflowMenu itemIds={itemIds} title={`${overflowString}`} items={overflowHoverCardLegends} />\n </div>\n </Overflow>\n </div>\n );\n }\n\n function renderWrappedLegends(): JSX.Element {\n return (\n <div\n {...focusAttributes}\n {...arrowAttributes}\n {...(allowFocusOnLegends && {\n role: 'listbox',\n 'aria-label': 'Legends',\n 'aria-multiselectable': canSelectMultipleLegends,\n })}\n style={{ justifyContent: props.centerLegends ? 'center' : 'unset', flexWrap: 'wrap', ...overflowStyles }}\n className={classes.root}\n >\n <div className={classes.resizableArea} style={{ display: 'flex', flexWrap: 'wrap', overflow: 'auto' }}>\n {dataToRender.map((item, id) => (\n <div key={id} style={{ flex: '0 1 auto', margin: '4px' }}>\n {_renderButton(item)}\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n function _generateData(): LegendItem[] {\n const { /*allowFocusOnLegends = true,*/ shape } = props;\n const dataItems: LegendItem[] = props.legends.map((legend: Legend, index: number) => {\n return {\n /* ...(allowFocusOnLegends && {\n nativeButtonProps: getIntrinsicElementProps(\n 'div',\n {\n legend,\n ...buttonProperties,\n },\n ['title'],\n ),\n 'aria-setsize': props.legends.length,\n 'aria-posinset': index + 1,\n }), */\n title: legend.title,\n action: legend.action!,\n hoverAction: legend.hoverAction!,\n onMouseOutAction: legend.onMouseOutAction!,\n color: legend.color,\n shape: shape ? shape : legend.shape,\n stripePattern: legend.stripePattern,\n isLineLegendInBarChart: legend.isLineLegendInBarChart,\n opacity: legend.opacity,\n key: index,\n };\n });\n return dataItems;\n }\n\n /**\n * Determine whether the component is in \"controlled\" mode for selections, where the selected legend(s) are\n * determined entirely by props passed in from the parent component.\n */\n function _isInControlledMode(): boolean {\n return props.canSelectMultipleLegends ? props.selectedLegends !== undefined : props.selectedLegend !== undefined;\n }\n\n /**\n * Get the new selected legends based on the legend that was clicked when multi-select is enabled.\n * @param legend The legend that was clicked\n * @returns An object with the new selected legend(s) state data.\n */\n function _getNewSelectedLegendsForMultiselect(legend: Legend): { [key: string]: boolean } {\n let legendsSelected = { ...selectedLegends };\n if (legendsSelected[legend.title]) {\n // Delete entry for the deselected legend to make\n // the number of keys equal to the number of selected legends\n delete legendsSelected[legend.title];\n } else {\n legendsSelected[legend.title] = true;\n // Clear set if all legends are selected\n if (Object.keys(legendsSelected).length === props.legends.length) {\n legendsSelected = {};\n }\n }\n return legendsSelected;\n }\n\n /**\n * Get the new selected legends based on the legend that was clicked when single-select is enabled.\n * @param legend The legend that was clicked\n * @returns An object with the new selected legend state data.\n */\n function _getNewSelectedLegendsForSingleSelect(legend: Legend): { [key: string]: boolean } {\n return selectedLegends[legend.title] ? {} : { [legend.title]: true };\n }\n\n function _onClick(legend: Legend, event: React.MouseEvent<HTMLButtonElement>): void {\n const { canSelectMultipleLegends = false } = props;\n const nextSelectedLegends = canSelectMultipleLegends\n ? _getNewSelectedLegendsForMultiselect(legend)\n : _getNewSelectedLegendsForSingleSelect(legend);\n\n if (!_isInControlledMode()) {\n setSelectedLegends(nextSelectedLegends);\n }\n props.onChange?.(Object.keys(nextSelectedLegends), event, legend);\n legend.action?.();\n }\n\n function _onHoverOverLegend(legend: Legend) {\n if (legend.hoverAction) {\n setActiveLegend(legend.title);\n legend.hoverAction();\n }\n }\n\n function _onLeave(legend: Legend) {\n if (legend.onMouseOutAction) {\n setActiveLegend('');\n legend.onMouseOutAction();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _renderButton(data: any, index?: number) {\n const { allowFocusOnLegends = true } = props;\n const legend: Legend = {\n title: data.title,\n color: data.color,\n shape: data.shape,\n action: data.action,\n hoverAction: data.hoverAction,\n onMouseOutAction: data.onMouseOutAction,\n stripePattern: data.stripePattern,\n isLineLegendInBarChart: data.isLineLegendInBarChart,\n opacity: data.opacity,\n };\n const color = _getColor(legend.title, legend.color);\n const onClickHandler = (event: React.MouseEvent<HTMLButtonElement>) => {\n _onClick(legend, event);\n };\n const onHoverHandler = () => {\n _onHoverOverLegend(legend);\n };\n const onMouseOut = () => {\n _onLeave(legend);\n };\n const shape = _getShape(legend, color);\n return (\n <Button\n {...(allowFocusOnLegends && {\n 'aria-selected': !!selectedLegends[legend.title],\n role: 'option',\n 'aria-label': `${legend.title}`,\n 'aria-setsize': data['aria-setsize'],\n 'aria-posinset': data['aria-posinset'],\n })}\n {...(data.nativeButtonProps && { ...data.nativeButtonProps })}\n key={index}\n className={classes.legend}\n onClick={onClickHandler}\n onMouseOver={onHoverHandler}\n onMouseOut={onMouseOut}\n onFocus={onHoverHandler}\n onBlur={onMouseOut}\n appearance={'outline'}\n size=\"small\"\n style={{\n '--rect-height': legend.isLineLegendInBarChart ? '4px' : '12px',\n '--rect-backgroundColor': legend.stripePattern ? '' : color,\n '--rect-borderColor': legend.color ? legend.color : tokens.colorNeutralStroke1,\n '--rect-content': legend.stripePattern\n ? // eslint-disable-next-line @fluentui/max-len\n `repeating-linear-gradient(135deg, transparent, transparent 3px, ${color} 1px, ${color} 4px)`\n : '',\n }} /* eslint-enable react/jsx-no-bind */\n >\n {shape}\n <div className={classes.text} style={{ opacity: color === tokens.colorNeutralBackground1 ? '0.67' : '' }}>\n {legend.title}\n </div>\n </Button>\n );\n }\n\n function _getShape(legend: Legend, color: string): React.ReactNode | string {\n const svgParentProps: React.SVGAttributes<SVGElement> = {\n className: classes.shape,\n };\n const svgChildProps: React.SVGAttributes<SVGElement> = {\n fill: color,\n strokeWidth: 2,\n stroke: legend.color,\n };\n return (\n <Shape\n svgProps={svgParentProps}\n pathProps={svgChildProps}\n shape={legend.shape as LegendShape}\n classNameForNonSvg={classes.rect}\n style={\n {\n height: legend.isLineLegendInBarChart ? '4px' : '12px',\n backgroundColor: legend.stripePattern ? '' : color,\n borderColor: legend.color ? legend.color : tokens.colorNeutralStroke1,\n content: legend.stripePattern\n ? // eslint-disable-next-line @fluentui/max-len\n `repeating-linear-gradient(135deg, transparent, transparent 3px, ${color} 1px, ${color} 4px)`\n : '',\n '--rect-content-high-contrast': `linear-gradient(to right, ${color}, ${color})`,\n '--rect-opacity-high-contrast': color === tokens.colorNeutralBackground1 ? '0.6' : '',\n } as React.CSSProperties\n }\n />\n );\n }\n\n function _getColor(title: string, color: string): string {\n let legendColor = color;\n // if one or more legends are selected\n if (_isLegendSelected) {\n // if the given legend (title) is one of the selected legends\n if (selectedLegends[title]) {\n legendColor = color;\n }\n // if the given legend is unselected\n else {\n legendColor = tokens.colorNeutralBackground1;\n }\n }\n // if no legend is selected\n else {\n // if the given legend is hovered\n // or none of the legends is hovered\n if (activeLegend === title || activeLegend === '') {\n legendColor = color;\n }\n // if there is a hovered legend but the given legend is not the one\n else {\n legendColor = tokens.colorNeutralBackground1;\n }\n }\n return legendColor;\n }\n },\n);\nLegends.displayName = 'Legends';\n"],"names":["Legends","React","forwardRef","props","forwardedRef","_isLegendSelected","activeLegend","setActiveLegend","useState","selectedLegends","setSelectedLegends","focusAttributes","useFocusableGroup","arrowAttributes","useArrowNavigationGroup","axis","memorizeCurrent","useEffect","initialSelectedLegends","defaultSelectedLegends","initialSelectedLegend","selectedLegend","defaultSelectedLegend","selectedLegendsState","canSelectMultipleLegends","_this","reduce","combineDict","key","undefined","Object","keys","length","dataToRender","_generateData","overflowStyles","allowFocusOnLegends","classes","useLegendStyles","itemIds","map","_item","index","toString","overflowHoverCardLegends","legends","legend","hoverCardElement","_renderButton","push","overflowString","overflowText","enabledWrapLines","renderWrappedLegends","renderLegends","createElement","div","role","className","root","Overflow","resizableArea","style","textAlign","centerLegends","item","id","OverflowItem","OverflowMenu","title","items","justifyContent","flexWrap","display","overflow","flex","margin","shape","dataItems","action","hoverAction","onMouseOutAction","color","stripePattern","isLineLegendInBarChart","opacity","_isInControlledMode","_getNewSelectedLegendsForMultiselect","legendsSelected","_getNewSelectedLegendsForSingleSelect","_onClick","event","nextSelectedLegends","onChange","_onHoverOverLegend","_onLeave","data","_getColor","onClickHandler","onHoverHandler","onMouseOut","_getShape","Button","nativeButtonProps","onClick","onMouseOver","onFocus","onBlur","appearance","size","tokens","colorNeutralStroke1","text","colorNeutralBackground1","svgParentProps","svgChildProps","fill","strokeWidth","stroke","Shape","svgProps","pathProps","classNameForNonSvg","rect","height","backgroundColor","borderColor","content","legendColor","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|