@fluentui/react-charts 0.0.0-nightly-20250704-0407.1 → 0.0.0-nightly-20250707-0406.1

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.
Files changed (24) hide show
  1. package/CHANGELOG.md +28 -15
  2. package/lib/components/DonutChart/Arc/Arc.js +10 -3
  3. package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
  4. package/lib/components/DonutChart/Arc/Arc.types.js.map +1 -1
  5. package/lib/components/DonutChart/Arc/useArcStyles.styles.js +7 -2
  6. package/lib/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
  7. package/lib/components/HorizontalBarChart/HorizontalBarChart.js +14 -3
  8. package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
  9. package/lib/components/VerticalBarChart/VerticalBarChart.js +11 -13
  10. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  11. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +14 -11
  12. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  13. package/lib-commonjs/components/DonutChart/Arc/Arc.js +10 -3
  14. package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
  15. package/lib-commonjs/components/DonutChart/Arc/Arc.types.js.map +1 -1
  16. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js +10 -2
  17. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
  18. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js +14 -3
  19. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
  20. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +11 -13
  21. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  22. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +14 -11
  23. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  24. package/package.json +12 -12
@@ -53,7 +53,19 @@ const HorizontalBarChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)
53
53
  function _hoverOn(event, hoverVal, point) {
54
54
  if ((!isPopoverOpen || legend !== point.legend) && _calloutAnchorPoint !== point && (_legendHighlighted(point.legend) || _noLegendHighlighted())) {
55
55
  _calloutAnchorPoint = point;
56
- updatePosition(event.clientX, event.clientY);
56
+ let x = 0;
57
+ let y = 0;
58
+ if ('clientX' in event && event.clientX && event.clientY) {
59
+ // Mouse event
60
+ x = event.clientX;
61
+ y = event.clientY;
62
+ } else {
63
+ // Focus event
64
+ const targetRect = event.target.getBoundingClientRect();
65
+ x = targetRect.left + targetRect.width / 2;
66
+ y = targetRect.top + targetRect.height / 2;
67
+ }
68
+ updatePosition(x, y);
57
69
  setHoverValue(hoverVal);
58
70
  setLineColor(point.color);
59
71
  setLegend(point.legend);
@@ -250,12 +262,11 @@ const HorizontalBarChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)
250
262
  key: index,
251
263
  x: `${_isRTL ? 100 - startingPoint[index] - value - index * barSpacingInPercent : startingPoint[index] + index * barSpacingInPercent}%`,
252
264
  y: 0,
253
- "data-is-focusable": point.legend !== '' ? true : false,
254
265
  width: value + '%',
255
266
  height: _barHeight,
256
267
  fill: color,
257
268
  onMouseOver: point.legend !== '' ? (event)=>_hoverOn(event, xValue, point) : undefined,
258
- onFocus: point.legend !== '' ? (event)=>_hoverOn.bind(event, xValue, point) : undefined,
269
+ onFocus: point.legend !== '' ? (event)=>_hoverOn(event, xValue, point) : undefined,
259
270
  role: "img",
260
271
  "aria-label": _getAriaLabel(point),
261
272
  onBlur: _hoverOff,
@@ -1 +1 @@
1
- {"version":3,"sources":["HorizontalBarChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useHorizontalBarChartStyles } from './useHorizontalBarChartStyles.styles';\nimport { ChartProps, HorizontalBarChartProps, ChartDataPoint, RefArrayData, HorizontalBarChartVariant } from './index';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { formatScientificLimitWidth, getAccessibleDataObject, useRtl } from '../../utilities/index';\nimport { useId } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { FocusableTooltipText } from '../../utilities/FocusableTooltipText';\nimport { Legend, Legends } from '../../index';\n\n/**\n * HorizontalBarChart is the context wrapper and container for all HorizontalBarChart content/controls,\n * It has no direct style or slot opinions.\n *\n * HorizontalBarChart also provides API interfaces for callbacks that will occur on navigation events.\n */\nexport const HorizontalBarChart: React.FunctionComponent<HorizontalBarChartProps> = React.forwardRef<\n HTMLDivElement,\n HorizontalBarChartProps\n>((props, forwardedRef) => {\n const legendContainer = React.useRef<HTMLDivElement | null>(null);\n const _uniqLineText: string = '_HorizontalLine_' + Math.random().toString(36).substring(7);\n const _refArray: RefArrayData[] = [];\n const _isRTL: boolean = useRtl();\n const barChartSvgRef: React.RefObject<SVGSVGElement> = React.createRef<SVGSVGElement>();\n const _emptyChartId: string = useId('_HBC_empty');\n let _barHeight: number;\n let _calloutAnchorPoint: ChartDataPoint | null;\n let isSingleBar: boolean = true;\n\n const [hoverValue, setHoverValue] = React.useState<string | number | Date | null>('');\n const [lineColor, setLineColor] = React.useState<string>('');\n const [legend, setLegend] = React.useState<string | null>('');\n const [xCalloutValue, setXCalloutValue] = React.useState<string | undefined>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string | undefined>('');\n const [barCalloutProps, setBarCalloutProps] = React.useState<ChartDataPoint>();\n const [barSpacingInPercent, setBarSpacingInPercent] = React.useState<number>(0);\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [selectedLegend, setSelectedLegend] = React.useState<string>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n\n function _refCallback(element: SVGGElement, legendTitle: string | undefined): void {\n _refArray.push({ index: legendTitle, refElement: element });\n }\n\n function _hoverOn(\n event: React.MouseEvent<SVGRectElement, MouseEvent>,\n hoverVal: string | number | Date,\n point: ChartDataPoint,\n ): void {\n if (\n (!isPopoverOpen || legend !== point.legend!) &&\n _calloutAnchorPoint !== point &&\n (_legendHighlighted(point.legend) || _noLegendHighlighted())\n ) {\n _calloutAnchorPoint = point;\n updatePosition(event.clientX, event.clientY);\n setHoverValue(hoverVal);\n setLineColor(point.color!);\n setLegend(point.legend!);\n setXCalloutValue(point.xAxisCalloutData!);\n setYCalloutValue(point.yAxisCalloutData!);\n setBarCalloutProps(point);\n // ToDo - Confirm setting multiple state variables like this is performant.\n }\n }\n\n function _hoverOff(): void {\n /*ToDo. To fix*/\n }\n\n const _handleChartMouseLeave = () => {\n _calloutAnchorPoint = null;\n if (isPopoverOpen) {\n setPopoverOpen(false);\n setHoverValue('');\n setLineColor('');\n setLegend('');\n }\n };\n\n const _adjustProps = (): void => {\n _barHeight = props.barHeight || 12;\n };\n\n const _getChartDataText = (data: ChartProps) => {\n /* return props.barChartCustomData ? (\n <div role=\"text\">{props.barChartCustomData(data)}</div>\n ) : ( */\n return _getDefaultTextData(data);\n //)\n };\n\n function _createLegends(chartProps: ChartProps[]): JSX.Element {\n const legendItems: Legend[] = [];\n chartProps.forEach((point: ChartProps) => {\n point.chartData!.forEach((dataPoint: ChartDataPoint) => {\n const color: string = dataPoint.color!;\n // mapping data to the format Legends component needs\n const legendItem: Legend = {\n title: dataPoint.legend!,\n color,\n action: () => {\n if (selectedLegend === dataPoint.legend) {\n setSelectedLegend('');\n } else {\n setSelectedLegend(dataPoint.legend!);\n }\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(dataPoint.legend!);\n },\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n };\n legendItems.push(legendItem);\n });\n });\n const legends = (\n <Legends legends={legendItems} centerLegends overflowText={props.legendsOverflowText} {...props.legendProps} />\n );\n return legends;\n }\n\n function _getDefaultTextData(data: ChartProps): JSX.Element {\n const { culture } = props;\n const accessibilityData = getAccessibleDataObject(data.chartDataAccessibilityData!, 'text', false);\n if (!isSingleBar) {\n const total = data.chartData!.reduce(\n (acc: number, point: ChartDataPoint) =>\n acc + (point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0),\n 0,\n );\n return (\n <div className={classes.chartTitleRight} {...accessibilityData}>\n {formatToLocaleString(total, culture) as React.ReactNode}\n </div>\n );\n }\n const chartDataMode = props.chartDataMode || 'default';\n const chartData: ChartDataPoint = data!.chartData![0];\n const x = chartData.horizontalBarChartdata!.x;\n const y = chartData.horizontalBarChartdata!.total!;\n\n switch (chartDataMode) {\n case 'default':\n return (\n <div className={classes.chartTitleRight} {...accessibilityData}>\n {formatToLocaleString(x, culture) as React.ReactNode}\n </div>\n );\n case 'fraction':\n return (\n <div {...accessibilityData}>\n <span className={classes.chartTitleRight}>{formatToLocaleString(x, culture) as React.ReactNode}</span>\n <span className={classes.chartDataTextDenominator}>{' / ' + formatToLocaleString(y, culture)}</span>\n </div>\n );\n case 'percentage':\n const dataRatioPercentage = `${formatToLocaleString(Math.round((x / y) * 100), culture)}%`;\n return (\n <div className={classes.chartTitleRight} {...accessibilityData}>\n {dataRatioPercentage}\n </div>\n );\n }\n }\n\n function _createBenchmark(data: ChartProps): JSX.Element {\n if (data.chartData![0].horizontalBarChartdata!.total === undefined) {\n return <></>;\n }\n const totalData = data.chartData![0].horizontalBarChartdata!.total!;\n const benchmarkData = data.chartData![0].data;\n const benchmarkRatio = Math.round(((benchmarkData ? benchmarkData : 0) / totalData) * 100);\n\n const benchmarkStyles = {\n left: 'calc(' + benchmarkRatio + '% - 4px)',\n };\n\n return (\n <div className={classes.benchmarkContainer}>\n <div className={classes.triangle} style={benchmarkStyles} />\n </div>\n );\n }\n\n /**\n * This functions returns an array of <rect> elements, which form the bars\n * For each bar an x value, and a width needs to be specified\n * The computations are done based on percentages\n * Extra margin is also provided, in the x value to provide some spacing in between the bars\n */\n\n function _createBars(data: ChartProps): JSX.Element[] {\n const noOfBars =\n data.chartData?.reduce((count: number, point: ChartDataPoint) => (count += (point.data || 0) > 0 ? 1 : 0), 0) ||\n 1;\n const totalMarginPercent = barSpacingInPercent * (noOfBars - 1);\n const defaultColors: string[] = [\n tokens.colorPaletteBlueForeground2,\n tokens.colorPaletteCornflowerForeground2,\n tokens.colorPaletteDarkGreenForeground2,\n tokens.colorPaletteNavyForeground2,\n tokens.colorPaletteDarkOrangeForeground2,\n ];\n // calculating starting point of each bar and it's range\n const startingPoint: number[] = [];\n const total = data.chartData!.reduce(\n (acc: number, point: ChartDataPoint) =>\n acc + (point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0),\n 0,\n );\n let prevPosition = 0;\n let value = 0;\n\n let sumOfPercent = 0;\n data.chartData!.map((point: ChartDataPoint, index: number) => {\n const pointData = point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0;\n value = (pointData / total) * 100;\n if (value < 0) {\n value = 0;\n } else if (value < 1 && value !== 0) {\n value = 1;\n }\n sumOfPercent += value;\n\n return sumOfPercent;\n });\n\n /**\n * The %age of the space occupied by the margin needs to subtracted\n * while computing the scaling ratio, since the margins are not being\n * scaled down, only the data is being scaled down from a higher percentage to lower percentage\n * Eg: 95% of the space is taken by the bars, 5% by the margins\n * Now if the sumOfPercent is 120% -> This needs to be scaled down to 95%, not 100%\n * since that's only space available to the bars\n */\n const scalingRatio = sumOfPercent !== 0 ? (sumOfPercent - totalMarginPercent) / 100 : 1;\n\n const bars = data.chartData!.map((point: ChartDataPoint, index: number) => {\n const color: string = point.color ? point.color : defaultColors[Math.floor(Math.random() * 4 + 1)];\n const pointData = point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0;\n if (index > 0) {\n prevPosition += value;\n }\n value = (pointData / total) * 100;\n if (value < 0) {\n value = 0;\n } else if (value < 1 && value !== 0) {\n value = 1 / scalingRatio;\n } else {\n value = value / scalingRatio;\n }\n startingPoint.push(prevPosition);\n\n const xValue = point.horizontalBarChartdata!.x;\n const placeholderIndex = 1;\n const isLegendSelected: boolean = _legendHighlighted(point.legend) || _noLegendHighlighted();\n\n // Render bar label instead of placeholder bar for absolute-scale variant\n if (index === placeholderIndex && props.variant === HorizontalBarChartVariant.AbsoluteScale) {\n if (props.hideLabels) {\n return <text key={index} />;\n }\n\n const barValue = data.chartData![0].horizontalBarChartdata!.x;\n\n return (\n <text\n key={index}\n x={`${_isRTL ? 100 - startingPoint[index] : startingPoint[index]}%`}\n y={_barHeight / 2}\n dominantBaseline=\"central\"\n transform={`translate(${_isRTL ? -4 : 4})`}\n className={classes.barLabel}\n aria-hidden={true}\n >\n {formatScientificLimitWidth(barValue)}\n </text>\n );\n }\n\n return (\n <rect\n key={index}\n x={`${\n _isRTL\n ? 100 - startingPoint[index] - value - index * barSpacingInPercent\n : startingPoint[index] + index * barSpacingInPercent\n }%`}\n y={0}\n data-is-focusable={point.legend !== '' ? true : false}\n width={value + '%'}\n height={_barHeight}\n fill={color}\n onMouseOver={point.legend !== '' ? event => _hoverOn(event, xValue, point) : undefined}\n onFocus={point.legend !== '' ? event => _hoverOn.bind(event, xValue, point) : undefined}\n role=\"img\"\n aria-label={_getAriaLabel(point)}\n onBlur={_hoverOff}\n onMouseLeave={_hoverOff}\n className={classes.barWrapper}\n opacity={isLegendSelected ? 1 : 0.1}\n tabIndex={point.legend !== '' ? 0 : undefined}\n />\n );\n });\n return bars;\n }\n\n const _getAriaLabel = (point: ChartDataPoint): string => {\n const legend = point.xAxisCalloutData || point.legend;\n const yValue =\n point.yAxisCalloutData ||\n (point.horizontalBarChartdata\n ? `${point.horizontalBarChartdata.x}/${point.horizontalBarChartdata.total ?? ''}`\n : 0);\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\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 React.useEffect(() => {\n const svgWidth = barChartSvgRef?.current?.getBoundingClientRect().width || 0;\n const MARGIN_WIDTH_IN_PX = 3;\n if (svgWidth) {\n const currentBarSpacing = (MARGIN_WIDTH_IN_PX / svgWidth) * 100;\n setBarSpacingInPercent(currentBarSpacing);\n }\n }, [barChartSvgRef]);\n\n function _legendHighlighted(barLegend?: string) {\n if (barLegend === undefined) {\n return false;\n }\n return selectedLegend === barLegend || (selectedLegend === '' && activeLegend === barLegend);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.*/\n\n function _noLegendHighlighted() {\n return selectedLegend === '' && activeLegend === '';\n }\n\n const { data } = props;\n _adjustProps();\n const classes = useHorizontalBarChartStyles(props);\n const focusAttributes = useFocusableGroup();\n const legendButtons = _createLegends(data!);\n\n let datapoint: number | undefined = 0;\n return !_isChartEmpty() ? (\n <div className={classes.root} onMouseLeave={_handleChartMouseLeave}>\n {data!.map((points: ChartProps, index: number) => {\n if (points.chartData && points.chartData![0] && points.chartData![0].horizontalBarChartdata!.x) {\n datapoint = points.chartData![0].horizontalBarChartdata!.x;\n } else {\n datapoint = 0;\n }\n isSingleBar =\n points.chartData!.length === 1 || (points.chartData!.length > 1 && points.chartData![1].legend === '');\n if (isSingleBar) {\n points.chartData![1] = {\n legend: '',\n horizontalBarChartdata: {\n x: points.chartData![0].horizontalBarChartdata!.total! - datapoint!,\n total: points.chartData![0].horizontalBarChartdata!.total!,\n },\n color: tokens.colorBackgroundOverlay,\n };\n }\n\n // Hide right side text of chart title for absolute-scale variant\n const chartDataText =\n props.variant === HorizontalBarChartVariant.AbsoluteScale ? null : _getChartDataText(points!);\n const bars = _createBars(points!);\n const keyVal = _uniqLineText + '_' + index;\n // ToDo - Showtriangle property is per data series. How to account for it in the new stylesheet\n /* const classes = useHorizontalBarChartStyles(props.styles!, {\n width: props.width,\n showTriangle: !!points!.chartData![0].data,\n variant: props.variant,\n }); */\n\n return (\n <div key={index}>\n <div className={classes.items} {...focusAttributes}>\n <div className={classes.chartTitle}>\n {points!.chartTitle && (\n <FocusableTooltipText\n className={classes.chartTitleLeft}\n content={points!.chartTitle}\n accessibilityData={points!.chartTitleAccessibilityData}\n />\n )}\n {chartDataText}\n </div>\n {points!.chartData![0].data && _createBenchmark(points!)}\n <svg ref={barChartSvgRef} className={classes.chart} aria-label={points!.chartTitle}>\n <g\n id={keyVal}\n key={keyVal}\n ref={(e: SVGGElement) => {\n _refCallback(e, points!.chartData![0].legend);\n }}\n // NOTE: points.chartData![0] contains current data value\n onClick={() => {\n const p = points!.chartData![0];\n if (p && p.onClick) {\n p.onClick();\n }\n }}\n >\n {bars}\n </g>\n </svg>\n </div>\n </div>\n );\n })}\n <ChartPopover\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n legend={legend!}\n YValue={hoverValue!}\n color={lineColor}\n isCalloutForStack={false}\n customCallout={{\n customizedCallout: props.onRenderCalloutPerHorizontalBar\n ? props.onRenderCalloutPerHorizontalBar(barCalloutProps!)\n : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(barCalloutProps!)\n : undefined,\n }}\n isCartesian={false}\n />\n {!isSingleBar && (\n <div ref={(e: HTMLDivElement) => (legendContainer.current = e)} className={classes.legendContainer}>\n {legendButtons}\n </div>\n )}\n </div>\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n //TODO validate and fix focus border for issue for popover\n});\nHorizontalBarChart.displayName = 'HorizontalBarChart';\n"],"names":["HorizontalBarChart","React","forwardRef","props","forwardedRef","legendContainer","useRef","_uniqLineText","Math","random","toString","substring","_refArray","_isRTL","useRtl","barChartSvgRef","createRef","_emptyChartId","useId","_barHeight","_calloutAnchorPoint","isSingleBar","hoverValue","setHoverValue","useState","lineColor","setLineColor","legend","setLegend","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","barCalloutProps","setBarCalloutProps","barSpacingInPercent","setBarSpacingInPercent","isPopoverOpen","setPopoverOpen","clickPosition","setClickPosition","x","y","selectedLegend","setSelectedLegend","activeLegend","setActiveLegend","_refCallback","element","legendTitle","push","index","refElement","_hoverOn","event","hoverVal","point","_legendHighlighted","_noLegendHighlighted","updatePosition","clientX","clientY","color","xAxisCalloutData","yAxisCalloutData","_hoverOff","_handleChartMouseLeave","_adjustProps","barHeight","_getChartDataText","data","_getDefaultTextData","_createLegends","chartProps","legendItems","forEach","chartData","dataPoint","legendItem","title","action","hoverAction","onMouseOutAction","legends","createElement","Legends","centerLegends","overflowText","legendsOverflowText","legendProps","culture","accessibilityData","getAccessibleDataObject","chartDataAccessibilityData","total","reduce","acc","horizontalBarChartdata","div","className","classes","chartTitleRight","formatToLocaleString","chartDataMode","span","chartDataTextDenominator","dataRatioPercentage","round","_createBenchmark","undefined","Fragment","totalData","benchmarkData","benchmarkRatio","benchmarkStyles","left","benchmarkContainer","triangle","style","_createBars","noOfBars","count","totalMarginPercent","defaultColors","tokens","colorPaletteBlueForeground2","colorPaletteCornflowerForeground2","colorPaletteDarkGreenForeground2","colorPaletteNavyForeground2","colorPaletteDarkOrangeForeground2","startingPoint","prevPosition","value","sumOfPercent","map","pointData","scalingRatio","bars","floor","xValue","placeholderIndex","isLegendSelected","variant","HorizontalBarChartVariant","AbsoluteScale","hideLabels","text","key","barValue","dominantBaseline","transform","barLabel","aria-hidden","formatScientificLimitWidth","rect","data-is-focusable","width","height","fill","onMouseOver","onFocus","bind","role","aria-label","_getAriaLabel","onBlur","onMouseLeave","barWrapper","opacity","tabIndex","yValue","callOutAccessibilityData","ariaLabel","_isChartEmpty","length","newX","newY","threshold","distance","sqrt","pow","useEffect","svgWidth","current","getBoundingClientRect","MARGIN_WIDTH_IN_PX","currentBarSpacing","barLegend","useHorizontalBarChartStyles","focusAttributes","useFocusableGroup","legendButtons","datapoint","root","points","colorBackgroundOverlay","chartDataText","keyVal","items","chartTitle","FocusableTooltipText","chartTitleLeft","content","chartTitleAccessibilityData","svg","ref","chart","g","id","e","onClick","p","ChartPopover","YValue","isCalloutForStack","customCallout","customizedCallout","onRenderCalloutPerHorizontalBar","customCalloutProps","calloutPropsPerDataPoint","isCartesian","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAkBaA;;;eAAAA;;;;iEAlBU;mDACqB;uBACiE;gCACxE;wBACuC;gCACtD;4BACC;8BACW;8BACL;sCACQ;wBACL;AAQzB,MAAMA,qBAAAA,WAAAA,GAAuEC,OAAMC,UAAU,CAGlG,CAACC,OAAOC;IACR,MAAMC,kBAAkBJ,OAAMK,MAAM,CAAwB;IAC5D,MAAMC,gBAAwB,qBAAqBC,KAAKC,MAAM,GAAGC,QAAQ,CAAC,IAAIC,SAAS,CAAC;IACxF,MAAMC,YAA4B,EAAE;IACpC,MAAMC,SAAkBC,IAAAA,cAAAA;IACxB,MAAMC,iBAAAA,WAAAA,GAAiDd,OAAMe,SAAS;IACtE,MAAMC,gBAAwBC,IAAAA,qBAAAA,EAAM;IACpC,IAAIC;IACJ,IAAIC;IACJ,IAAIC,cAAuB;IAE3B,MAAM,CAACC,YAAYC,cAAc,GAAGtB,OAAMuB,QAAQ,CAAgC;IAClF,MAAM,CAACC,WAAWC,aAAa,GAAGzB,OAAMuB,QAAQ,CAAS;IACzD,MAAM,CAACG,QAAQC,UAAU,GAAG3B,OAAMuB,QAAQ,CAAgB;IAC1D,MAAM,CAACK,eAAeC,iBAAiB,GAAG7B,OAAMuB,QAAQ,CAAqB;IAC7E,MAAM,CAACO,eAAeC,iBAAiB,GAAG/B,OAAMuB,QAAQ,CAAqB;IAC7E,MAAM,CAACS,iBAAiBC,mBAAmB,GAAGjC,OAAMuB,QAAQ;IAC5D,MAAM,CAACW,qBAAqBC,uBAAuB,GAAGnC,OAAMuB,QAAQ,CAAS;IAC7E,MAAM,CAACa,eAAeC,eAAe,GAAGrC,OAAMuB,QAAQ,CAAU;IAChE,MAAM,CAACe,eAAeC,iBAAiB,GAAGvC,OAAMuB,QAAQ,CAAC;QAAEiB,GAAG;QAAGC,GAAG;IAAE;IACtE,MAAM,CAACC,gBAAgBC,kBAAkB,GAAG3C,OAAMuB,QAAQ,CAAS;IACnE,MAAM,CAACqB,cAAcC,gBAAgB,GAAG7C,OAAMuB,QAAQ,CAAS;IAE/D,SAASuB,aAAaC,OAAoB,EAAEC,WAA+B;QACzErC,UAAUsC,IAAI,CAAC;YAAEC,OAAOF;YAAaG,YAAYJ;QAAQ;IAC3D;IAEA,SAASK,SACPC,KAAmD,EACnDC,QAAgC,EAChCC,KAAqB;QAErB,IACE,AAAC,CAAA,CAACnB,iBAAiBV,WAAW6B,MAAM7B,MAAM,AAANA,KACpCP,wBAAwBoC,SACvBC,CAAAA,mBAAmBD,MAAM7B,MAAM,KAAK+B,sBAAAA,GACrC;YACAtC,sBAAsBoC;YACtBG,eAAeL,MAAMM,OAAO,EAAEN,MAAMO,OAAO;YAC3CtC,cAAcgC;YACd7B,aAAa8B,MAAMM,KAAK;YACxBlC,UAAU4B,MAAM7B,MAAM;YACtBG,iBAAiB0B,MAAMO,gBAAgB;YACvC/B,iBAAiBwB,MAAMQ,gBAAgB;YACvC9B,mBAAmBsB;QACnB,2EAA2E;QAC7E;IACF;IAEA,SAASS;IACP,cAAc,GAChB;IAEA,MAAMC,yBAAyB;QAC7B9C,sBAAsB;QACtB,IAAIiB,eAAe;YACjBC,eAAe;YACff,cAAc;YACdG,aAAa;YACbE,UAAU;QACZ;IACF;IAEA,MAAMuC,eAAe;QACnBhD,aAAahB,MAAMiE,SAAS,IAAI;IAClC;IAEA,MAAMC,oBAAoB,CAACC;QACzB;;YAEQ,GACR,OAAOC,oBAAoBD;IAC3B,GAAG;IACL;IAEA,SAASE,eAAeC,UAAwB;QAC9C,MAAMC,cAAwB,EAAE;QAChCD,WAAWE,OAAO,CAAC,CAACnB;YAClBA,MAAMoB,SAAS,CAAED,OAAO,CAAC,CAACE;gBACxB,MAAMf,QAAgBe,UAAUf,KAAK;gBACrC,qDAAqD;gBACrD,MAAMgB,aAAqB;oBACzBC,OAAOF,UAAUlD,MAAM;oBACvBmC;oBACAkB,QAAQ;wBACN,IAAIrC,mBAAmBkC,UAAUlD,MAAM,EAAE;4BACvCiB,kBAAkB;wBACpB,OAAO;4BACLA,kBAAkBiC,UAAUlD,MAAM;wBACpC;oBACF;oBACAsD,aAAa;wBACXf;wBACApB,gBAAgB+B,UAAUlD,MAAM;oBAClC;oBACAuD,kBAAkB;wBAChBpC,gBAAgB;oBAClB;gBACF;gBACA4B,YAAYxB,IAAI,CAAC4B;YACnB;QACF;QACA,MAAMK,UAAAA,WAAAA,GACJlF,OAAAmF,aAAA,CAACC,eAAAA,EAAAA;YAAQF,SAAST;YAAaY,eAAAA;YAAcC,cAAcpF,MAAMqF,mBAAmB;YAAG,GAAGrF,MAAMsF,WAAW;;QAE7G,OAAON;IACT;IAEA,SAASZ,oBAAoBD,IAAgB;QAC3C,MAAM,EAAEoB,OAAO,EAAE,GAAGvF;QACpB,MAAMwF,oBAAoBC,IAAAA,+BAAAA,EAAwBtB,KAAKuB,0BAA0B,EAAG,QAAQ;QAC5F,IAAI,CAACxE,aAAa;YAChB,MAAMyE,QAAQxB,KAAKM,SAAS,CAAEmB,MAAM,CAClC,CAACC,KAAaxC,QACZwC,MAAOxC,CAAAA,MAAMyC,sBAAsB,CAAExD,CAAC,GAAGe,MAAMyC,sBAAsB,CAAExD,CAAC,GAAG,CAAA,GAC7E;YAEF,OAAA,WAAA,GACExC,OAAAmF,aAAA,CAACc,OAAAA;gBAAIC,WAAWC,QAAQC,eAAe;gBAAG,GAAGV,iBAAiB;eAC3DW,IAAAA,oCAAAA,EAAqBR,OAAOJ;QAGnC;QACA,MAAMa,gBAAgBpG,MAAMoG,aAAa,IAAI;QAC7C,MAAM3B,YAA4BN,KAAMM,SAAS,CAAE,EAAE;QACrD,MAAMnC,IAAImC,UAAUqB,sBAAsB,CAAExD,CAAC;QAC7C,MAAMC,IAAIkC,UAAUqB,sBAAsB,CAAEH,KAAK;QAEjD,OAAQS;YACN,KAAK;gBACH,OAAA,WAAA,GACEtG,OAAAmF,aAAA,CAACc,OAAAA;oBAAIC,WAAWC,QAAQC,eAAe;oBAAG,GAAGV,iBAAiB;mBAC3DW,IAAAA,oCAAAA,EAAqB7D,GAAGiD;YAG/B,KAAK;gBACH,OAAA,WAAA,GACEzF,OAAAmF,aAAA,CAACc,OAAQP,mBAAAA,WAAAA,GACP1F,OAAAmF,aAAA,CAACoB,QAAAA;oBAAKL,WAAWC,QAAQC,eAAe;mBAAGC,IAAAA,oCAAAA,EAAqB7D,GAAGiD,WAAAA,WAAAA,GACnEzF,OAAAmF,aAAA,CAACoB,QAAAA;oBAAKL,WAAWC,QAAQK,wBAAwB;mBAAG,QAAQH,IAAAA,oCAAAA,EAAqB5D,GAAGgD;YAG1F,KAAK;gBACH,MAAMgB,sBAAsB,CAAC,EAAEJ,IAAAA,oCAAAA,EAAqB9F,KAAKmG,KAAK,CAAClE,IAAKC,IAAK,MAAMgD,SAAS,CAAC,CAAC;gBAC1F,OAAA,WAAA,GACEzF,OAAAmF,aAAA,CAACc,OAAAA;oBAAIC,WAAWC,QAAQC,eAAe;oBAAG,GAAGV,iBAAiB;mBAC3De;QAGT;IACF;IAEA,SAASE,iBAAiBtC,IAAgB;QACxC,IAAIA,KAAKM,SAAS,CAAE,EAAE,CAACqB,sBAAsB,CAAEH,KAAK,KAAKe,WAAW;YAClE,OAAA,WAAA,GAAO5G,OAAAmF,aAAA,CAAAnF,OAAA6G,QAAA,EAAA;QACT;QACA,MAAMC,YAAYzC,KAAKM,SAAS,CAAE,EAAE,CAACqB,sBAAsB,CAAEH,KAAK;QAClE,MAAMkB,gBAAgB1C,KAAKM,SAAS,CAAE,EAAE,CAACN,IAAI;QAC7C,MAAM2C,iBAAiBzG,KAAKmG,KAAK,CAAC,AAAEK,CAAAA,gBAAgBA,gBAAgB,CAAA,IAAKD,YAAa;QAEtF,MAAMG,kBAAkB;YACtBC,MAAM,UAAUF,iBAAiB;QACnC;QAEA,OAAA,WAAA,GACEhH,OAAAmF,aAAA,CAACc,OAAAA;YAAIC,WAAWC,QAAQgB,kBAAkB;yBACxCnH,OAAAmF,aAAA,CAACc,OAAAA;YAAIC,WAAWC,QAAQiB,QAAQ;YAAEC,OAAOJ;;IAG/C;IAEA;;;;;GAKC,GAED,SAASK,YAAYjD,IAAgB;YAEjCA;QADF,MAAMkD,WACJlD,CAAAA,CAAAA,kBAAAA,KAAKM,SAAS,AAATA,MAAS,QAAdN,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAgByB,MAAM,CAAC,CAAC0B,OAAejE,QAA2BiE,SAAS,AAACjE,CAAAA,MAAMc,IAAI,IAAI,CAAA,IAAK,IAAI,IAAI,GAAI,EAAA,KAC3G;QACF,MAAMoD,qBAAqBvF,sBAAuBqF,CAAAA,WAAW,CAAA;QAC7D,MAAMG,gBAA0B;YAC9BC,kBAAAA,CAAOC,2BAA2B;YAClCD,kBAAAA,CAAOE,iCAAiC;YACxCF,kBAAAA,CAAOG,gCAAgC;YACvCH,kBAAAA,CAAOI,2BAA2B;YAClCJ,kBAAAA,CAAOK,iCAAiC;SACzC;QACD,wDAAwD;QACxD,MAAMC,gBAA0B,EAAE;QAClC,MAAMpC,QAAQxB,KAAKM,SAAS,CAAEmB,MAAM,CAClC,CAACC,KAAaxC,QACZwC,MAAOxC,CAAAA,MAAMyC,sBAAsB,CAAExD,CAAC,GAAGe,MAAMyC,sBAAsB,CAAExD,CAAC,GAAG,CAAA,GAC7E;QAEF,IAAI0F,eAAe;QACnB,IAAIC,QAAQ;QAEZ,IAAIC,eAAe;QACnB/D,KAAKM,SAAS,CAAE0D,GAAG,CAAC,CAAC9E,OAAuBL;YAC1C,MAAMoF,YAAY/E,MAAMyC,sBAAsB,CAAExD,CAAC,GAAGe,MAAMyC,sBAAsB,CAAExD,CAAC,GAAG;YACtF2F,QAAQG,YAAazC,QAAS;YAC9B,IAAIsC,QAAQ,GAAG;gBACbA,QAAQ;YACV,OAAO,IAAIA,QAAQ,KAAKA,UAAU,GAAG;gBACnCA,QAAQ;YACV;YACAC,gBAAgBD;YAEhB,OAAOC;QACT;QAEA;;;;;;;KAOC,GACD,MAAMG,eAAeH,iBAAiB,IAAI,AAACA,CAAAA,eAAeX,kBAAAA,IAAsB,MAAM;QAEtF,MAAMe,OAAOnE,KAAKM,SAAS,CAAE0D,GAAG,CAAC,CAAC9E,OAAuBL;YACvD,MAAMW,QAAgBN,MAAMM,KAAK,GAAGN,MAAMM,KAAK,GAAG6D,aAAa,CAACnH,KAAKkI,KAAK,CAAClI,KAAKC,MAAM,KAAK,IAAI,GAAG;YAClG,MAAM8H,YAAY/E,MAAMyC,sBAAsB,CAAExD,CAAC,GAAGe,MAAMyC,sBAAsB,CAAExD,CAAC,GAAG;YACtF,IAAIU,QAAQ,GAAG;gBACbgF,gBAAgBC;YAClB;YACAA,QAAQG,YAAazC,QAAS;YAC9B,IAAIsC,QAAQ,GAAG;gBACbA,QAAQ;YACV,OAAO,IAAIA,QAAQ,KAAKA,UAAU,GAAG;gBACnCA,QAAQ,IAAII;YACd,OAAO;gBACLJ,QAAQA,QAAQI;YAClB;YACAN,cAAchF,IAAI,CAACiF;YAEnB,MAAMQ,SAASnF,MAAMyC,sBAAsB,CAAExD,CAAC;YAC9C,MAAMmG,mBAAmB;YACzB,MAAMC,mBAA4BpF,mBAAmBD,MAAM7B,MAAM,KAAK+B;YAEtE,yEAAyE;YACzE,IAAIP,UAAUyF,oBAAoBzI,MAAM2I,OAAO,KAAKC,gCAAAA,CAA0BC,aAAa,EAAE;gBAC3F,IAAI7I,MAAM8I,UAAU,EAAE;oBACpB,OAAA,WAAA,GAAOhJ,OAAAmF,aAAA,CAAC8D,QAAAA;wBAAKC,KAAKhG;;gBACpB;gBAEA,MAAMiG,WAAW9E,KAAKM,SAAS,CAAE,EAAE,CAACqB,sBAAsB,CAAExD,CAAC;gBAE7D,OAAA,WAAA,GACExC,OAAAmF,aAAA,CAAC8D,QAAAA;oBACCC,KAAKhG;oBACLV,GAAG,CAAC,EAAE5B,SAAS,MAAMqH,aAAa,CAAC/E,MAAM,GAAG+E,aAAa,CAAC/E,MAAM,CAAC,CAAC,CAAC;oBACnET,GAAGvB,aAAa;oBAChBkI,kBAAiB;oBACjBC,WAAW,CAAC,UAAU,EAAEzI,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC1CsF,WAAWC,QAAQmD,QAAQ;oBAC3BC,eAAa;mBAEZC,IAAAA,kCAAAA,EAA2BL;YAGlC;YAEA,OAAA,WAAA,GACEnJ,OAAAmF,aAAA,CAACsE,QAAAA;gBACCP,KAAKhG;gBACLV,GAAG,CAAC,EACF5B,SACI,MAAMqH,aAAa,CAAC/E,MAAM,GAAGiF,QAAQjF,QAAQhB,sBAC7C+F,aAAa,CAAC/E,MAAM,GAAGA,QAAQhB,oBACpC,CAAC,CAAC;gBACHO,GAAG;gBACHiH,qBAAmBnG,MAAM7B,MAAM,KAAK,KAAK,OAAO;gBAChDiI,OAAOxB,QAAQ;gBACfyB,QAAQ1I;gBACR2I,MAAMhG;gBACNiG,aAAavG,MAAM7B,MAAM,KAAK,KAAK2B,CAAAA,QAASD,SAASC,OAAOqF,QAAQnF,SAASqD;gBAC7EmD,SAASxG,MAAM7B,MAAM,KAAK,KAAK2B,CAAAA,QAASD,SAAS4G,IAAI,CAAC3G,OAAOqF,QAAQnF,SAASqD;gBAC9EqD,MAAK;gBACLC,cAAYC,cAAc5G;gBAC1B6G,QAAQpG;gBACRqG,cAAcrG;gBACdkC,WAAWC,QAAQmE,UAAU;gBAC7BC,SAAS3B,mBAAmB,IAAI;gBAChC4B,UAAUjH,MAAM7B,MAAM,KAAK,KAAK,IAAIkF;;QAG1C;QACA,OAAO4B;IACT;IAEA,MAAM2B,gBAAgB,CAAC5G;YAOdA;QANP,MAAM7B,SAAS6B,MAAMO,gBAAgB,IAAIP,MAAM7B,MAAM;YAIV6B;QAH3C,MAAMkH,SACJlH,MAAMQ,gBAAgB,IACrBR,CAAAA,MAAMyC,sBAAsB,GACzB,CAAC,EAAEzC,MAAMyC,sBAAsB,CAACxD,CAAC,CAAC,CAAC,EAAEe,CAAAA,sCAAAA,MAAMyC,sBAAsB,CAACH,KAAK,AAALA,MAAK,QAAlCtC,wCAAAA,KAAAA,IAAAA,sCAAsC,GAAG,CAAC,GAC/E,CAAA;QACN,OAAOA,CAAAA,CAAAA,kCAAAA,MAAMmH,wBAAwB,AAAxBA,MAAwB,QAA9BnH,oCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gCAAgCoH,SAAS,AAATA,KAAa,AAACjJ,CAAAA,SAAS,CAAC,EAAEA,OAAO,EAAE,CAAC,GAAG,EAAA,IAAM,CAAC,EAAE+I,OAAO,CAAC,CAAC;IAClG;IAEA,SAASG;QACP,OAAO,CAAE1K,CAAAA,MAAMmE,IAAI,IAAInE,MAAMmE,IAAI,CAACwG,MAAM,GAAG,CAAA;IAC7C;IAEA,SAASnH,eAAeoH,IAAY,EAAEC,IAAY;QAChD,MAAMC,YAAY,GAAG,+BAA+B;QACpD,MAAM,EAAExI,CAAC,EAAEC,CAAC,EAAE,GAAGH;QAEjB,+BAA+B;QAC/B,MAAM2I,WAAW1K,KAAK2K,IAAI,CAAC3K,KAAK4K,GAAG,CAACL,OAAOtI,GAAG,KAAKjC,KAAK4K,GAAG,CAACJ,OAAOtI,GAAG;QACtE,+EAA+E;QAC/E,IAAIwI,WAAWD,WAAW;YACxBzI,iBAAiB;gBAAEC,GAAGsI;gBAAMrI,GAAGsI;YAAK;YACpC1I,eAAe;QACjB;IACF;IAEArC,OAAMoL,SAAS,CAAC;YACGtK;QAAjB,MAAMuK,WAAWvK,CAAAA,mBAAAA,QAAAA,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,eAAgBwK,OAAO,AAAPA,MAAO,QAAvBxK,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,wBAAyByK,qBAAqB,GAAG5B,KAAK,AAALA,KAAS;QAC3E,MAAM6B,qBAAqB;QAC3B,IAAIH,UAAU;YACZ,MAAMI,oBAAoBD,qBAAsBH,WAAY;YAC5DlJ,uBAAuBsJ;QACzB;IACF,GAAG;QAAC3K;KAAe;IAEnB,SAAS0C,mBAAmBkI,SAAkB;QAC5C,IAAIA,cAAc9E,WAAW;YAC3B,OAAO;QACT;QACA,OAAOlE,mBAAmBgJ,aAAchJ,mBAAmB,MAAME,iBAAiB8I;IACpF;IAEA;wEACsE,GAEtE,SAASjI;QACP,OAAOf,mBAAmB,MAAME,iBAAiB;IACnD;IAEA,MAAM,EAAEyB,IAAI,EAAE,GAAGnE;IACjBgE;IACA,MAAMiC,UAAUwF,IAAAA,8DAAAA,EAA4BzL;IAC5C,MAAM0L,kBAAkBC,IAAAA,+BAAAA;IACxB,MAAMC,gBAAgBvH,eAAeF;IAErC,IAAI0H,YAAgC;QAyErB7L;IAxEf,OAAO,CAAC0K,kBAAAA,WAAAA,GACN5K,OAAAmF,aAAA,CAACc,OAAAA;QAAIC,WAAWC,QAAQ6F,IAAI;QAAE3B,cAAcpG;OACzCI,KAAMgE,GAAG,CAAC,CAAC4D,QAAoB/I;QAC9B,IAAI+I,OAAOtH,SAAS,IAAIsH,OAAOtH,SAAS,CAAE,EAAE,IAAIsH,OAAOtH,SAAS,CAAE,EAAE,CAACqB,sBAAsB,CAAExD,CAAC,EAAE;YAC9FuJ,YAAYE,OAAOtH,SAAS,CAAE,EAAE,CAACqB,sBAAsB,CAAExD,CAAC;QAC5D,OAAO;YACLuJ,YAAY;QACd;QACA3K,cACE6K,OAAOtH,SAAS,CAAEkG,MAAM,KAAK,KAAMoB,OAAOtH,SAAS,CAAEkG,MAAM,GAAG,KAAKoB,OAAOtH,SAAS,CAAE,EAAE,CAACjD,MAAM,KAAK;QACrG,IAAIN,aAAa;YACf6K,OAAOtH,SAAS,CAAE,EAAE,GAAG;gBACrBjD,QAAQ;gBACRsE,wBAAwB;oBACtBxD,GAAGyJ,OAAOtH,SAAS,CAAE,EAAE,CAACqB,sBAAsB,CAAEH,KAAK,GAAIkG;oBACzDlG,OAAOoG,OAAOtH,SAAS,CAAE,EAAE,CAACqB,sBAAsB,CAAEH,KAAK;gBAC3D;gBACAhC,OAAO8D,kBAAAA,CAAOuE,sBAAsB;YACtC;QACF;QAEA,iEAAiE;QACjE,MAAMC,gBACJjM,MAAM2I,OAAO,KAAKC,gCAAAA,CAA0BC,aAAa,GAAG,OAAO3E,kBAAkB6H;QACvF,MAAMzD,OAAOlB,YAAY2E;QACzB,MAAMG,SAAS9L,gBAAgB,MAAM4C;QACrC,+FAA+F;QAC/F;;;;YAII,GAEJ,OAAA,WAAA,GACElD,OAAAmF,aAAA,CAACc,OAAAA;YAAIiD,KAAKhG;yBACRlD,OAAAmF,aAAA,CAACc,OAAAA;YAAIC,WAAWC,QAAQkG,KAAK;YAAG,GAAGT,eAAe;yBAChD5L,OAAAmF,aAAA,CAACc,OAAAA;YAAIC,WAAWC,QAAQmG,UAAU;WAC/BL,OAAQK,UAAU,IAAA,WAAA,GACjBtM,OAAAmF,aAAA,CAACoH,0CAAAA,EAAAA;YACCrG,WAAWC,QAAQqG,cAAc;YACjCC,SAASR,OAAQK,UAAU;YAC3B5G,mBAAmBuG,OAAQS,2BAA2B;YAGzDP,gBAEFF,OAAQtH,SAAS,CAAE,EAAE,CAACN,IAAI,IAAIsC,iBAAiBsF,SAAAA,WAAAA,GAChDjM,OAAAmF,aAAA,CAACwH,OAAAA;YAAIC,KAAK9L;YAAgBoF,WAAWC,QAAQ0G,KAAK;YAAE3C,cAAY+B,OAAQK,UAAU;yBAChFtM,OAAAmF,aAAA,CAAC2H,KAAAA;YACCC,IAAIX;YACJlD,KAAKkD;YACLQ,KAAK,CAACI;gBACJlK,aAAakK,GAAGf,OAAQtH,SAAS,CAAE,EAAE,CAACjD,MAAM;YAC9C;YACA,yDAAyD;YACzDuL,SAAS;gBACP,MAAMC,IAAIjB,OAAQtH,SAAS,CAAE,EAAE;gBAC/B,IAAIuI,KAAKA,EAAED,OAAO,EAAE;oBAClBC,EAAED,OAAO;gBACX;YACF;WAECzE;IAMb,IAAA,WAAA,GACAxI,OAAAmF,aAAA,CAACgI,0BAAAA,EAAAA;QACCvL,eAAeA;QACfE,eAAeA;QACf2D,SAASvF,CAAAA,iBAAAA,MAAMuF,OAAO,AAAPA,MAAO,QAAbvF,mBAAAA,KAAAA,IAAAA,iBAAiB;QAC1BoC,eAAeA;QACfF,eAAeA;QACfV,QAAQA;QACR0L,QAAQ/L;QACRwC,OAAOrC;QACP6L,mBAAmB;QACnBC,eAAe;YACbC,mBAAmBrN,MAAMsN,+BAA+B,GACpDtN,MAAMsN,+BAA+B,CAACxL,mBACtC4E;YACJ6G,oBAAoBvN,MAAMwN,wBAAwB,GAC9CxN,MAAMwN,wBAAwB,CAAC1L,mBAC/B4E;QACN;QACA+G,aAAa;QAEd,CAACvM,eAAAA,WAAAA,GACApB,OAAAmF,aAAA,CAACc,OAAAA;QAAI2G,KAAK,CAACI,IAAuB5M,gBAAgBkL,OAAO,GAAG0B;QAAI9G,WAAWC,QAAQ/F,eAAe;OAC/F0L,kBAAAA,WAAAA,GAKP9L,OAAAmF,aAAA,CAACc,OAAAA;QAAI8G,IAAI/L;QAAeiJ,MAAM;QAAS5C,OAAO;YAAEkD,SAAS;QAAI;QAAGL,cAAY;;AAE9E,0DAA0D;AAC5D;AACAnK,mBAAmB6N,WAAW,GAAG"}
1
+ {"version":3,"sources":["HorizontalBarChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useHorizontalBarChartStyles } from './useHorizontalBarChartStyles.styles';\nimport { ChartProps, HorizontalBarChartProps, ChartDataPoint, RefArrayData, HorizontalBarChartVariant } from './index';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { formatScientificLimitWidth, getAccessibleDataObject, useRtl } from '../../utilities/index';\nimport { useId } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { FocusableTooltipText } from '../../utilities/FocusableTooltipText';\nimport { Legend, Legends } from '../../index';\n\n/**\n * HorizontalBarChart is the context wrapper and container for all HorizontalBarChart content/controls,\n * It has no direct style or slot opinions.\n *\n * HorizontalBarChart also provides API interfaces for callbacks that will occur on navigation events.\n */\nexport const HorizontalBarChart: React.FunctionComponent<HorizontalBarChartProps> = React.forwardRef<\n HTMLDivElement,\n HorizontalBarChartProps\n>((props, forwardedRef) => {\n const legendContainer = React.useRef<HTMLDivElement | null>(null);\n const _uniqLineText: string = '_HorizontalLine_' + Math.random().toString(36).substring(7);\n const _refArray: RefArrayData[] = [];\n const _isRTL: boolean = useRtl();\n const barChartSvgRef: React.RefObject<SVGSVGElement> = React.createRef<SVGSVGElement>();\n const _emptyChartId: string = useId('_HBC_empty');\n let _barHeight: number;\n let _calloutAnchorPoint: ChartDataPoint | null;\n let isSingleBar: boolean = true;\n\n const [hoverValue, setHoverValue] = React.useState<string | number | Date | null>('');\n const [lineColor, setLineColor] = React.useState<string>('');\n const [legend, setLegend] = React.useState<string | null>('');\n const [xCalloutValue, setXCalloutValue] = React.useState<string | undefined>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string | undefined>('');\n const [barCalloutProps, setBarCalloutProps] = React.useState<ChartDataPoint>();\n const [barSpacingInPercent, setBarSpacingInPercent] = React.useState<number>(0);\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [selectedLegend, setSelectedLegend] = React.useState<string>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n\n function _refCallback(element: SVGGElement, legendTitle: string | undefined): void {\n _refArray.push({ index: legendTitle, refElement: element });\n }\n\n function _hoverOn(\n event: React.FocusEvent<SVGRectElement> | React.MouseEvent<SVGRectElement>,\n hoverVal: string | number | Date,\n point: ChartDataPoint,\n ): void {\n if (\n (!isPopoverOpen || legend !== point.legend!) &&\n _calloutAnchorPoint !== point &&\n (_legendHighlighted(point.legend) || _noLegendHighlighted())\n ) {\n _calloutAnchorPoint = point;\n let x = 0;\n let y = 0;\n\n if ('clientX' in event && event.clientX && event.clientY) {\n // Mouse event\n x = event.clientX;\n y = event.clientY;\n } else {\n // Focus event\n const targetRect = (event.target as SVGRectElement).getBoundingClientRect();\n x = targetRect.left + targetRect.width / 2;\n y = targetRect.top + targetRect.height / 2;\n }\n\n updatePosition(x, y);\n setHoverValue(hoverVal);\n setLineColor(point.color!);\n setLegend(point.legend!);\n setXCalloutValue(point.xAxisCalloutData!);\n setYCalloutValue(point.yAxisCalloutData!);\n setBarCalloutProps(point);\n // ToDo - Confirm setting multiple state variables like this is performant.\n }\n }\n\n function _hoverOff(): void {\n /*ToDo. To fix*/\n }\n\n const _handleChartMouseLeave = () => {\n _calloutAnchorPoint = null;\n if (isPopoverOpen) {\n setPopoverOpen(false);\n setHoverValue('');\n setLineColor('');\n setLegend('');\n }\n };\n\n const _adjustProps = (): void => {\n _barHeight = props.barHeight || 12;\n };\n\n const _getChartDataText = (data: ChartProps) => {\n /* return props.barChartCustomData ? (\n <div role=\"text\">{props.barChartCustomData(data)}</div>\n ) : ( */\n return _getDefaultTextData(data);\n //)\n };\n\n function _createLegends(chartProps: ChartProps[]): JSX.Element {\n const legendItems: Legend[] = [];\n chartProps.forEach((point: ChartProps) => {\n point.chartData!.forEach((dataPoint: ChartDataPoint) => {\n const color: string = dataPoint.color!;\n // mapping data to the format Legends component needs\n const legendItem: Legend = {\n title: dataPoint.legend!,\n color,\n action: () => {\n if (selectedLegend === dataPoint.legend) {\n setSelectedLegend('');\n } else {\n setSelectedLegend(dataPoint.legend!);\n }\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(dataPoint.legend!);\n },\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n };\n legendItems.push(legendItem);\n });\n });\n const legends = (\n <Legends legends={legendItems} centerLegends overflowText={props.legendsOverflowText} {...props.legendProps} />\n );\n return legends;\n }\n\n function _getDefaultTextData(data: ChartProps): JSX.Element {\n const { culture } = props;\n const accessibilityData = getAccessibleDataObject(data.chartDataAccessibilityData!, 'text', false);\n if (!isSingleBar) {\n const total = data.chartData!.reduce(\n (acc: number, point: ChartDataPoint) =>\n acc + (point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0),\n 0,\n );\n return (\n <div className={classes.chartTitleRight} {...accessibilityData}>\n {formatToLocaleString(total, culture) as React.ReactNode}\n </div>\n );\n }\n const chartDataMode = props.chartDataMode || 'default';\n const chartData: ChartDataPoint = data!.chartData![0];\n const x = chartData.horizontalBarChartdata!.x;\n const y = chartData.horizontalBarChartdata!.total!;\n\n switch (chartDataMode) {\n case 'default':\n return (\n <div className={classes.chartTitleRight} {...accessibilityData}>\n {formatToLocaleString(x, culture) as React.ReactNode}\n </div>\n );\n case 'fraction':\n return (\n <div {...accessibilityData}>\n <span className={classes.chartTitleRight}>{formatToLocaleString(x, culture) as React.ReactNode}</span>\n <span className={classes.chartDataTextDenominator}>{' / ' + formatToLocaleString(y, culture)}</span>\n </div>\n );\n case 'percentage':\n const dataRatioPercentage = `${formatToLocaleString(Math.round((x / y) * 100), culture)}%`;\n return (\n <div className={classes.chartTitleRight} {...accessibilityData}>\n {dataRatioPercentage}\n </div>\n );\n }\n }\n\n function _createBenchmark(data: ChartProps): JSX.Element {\n if (data.chartData![0].horizontalBarChartdata!.total === undefined) {\n return <></>;\n }\n const totalData = data.chartData![0].horizontalBarChartdata!.total!;\n const benchmarkData = data.chartData![0].data;\n const benchmarkRatio = Math.round(((benchmarkData ? benchmarkData : 0) / totalData) * 100);\n\n const benchmarkStyles = {\n left: 'calc(' + benchmarkRatio + '% - 4px)',\n };\n\n return (\n <div className={classes.benchmarkContainer}>\n <div className={classes.triangle} style={benchmarkStyles} />\n </div>\n );\n }\n\n /**\n * This functions returns an array of <rect> elements, which form the bars\n * For each bar an x value, and a width needs to be specified\n * The computations are done based on percentages\n * Extra margin is also provided, in the x value to provide some spacing in between the bars\n */\n\n function _createBars(data: ChartProps): JSX.Element[] {\n const noOfBars =\n data.chartData?.reduce((count: number, point: ChartDataPoint) => (count += (point.data || 0) > 0 ? 1 : 0), 0) ||\n 1;\n const totalMarginPercent = barSpacingInPercent * (noOfBars - 1);\n const defaultColors: string[] = [\n tokens.colorPaletteBlueForeground2,\n tokens.colorPaletteCornflowerForeground2,\n tokens.colorPaletteDarkGreenForeground2,\n tokens.colorPaletteNavyForeground2,\n tokens.colorPaletteDarkOrangeForeground2,\n ];\n // calculating starting point of each bar and it's range\n const startingPoint: number[] = [];\n const total = data.chartData!.reduce(\n (acc: number, point: ChartDataPoint) =>\n acc + (point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0),\n 0,\n );\n let prevPosition = 0;\n let value = 0;\n\n let sumOfPercent = 0;\n data.chartData!.map((point: ChartDataPoint, index: number) => {\n const pointData = point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0;\n value = (pointData / total) * 100;\n if (value < 0) {\n value = 0;\n } else if (value < 1 && value !== 0) {\n value = 1;\n }\n sumOfPercent += value;\n\n return sumOfPercent;\n });\n\n /**\n * The %age of the space occupied by the margin needs to subtracted\n * while computing the scaling ratio, since the margins are not being\n * scaled down, only the data is being scaled down from a higher percentage to lower percentage\n * Eg: 95% of the space is taken by the bars, 5% by the margins\n * Now if the sumOfPercent is 120% -> This needs to be scaled down to 95%, not 100%\n * since that's only space available to the bars\n */\n const scalingRatio = sumOfPercent !== 0 ? (sumOfPercent - totalMarginPercent) / 100 : 1;\n\n const bars = data.chartData!.map((point: ChartDataPoint, index: number) => {\n const color: string = point.color ? point.color : defaultColors[Math.floor(Math.random() * 4 + 1)];\n const pointData = point.horizontalBarChartdata!.x ? point.horizontalBarChartdata!.x : 0;\n if (index > 0) {\n prevPosition += value;\n }\n value = (pointData / total) * 100;\n if (value < 0) {\n value = 0;\n } else if (value < 1 && value !== 0) {\n value = 1 / scalingRatio;\n } else {\n value = value / scalingRatio;\n }\n startingPoint.push(prevPosition);\n\n const xValue = point.horizontalBarChartdata!.x;\n const placeholderIndex = 1;\n const isLegendSelected: boolean = _legendHighlighted(point.legend) || _noLegendHighlighted();\n\n // Render bar label instead of placeholder bar for absolute-scale variant\n if (index === placeholderIndex && props.variant === HorizontalBarChartVariant.AbsoluteScale) {\n if (props.hideLabels) {\n return <text key={index} />;\n }\n\n const barValue = data.chartData![0].horizontalBarChartdata!.x;\n\n return (\n <text\n key={index}\n x={`${_isRTL ? 100 - startingPoint[index] : startingPoint[index]}%`}\n y={_barHeight / 2}\n dominantBaseline=\"central\"\n transform={`translate(${_isRTL ? -4 : 4})`}\n className={classes.barLabel}\n aria-hidden={true}\n >\n {formatScientificLimitWidth(barValue)}\n </text>\n );\n }\n\n return (\n <rect\n key={index}\n x={`${\n _isRTL\n ? 100 - startingPoint[index] - value - index * barSpacingInPercent\n : startingPoint[index] + index * barSpacingInPercent\n }%`}\n y={0}\n width={value + '%'}\n height={_barHeight}\n fill={color}\n onMouseOver={point.legend !== '' ? event => _hoverOn(event, xValue, point) : undefined}\n onFocus={point.legend !== '' ? event => _hoverOn(event, xValue, point) : undefined}\n role=\"img\"\n aria-label={_getAriaLabel(point)}\n onBlur={_hoverOff}\n onMouseLeave={_hoverOff}\n className={classes.barWrapper}\n opacity={isLegendSelected ? 1 : 0.1}\n tabIndex={point.legend !== '' ? 0 : undefined}\n />\n );\n });\n return bars;\n }\n\n const _getAriaLabel = (point: ChartDataPoint): string => {\n const legend = point.xAxisCalloutData || point.legend;\n const yValue =\n point.yAxisCalloutData ||\n (point.horizontalBarChartdata\n ? `${point.horizontalBarChartdata.x}/${point.horizontalBarChartdata.total ?? ''}`\n : 0);\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\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 React.useEffect(() => {\n const svgWidth = barChartSvgRef?.current?.getBoundingClientRect().width || 0;\n const MARGIN_WIDTH_IN_PX = 3;\n if (svgWidth) {\n const currentBarSpacing = (MARGIN_WIDTH_IN_PX / svgWidth) * 100;\n setBarSpacingInPercent(currentBarSpacing);\n }\n }, [barChartSvgRef]);\n\n function _legendHighlighted(barLegend?: string) {\n if (barLegend === undefined) {\n return false;\n }\n return selectedLegend === barLegend || (selectedLegend === '' && activeLegend === barLegend);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.*/\n\n function _noLegendHighlighted() {\n return selectedLegend === '' && activeLegend === '';\n }\n\n const { data } = props;\n _adjustProps();\n const classes = useHorizontalBarChartStyles(props);\n const focusAttributes = useFocusableGroup();\n const legendButtons = _createLegends(data!);\n\n let datapoint: number | undefined = 0;\n return !_isChartEmpty() ? (\n <div className={classes.root} onMouseLeave={_handleChartMouseLeave}>\n {data!.map((points: ChartProps, index: number) => {\n if (points.chartData && points.chartData![0] && points.chartData![0].horizontalBarChartdata!.x) {\n datapoint = points.chartData![0].horizontalBarChartdata!.x;\n } else {\n datapoint = 0;\n }\n isSingleBar =\n points.chartData!.length === 1 || (points.chartData!.length > 1 && points.chartData![1].legend === '');\n if (isSingleBar) {\n points.chartData![1] = {\n legend: '',\n horizontalBarChartdata: {\n x: points.chartData![0].horizontalBarChartdata!.total! - datapoint!,\n total: points.chartData![0].horizontalBarChartdata!.total!,\n },\n color: tokens.colorBackgroundOverlay,\n };\n }\n\n // Hide right side text of chart title for absolute-scale variant\n const chartDataText =\n props.variant === HorizontalBarChartVariant.AbsoluteScale ? null : _getChartDataText(points!);\n const bars = _createBars(points!);\n const keyVal = _uniqLineText + '_' + index;\n // ToDo - Showtriangle property is per data series. How to account for it in the new stylesheet\n /* const classes = useHorizontalBarChartStyles(props.styles!, {\n width: props.width,\n showTriangle: !!points!.chartData![0].data,\n variant: props.variant,\n }); */\n\n return (\n <div key={index}>\n <div className={classes.items} {...focusAttributes}>\n <div className={classes.chartTitle}>\n {points!.chartTitle && (\n <FocusableTooltipText\n className={classes.chartTitleLeft}\n content={points!.chartTitle}\n accessibilityData={points!.chartTitleAccessibilityData}\n />\n )}\n {chartDataText}\n </div>\n {points!.chartData![0].data && _createBenchmark(points!)}\n <svg ref={barChartSvgRef} className={classes.chart} aria-label={points!.chartTitle}>\n <g\n id={keyVal}\n key={keyVal}\n ref={(e: SVGGElement) => {\n _refCallback(e, points!.chartData![0].legend);\n }}\n // NOTE: points.chartData![0] contains current data value\n onClick={() => {\n const p = points!.chartData![0];\n if (p && p.onClick) {\n p.onClick();\n }\n }}\n >\n {bars}\n </g>\n </svg>\n </div>\n </div>\n );\n })}\n <ChartPopover\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n legend={legend!}\n YValue={hoverValue!}\n color={lineColor}\n isCalloutForStack={false}\n customCallout={{\n customizedCallout: props.onRenderCalloutPerHorizontalBar\n ? props.onRenderCalloutPerHorizontalBar(barCalloutProps!)\n : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(barCalloutProps!)\n : undefined,\n }}\n isCartesian={false}\n />\n {!isSingleBar && (\n <div ref={(e: HTMLDivElement) => (legendContainer.current = e)} className={classes.legendContainer}>\n {legendButtons}\n </div>\n )}\n </div>\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n //TODO validate and fix focus border for issue for popover\n});\nHorizontalBarChart.displayName = 'HorizontalBarChart';\n"],"names":["HorizontalBarChart","React","forwardRef","props","forwardedRef","legendContainer","useRef","_uniqLineText","Math","random","toString","substring","_refArray","_isRTL","useRtl","barChartSvgRef","createRef","_emptyChartId","useId","_barHeight","_calloutAnchorPoint","isSingleBar","hoverValue","setHoverValue","useState","lineColor","setLineColor","legend","setLegend","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","barCalloutProps","setBarCalloutProps","barSpacingInPercent","setBarSpacingInPercent","isPopoverOpen","setPopoverOpen","clickPosition","setClickPosition","x","y","selectedLegend","setSelectedLegend","activeLegend","setActiveLegend","_refCallback","element","legendTitle","push","index","refElement","_hoverOn","event","hoverVal","point","_legendHighlighted","_noLegendHighlighted","clientX","clientY","targetRect","target","getBoundingClientRect","left","width","top","height","updatePosition","color","xAxisCalloutData","yAxisCalloutData","_hoverOff","_handleChartMouseLeave","_adjustProps","barHeight","_getChartDataText","data","_getDefaultTextData","_createLegends","chartProps","legendItems","forEach","chartData","dataPoint","legendItem","title","action","hoverAction","onMouseOutAction","legends","createElement","Legends","centerLegends","overflowText","legendsOverflowText","legendProps","culture","accessibilityData","getAccessibleDataObject","chartDataAccessibilityData","total","reduce","acc","horizontalBarChartdata","div","className","classes","chartTitleRight","formatToLocaleString","chartDataMode","span","chartDataTextDenominator","dataRatioPercentage","round","_createBenchmark","undefined","Fragment","totalData","benchmarkData","benchmarkRatio","benchmarkStyles","benchmarkContainer","triangle","style","_createBars","noOfBars","count","totalMarginPercent","defaultColors","tokens","colorPaletteBlueForeground2","colorPaletteCornflowerForeground2","colorPaletteDarkGreenForeground2","colorPaletteNavyForeground2","colorPaletteDarkOrangeForeground2","startingPoint","prevPosition","value","sumOfPercent","map","pointData","scalingRatio","bars","floor","xValue","placeholderIndex","isLegendSelected","variant","HorizontalBarChartVariant","AbsoluteScale","hideLabels","text","key","barValue","dominantBaseline","transform","barLabel","aria-hidden","formatScientificLimitWidth","rect","fill","onMouseOver","onFocus","role","aria-label","_getAriaLabel","onBlur","onMouseLeave","barWrapper","opacity","tabIndex","yValue","callOutAccessibilityData","ariaLabel","_isChartEmpty","length","newX","newY","threshold","distance","sqrt","pow","useEffect","svgWidth","current","MARGIN_WIDTH_IN_PX","currentBarSpacing","barLegend","useHorizontalBarChartStyles","focusAttributes","useFocusableGroup","legendButtons","datapoint","root","points","colorBackgroundOverlay","chartDataText","keyVal","items","chartTitle","FocusableTooltipText","chartTitleLeft","content","chartTitleAccessibilityData","svg","ref","chart","g","id","e","onClick","p","ChartPopover","YValue","isCalloutForStack","customCallout","customizedCallout","onRenderCalloutPerHorizontalBar","customCalloutProps","calloutPropsPerDataPoint","isCartesian","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -163,8 +163,9 @@ const VerticalBarChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>
163
163
  // and avoid conveying duplicate info, make these line points non-focusable.
164
164
  "data-is-focusable": _legendHighlighted(lineLegendText),
165
165
  ref: (e)=>circleRef.refElement = e,
166
- onFocus: _lineFocus.bind(item.point, circleRef),
167
- onBlur: _handleChartMouseLeave
166
+ onFocus: (event)=>_lineFocus(event, item.point, circleRef),
167
+ onBlur: _handleChartMouseLeave,
168
+ tabIndex: _legendHighlighted(lineLegendText) ? 0 : undefined
168
169
  });
169
170
  });
170
171
  return /*#__PURE__*/ _react.createElement(_react.Fragment, null, line, dots);
@@ -356,7 +357,7 @@ const VerticalBarChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>
356
357
  setHoverXValue('');
357
358
  }
358
359
  // eslint-disable-next-line @typescript-eslint/no-shadow
359
- function _onBarFocus(point, refArrayIndexNumber, color) {
360
+ function _onBarFocus(event, point, refArrayIndexNumber, color) {
360
361
  // eslint-disable-next-line @typescript-eslint/no-shadow
361
362
  const { YValueHover, hoverXValue } = _getCalloutContentForLineAndBar(point);
362
363
  _refArray.forEach((obj, index)=>{
@@ -381,7 +382,7 @@ const VerticalBarChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>
381
382
  mouseEvent.persist();
382
383
  _lineHoverFocus(point, mouseEvent);
383
384
  }
384
- function _lineFocus(point, ref) {
385
+ function _lineFocus(event, point, ref) {
385
386
  if (ref.refElement) {
386
387
  _lineHoverFocus(point, ref.refElement);
387
388
  }
@@ -484,7 +485,6 @@ const VerticalBarChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>
484
485
  x: xPoint,
485
486
  y: !isHeightNegative ? yPoint : baselineHeight,
486
487
  width: _barWidth,
487
- "data-is-focusable": !props.hideTooltip && shouldHighlight,
488
488
  height: adjustedBarHeight,
489
489
  ref: (e)=>{
490
490
  _refCallback(e, point.legend);
@@ -494,10 +494,10 @@ const VerticalBarChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>
494
494
  "aria-label": _getAriaLabel(point),
495
495
  role: "img",
496
496
  onMouseLeave: _onBarLeave,
497
- onFocus: _onBarFocus.bind(point, index, colorScale(point.y)),
497
+ onFocus: (event)=>_onBarFocus(event, point, index, colorScale(point.y)),
498
498
  onBlur: _onBarLeave,
499
499
  fill: point.color && !useSingleColor ? point.color : colorScale(point.y),
500
- tabIndex: point.legend !== '' ? 0 : undefined,
500
+ tabIndex: !props.hideTooltip && shouldHighlight ? 0 : undefined,
501
501
  opacity: shouldHighlight ? 1 : 0.1,
502
502
  rx: props.roundCorners ? 3 : 0
503
503
  }), _renderBarLabel(xPoint, yPoint, point.y, point.legend, isHeightNegative));
@@ -570,10 +570,9 @@ const VerticalBarChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>
570
570
  onMouseOver: (event)=>_onBarHover(point, colorScale(point.y), event),
571
571
  onMouseLeave: _onBarLeave,
572
572
  onBlur: _onBarLeave,
573
- "data-is-focusable": !props.hideTooltip && shouldHighlight,
574
- onFocus: _onBarFocus.bind(point, index, colorScale(point.y)),
573
+ onFocus: (event)=>_onBarFocus(event, point, index, colorScale(point.y)),
575
574
  fill: point.color ? point.color : colorScale(point.y),
576
- tabIndex: point.legend !== '' ? 0 : undefined,
575
+ tabIndex: !props.hideTooltip && shouldHighlight ? 0 : undefined,
577
576
  rx: props.roundCorners ? 3 : 0,
578
577
  opacity: shouldHighlight ? 1 : 0.1
579
578
  }), _renderBarLabel(xPoint, yPoint, point.y, point.legend, isHeightNegative));
@@ -635,7 +634,6 @@ const VerticalBarChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>
635
634
  className: classes.opacityChangeOnHover,
636
635
  y: !isHeightNegative ? yPoint : baselineHeight,
637
636
  width: _barWidth,
638
- "data-is-focusable": !props.hideTooltip && shouldHighlight,
639
637
  height: adjustedBarHeight,
640
638
  ref: (e)=>{
641
639
  _refCallback(e, point.legend);
@@ -645,10 +643,10 @@ const VerticalBarChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>
645
643
  "aria-label": _getAriaLabel(point),
646
644
  role: "img",
647
645
  onMouseLeave: _onBarLeave,
648
- onFocus: _onBarFocus.bind(point, index, colorScale(point.y)),
646
+ onFocus: (event)=>_onBarFocus(event, point, index, colorScale(point.y)),
649
647
  onBlur: _onBarLeave,
650
648
  fill: point.color && !useSingleColor ? point.color : colorScale(point.y),
651
- tabIndex: point.legend !== '' ? 0 : undefined,
649
+ tabIndex: !props.hideTooltip && shouldHighlight ? 0 : undefined,
652
650
  rx: props.roundCorners ? 3 : 0,
653
651
  opacity: shouldHighlight ? 1 : 0.1
654
652
  }), _renderBarLabel(xPoint, yPoint, point.y, point.legend, isHeightNegative));