@fluentui/react-charts 9.1.7 → 9.1.9

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 (53) hide show
  1. package/CHANGELOG.md +25 -2
  2. package/dist/index.d.ts +60 -3
  3. package/lib/components/AreaChart/AreaChart.js +21 -1
  4. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  5. package/lib/components/CommonComponents/CartesianChart.js +8 -9
  6. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  7. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  8. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +18 -1
  9. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  10. package/lib/components/HeatMapChart/HeatMapChart.js +25 -1
  11. package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
  12. package/lib/components/HorizontalBarChart/HorizontalBarChart.js +1 -2
  13. package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
  14. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +4 -1
  15. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  16. package/lib/components/LineChart/LineChart.js +22 -2
  17. package/lib/components/LineChart/LineChart.js.map +1 -1
  18. package/lib/components/ScatterChart/ScatterChart.js +26 -1
  19. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  20. package/lib/components/VerticalBarChart/VerticalBarChart.js +16 -1
  21. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  22. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +15 -1
  23. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  24. package/lib/utilities/FocusableTooltipText.js +1 -2
  25. package/lib/utilities/FocusableTooltipText.js.map +1 -1
  26. package/lib/utilities/utilities.js +6 -144
  27. package/lib/utilities/utilities.js.map +1 -1
  28. package/lib-commonjs/components/AreaChart/AreaChart.js +20 -0
  29. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  30. package/lib-commonjs/components/CommonComponents/CartesianChart.js +7 -7
  31. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  32. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  33. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +17 -0
  34. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  35. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +24 -0
  36. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
  37. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js +1 -2
  38. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
  39. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +3 -0
  40. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  41. package/lib-commonjs/components/LineChart/LineChart.js +21 -1
  42. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  43. package/lib-commonjs/components/ScatterChart/ScatterChart.js +25 -0
  44. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  45. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +15 -0
  46. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  47. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +14 -0
  48. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  49. package/lib-commonjs/utilities/FocusableTooltipText.js +1 -2
  50. package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -1
  51. package/lib-commonjs/utilities/utilities.js +11 -132
  52. package/lib-commonjs/utilities/utilities.js.map +1 -1
  53. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["VerticalStackedBarChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { select as d3Select } from 'd3-selection';\nimport { useVerticalStackedBarChartStyles } from './useVerticalStackedBarChartStyles.styles';\nimport {\n scaleLinear as d3ScaleLinear,\n ScaleLinear as D3ScaleLinear,\n scaleBand as d3ScaleBand,\n scaleUtc as d3ScaleUtc,\n scaleTime as d3ScaleTime,\n} from 'd3-scale';\nimport { useId } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n VerticalStackedBarDataPoint,\n Margins,\n VerticalStackedBarChartProps,\n VerticalStackedChartProps,\n VSChartDataPoint,\n LineDataInVerticalStackedBarChart,\n ModifiedCartesianChartProps,\n Legend,\n ChartPopover,\n Legends,\n Chart,\n DataPoint,\n} from '../../index';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfAxislabels,\n formatScientificLimitWidth,\n getBarWidth,\n getScalePadding,\n isScalePaddingDefined,\n calculateAppropriateBarWidth,\n formatDate,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n DataVizPalette,\n getColorFromToken,\n findVSBCNumericMinMaxOfY,\n YAxisType,\n} from '../../utilities/index';\n\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\ntype NumericScale = D3ScaleLinear<number, number>;\nconst barGapMultiplier = 0.2;\nconst barGapMin = 1;\nconst MIN_DOMAIN_MARGIN = 8;\n\ninterface RefArrayData {\n refElement?: SVGGElement | null;\n}\n\ntype LinePoint = LineDataInVerticalStackedBarChart & { index: number; xItem: VerticalStackedChartProps };\ntype LineObject = { [key: string]: LinePoint[] };\ntype LineLegends = {\n title: string;\n color: string;\n};\nenum CircleVisbility {\n show = 'visibility',\n hide = 'hidden',\n}\ntype CalloutAnchorPointData = {\n xAxisDataPoint: string;\n chartDataPoint: VSChartDataPoint;\n};\n\nexport const VerticalStackedBarChart: React.FunctionComponent<VerticalStackedBarChartProps> = props => {\n const _isRtl: boolean = useRtl();\n const _createLegendsForLine: (data: VerticalStackedChartProps[]) => LineLegends[] = (\n data: VerticalStackedChartProps[],\n ) => _getLineLegends(data);\n const _tooltipId: string = useId('VSBCTooltipId_');\n const _emptyChartId: string = useId('_VSBC_empty');\n let _points: VerticalStackedChartProps[] = [];\n let _dataset: VerticalStackedBarDataPoint[];\n let _xAxisLabels: string[] = [];\n let _bars: JSX.Element[];\n let _xAxisType: XAxisTypes =\n props.data! && props.data!.length > 0\n ? (getTypeOfAxis(props.data[0]!.xAxisPoint, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n let _barWidth: number = 0;\n let _colors: string[];\n let _margins: Margins;\n let _lineObject: LineObject;\n let _yMax: number;\n let _yMin: number;\n let _calloutAnchorPoint: CalloutAnchorPointData | null;\n let _domainMargin: number = MIN_DOMAIN_MARGIN;\n let _xAxisInnerPadding: number = 0;\n let _xAxisOuterPadding: number = 0;\n const cartesianChartRef = React.useRef<Chart>(null);\n const Y_ORIGIN: number = 0;\n\n const [selectedLegends, setSelectedLegends] = React.useState(props.legendProps?.selectedLegends || []);\n const [activeLegend, setActiveLegend] = React.useState<string | undefined>(undefined);\n const [dataForHoverCard, setDataForHoverCard] = React.useState(0);\n const [color, setColor] = React.useState('');\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [YValueHover, setYValueHover] = React.useState<(LineDataInVerticalStackedBarChart | VSChartDataPoint)[]>([]);\n const [xCalloutValue, setXCalloutValue] = React.useState('');\n const [yCalloutValue, setYCalloutValue] = React.useState('');\n const [activeXAxisDataPoint, setActiveXAxisDataPoint] = React.useState<number | string | Date>('');\n const [calloutLegend, setCalloutLegend] = React.useState('');\n const [stackCalloutProps, setStackCalloutProps] = React.useState<VerticalStackedChartProps>();\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<VSChartDataPoint>();\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const prevPropsRef = React.useRef<VerticalStackedBarChartProps | null>(null);\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 if (prevProps.height !== props.height || prevProps.width !== props.width || prevProps.data !== props.data) {\n _adjustProps();\n _dataset = _createDataSetLayer();\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 function _getLegendData(data: VerticalStackedChartProps[], lineLegends: LineLegends[]): JSX.Element {\n if (props.hideLegend) {\n return <></>;\n }\n const defaultPalette: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n getColorFromToken(DataVizPalette.color10),\n ];\n const actions: Legend[] = [];\n const { allowHoverOnLegend = true } = props;\n\n data.forEach((singleChartData: VerticalStackedChartProps) => {\n singleChartData.chartData.forEach((point: VSChartDataPoint) => {\n const color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter((leg: Legend) => leg.title === point.legend && leg.color === color);\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n\n const legend: Legend = {\n title: point.legend,\n color,\n hoverAction: allowHoverOnLegend\n ? () => {\n _handleChartMouseLeave();\n _onLegendHover(point.legend);\n }\n : undefined,\n onMouseOutAction: allowHoverOnLegend ? () => _onLegendLeave() : undefined,\n };\n\n actions.push(legend);\n });\n });\n const legendsOfLine: Legend[] = [];\n if (lineLegends && lineLegends.length > 0) {\n lineLegends.forEach((point: LineLegends) => {\n const legend: Legend = {\n title: point.title,\n color: point.color,\n isLineLegendInBarChart: true,\n hoverAction: allowHoverOnLegend\n ? () => {\n _handleChartMouseLeave();\n _onLegendHover(point.title);\n }\n : undefined,\n onMouseOutAction: allowHoverOnLegend ? () => _onLegendLeave() : undefined,\n };\n legendsOfLine.push(legend);\n });\n }\n const totalLegends: Legend[] = legendsOfLine.concat(actions);\n return (\n <Legends\n legends={totalLegends}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={_onLegendSelectionChange}\n />\n );\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _lineHoverOut() {\n setPopoverOpen(false);\n setXCalloutValue('');\n setYCalloutValue('');\n setActiveXAxisDataPoint('');\n setColor('');\n }\n\n function _lineHoverFocus(lineData: LinePoint) {\n setPopoverOpen(true);\n setXCalloutValue(`${lineData.xItem.xAxisPoint}`);\n setYCalloutValue(`${lineData.yAxisCalloutData || lineData.data || lineData.y}`);\n setActiveXAxisDataPoint(lineData.xItem.xAxisPoint);\n setColor(lineData.color);\n }\n\n function _onStackHoverFocus(\n stack: VerticalStackedChartProps,\n mouseEvent: React.MouseEvent<SVGElement> | SVGGElement,\n ): void {\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in mouseEvent) {\n clientX = mouseEvent.clientX;\n clientY = mouseEvent.clientY;\n } else {\n // Handle case where mouseEvent is an SVGGElement\n const boundingRect = mouseEvent.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n if (!_noLegendHighlighted()) {\n stack = {\n ...stack,\n chartData: stack.chartData.filter((dataPoint: { legend: any }) => _isLegendHighlighted(dataPoint.legend)),\n lineData: stack.lineData?.filter((dataPoint: { legend: any }) => _isLegendHighlighted(dataPoint.legend)),\n };\n }\n const lineData = stack.lineData;\n const isLinesPresent: boolean = lineData !== undefined && lineData.length > 0;\n if (isLinesPresent) {\n lineData!.forEach((item: LineDataInVerticalStackedBarChart & { shouldDrawBorderBottom?: boolean }) => {\n item.data = item.data || item.y;\n item.shouldDrawBorderBottom = true;\n });\n }\n _updatePosition(clientX, clientY);\n setPopoverOpen(stack.chartData.length > 0 || (stack.lineData?.length ?? 0) > 0);\n setYValueHover(\n isLinesPresent\n ? [...lineData!.sort((a, b) => (a.data! < b.data! ? 1 : -1)), ...stack.chartData.slice().reverse()]\n : stack.chartData.slice().reverse(),\n );\n setHoverXValue(stack.xAxisPoint instanceof Date ? formatDate(stack.xAxisPoint, props.useUTC) : stack.xAxisPoint);\n setStackCalloutProps(stack);\n setActiveXAxisDataPoint(stack.xAxisPoint);\n setCallOutAccessibilityData(stack.stackCallOutAccessibilityData);\n }\n\n function _handleChartMouseLeave(): void {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n setActiveXAxisDataPoint('');\n }\n\n const _onClick = (\n data: VerticalStackedChartProps | VSChartDataPoint,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n props.onBarClick?.(mouseEvent, data);\n props.href ? (window.location.href = props.href) : '';\n };\n\n function _adjustProps(): void {\n _points = props.data || [];\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n const defaultColors: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n getColorFromToken(DataVizPalette.color10),\n ];\n _colors = defaultColors;\n _xAxisType = getTypeOfAxis(props.data[0].xAxisPoint, true) as XAxisTypes;\n _lineObject = _getFormattedLineData(props.data);\n _xAxisInnerPadding = getScalePadding(props.xAxisInnerPadding, props.xAxisPadding, 2 / 3);\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding, props.xAxisPadding, 0);\n }\n\n function _createDataSetLayer(): VerticalStackedBarDataPoint[] {\n const tempArr: string[] = [];\n const dataset: VerticalStackedBarDataPoint[] = _points.map(singlePointData => {\n let total: number = 0;\n singlePointData.chartData!.forEach((point: VSChartDataPoint) => {\n total = total + point.data;\n });\n tempArr.push(singlePointData.xAxisPoint as string);\n return {\n x: singlePointData.xAxisPoint,\n y: total,\n };\n });\n _xAxisLabels = tempArr;\n return dataset;\n }\n\n function _onLegendHover(legendTitle: string): void {\n setActiveLegend(legendTitle);\n }\n\n function _onLegendLeave(): void {\n setActiveLegend(undefined);\n }\n\n function _onLegendSelectionChange(\n _selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(_selectedLegends);\n } else {\n setSelectedLegends(_selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(_selectedLegends, event, currentLegend);\n }\n }\n\n function _getMargins(margins: Margins) {\n _margins = margins;\n }\n\n function _getGraphData(\n xScale: any,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) {\n const { xBarScale, yBarScale } = _getScales(containerHeight, containerWidth);\n return (_bars = _createBar(xBarScale, yBarScale, containerHeight, xElement!));\n }\n\n function _getAxisData(yAxisData: IAxisData) {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n const { yAxisDomainValues: domainValue } = yAxisData;\n _yMax = Math.max(domainValue[domainValue.length - 1], props.yMaxValue || Y_ORIGIN);\n _yMin = Math.min(domainValue[0], props.yMinValue || Y_ORIGIN);\n }\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(legendTitle: string) {\n return _getHighlightedLegend().includes(legendTitle);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n function _noLegendHighlighted() {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getAriaLabel(singleChartData: VerticalStackedChartProps, point?: VSChartDataPoint): string {\n if (!point) {\n /** if shouldFocusWholeStack is true */\n const xValue =\n singleChartData.xAxisCalloutData ||\n (singleChartData.xAxisPoint instanceof Date\n ? formatDate(singleChartData.xAxisPoint)\n : singleChartData.xAxisPoint);\n const pointValues = singleChartData.chartData\n .map(pt => {\n const legend = pt.legend;\n const yValue = pt.yAxisCalloutData || pt.data;\n return `${legend}, ${yValue}.`;\n })\n .join(' ');\n const lineValues = singleChartData.lineData\n ?.map(ln => {\n const legend = ln.legend;\n const yValue = ln.yAxisCalloutData || ln.data || ln.y;\n return `${legend}, ${yValue}.`;\n })\n .join(' ');\n return (\n singleChartData.stackCallOutAccessibilityData?.ariaLabel ||\n `${xValue}. ${pointValues}` + (lineValues ? ` ${lineValues}` : '')\n );\n }\n /** if shouldFocusWholeStack is false */\n const xValue =\n singleChartData.xAxisCalloutData ||\n point.xAxisCalloutData ||\n (singleChartData.xAxisPoint instanceof Date\n ? formatDate(singleChartData.xAxisPoint)\n : singleChartData.xAxisPoint);\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.data;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n }\n\n function _getCustomizedCallout() {\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n return props.onRenderCalloutPerStack\n ? props.onRenderCalloutPerStack(stackCalloutProps)\n : props.onRenderCalloutPerDataPoint && !_isHavingLines\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps, _renderCallout)\n : null;\n }\n\n function _toFocusWholeStack(_isHavingLines: boolean): boolean {\n const { isCalloutForStack = false } = props;\n let shouldFocusStackOnly: boolean = false;\n if (_isHavingLines) {\n if (_getHighlightedLegend().length === 1) {\n shouldFocusStackOnly = false;\n } else {\n shouldFocusStackOnly = true;\n }\n } else {\n shouldFocusStackOnly = isCalloutForStack;\n }\n return shouldFocusStackOnly;\n }\n\n function _getFormattedLineData(data: VerticalStackedChartProps[]): LineObject {\n const linesData: LinePoint[] = [];\n const formattedLineData: LineObject = {};\n data.forEach((item: VerticalStackedChartProps, index: number) => {\n if (item.lineData) {\n item.lineData.forEach((line: any) => {\n linesData.push({\n ...line,\n index,\n xItem: item,\n });\n });\n }\n });\n linesData.forEach(item => {\n if (formattedLineData[item.legend]) {\n formattedLineData[item.legend].push(item);\n } else {\n formattedLineData[item.legend] = [item];\n }\n });\n return formattedLineData;\n }\n\n function _getLineLegends(data: VerticalStackedChartProps[]): LineLegends[] {\n const lineObject: LineObject = _lineObject;\n const lineLegends: LineLegends[] = [];\n Object.keys(lineObject).forEach((item: string) => {\n lineLegends.push({\n title: item,\n color: lineObject[item][0].color,\n });\n });\n return lineLegends;\n }\n\n function _createLines(\n xScale: any,\n yScalePrimary: NumericScale,\n containerHeight: number,\n containerWidth: number,\n yScaleSecondary?: NumericScale,\n ): JSX.Element {\n const lineObject: LineObject = _getFormattedLineData(props.data);\n const lines: React.ReactNode[] = [];\n const borderForLines: React.ReactNode[] = [];\n const dots: React.ReactNode[] = [];\n //const { theme } = props;\n const lineBorderWidth = props.lineOptions?.lineBorderWidth\n ? Number.parseFloat(props.lineOptions!.lineBorderWidth!.toString())\n : 0;\n const xScaleBandwidthTranslate = _xAxisType !== XAxisTypes.StringAxis ? 0 : xScale.bandwidth() / 2;\n Object.keys(lineObject).forEach((item: string, index: number) => {\n const shouldHighlight = _isLegendHighlighted(item) || _noLegendHighlighted();\n for (let i = 1; i < lineObject[item].length; i++) {\n const x1 = xScale(lineObject[item][i - 1].xItem.xAxisPoint);\n const useSecondaryYScale =\n lineObject[item][i - 1].useSecondaryYScale && lineObject[item][i].useSecondaryYScale && yScaleSecondary;\n const y1 = useSecondaryYScale\n ? yScaleSecondary!(lineObject[item][i - 1].y)\n : yScalePrimary(lineObject[item][i - 1].y);\n const x2 = xScale(lineObject[item][i].xItem.xAxisPoint);\n const y2 = useSecondaryYScale ? yScaleSecondary!(lineObject[item][i].y) : yScalePrimary(lineObject[item][i].y);\n if (lineBorderWidth > 0) {\n borderForLines.push(\n <line\n key={`${index}-${i}-BorderLine`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={3 + lineBorderWidth * 2}\n fill=\"transparent\"\n strokeLinecap=\"round\"\n stroke={tokens.colorNeutralBackground1}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />,\n );\n }\n lines.push(\n <line\n key={`${index}-${i}-line`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={lineObject[item][0].lineOptions?.strokeWidth ?? 3}\n strokeLinecap={lineObject[item][0].lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={lineObject[item][0].lineOptions?.strokeDasharray}\n stroke={lineObject[item][i].color}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n {...(_isLegendHighlighted(item) && {\n onMouseOver: _lineHover.bind(lineObject[item][i - 1]),\n onMouseLeave: _lineHoverOut,\n })}\n />,\n );\n }\n });\n Object.keys(lineObject).forEach((item: string, index: number) => {\n lineObject[item].forEach((circlePoint: LinePoint, subIndex: number) => {\n const circleRef: { refElement: SVGCircleElement | null } = { refElement: null };\n const noBarsAndLinesActive =\n circlePoint.xItem.chartData.filter(\n dataPoint => _noLegendHighlighted() || _isLegendHighlighted(dataPoint.legend),\n ).length === 0;\n dots.push(\n <circle\n key={`${index}-${subIndex}-dot`}\n cx={xScale(circlePoint.xItem.xAxisPoint)}\n cy={\n circlePoint.useSecondaryYScale && yScaleSecondary\n ? yScaleSecondary(circlePoint.y)\n : yScalePrimary(circlePoint.y)\n }\n onMouseOver={\n _isLegendHighlighted(item)\n ? (event: React.MouseEvent<SVGElement, MouseEvent>) => _lineHover(circlePoint, event)\n : (event: React.MouseEvent<SVGElement, MouseEvent>) => _onStackHover(circlePoint.xItem, event)\n }\n {...(_isLegendHighlighted(item) && {\n onMouseLeave: _lineHoverOut,\n })}\n r={_getCircleVisibilityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).radius}\n stroke={circlePoint.color}\n fill={tokens.colorNeutralBackground1}\n strokeWidth={3}\n visibility={_getCircleVisibilityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).visibility}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n ref={e => (circleRef.refElement = e)}\n {...(noBarsAndLinesActive\n ? {\n tabIndex: !props.hideTooltip ? 0 : undefined,\n onFocus: event => _lineFocus(event, circlePoint, circleRef),\n onBlur: _handleMouseOut,\n role: 'img',\n 'aria-label': _getAriaLabel(circlePoint.xItem, circlePoint as VSChartDataPoint),\n }\n : {})}\n />,\n );\n });\n });\n return (\n <>\n {borderForLines}\n {lines}\n {dots}\n </>\n );\n }\n\n function _getCircleVisibilityAndRadius(\n xAxisPoint: string | number | Date,\n legend: string,\n ): { visibility: CircleVisbility; radius: number } {\n if (!_noLegendHighlighted()) {\n if (xAxisPoint === activeXAxisDataPoint && _isLegendHighlighted(legend)) {\n return { visibility: CircleVisbility.show, radius: 8 };\n } else if (_isLegendHighlighted(legend)) {\n return { visibility: CircleVisbility.show, radius: 0.3 };\n } else {\n return { visibility: CircleVisbility.hide, radius: 0 };\n }\n } else {\n return {\n visibility: activeXAxisDataPoint === xAxisPoint ? CircleVisbility.show : CircleVisbility.hide,\n radius: 8,\n };\n }\n }\n\n function _renderCallout(props?: VSChartDataPoint): JSX.Element | null {\n return props ? (\n <ChartPopover\n culture={props.culture ?? 'en-us'}\n XValue={props.xAxisCalloutData}\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n legend={props.legend}\n YValue={props.yAxisCalloutData}\n color={props.color}\n />\n ) : null;\n }\n\n function _onRectHover(\n xAxisPoint: string | number | Date,\n point: VSChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void {\n mouseEvent.persist();\n _onRectFocusHover(xAxisPoint, point, color, mouseEvent);\n }\n\n function _onRectFocusHover(\n xAxisPoint: string | number | Date,\n point: VSChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement> | SVGGElement,\n ) {\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in mouseEvent) {\n clientX = mouseEvent.clientX;\n clientY = mouseEvent.clientY;\n } else {\n // Handle case where mouseEvent is an SVGGElement\n const boundingRect = mouseEvent.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n if (_calloutAnchorPoint?.chartDataPoint !== point || _calloutAnchorPoint?.xAxisDataPoint !== xAxisPoint) {\n _calloutAnchorPoint = {\n chartDataPoint: point,\n xAxisDataPoint: `${xAxisPoint}`,\n };\n _updatePosition(clientX, clientY);\n setPopoverOpen(_noLegendHighlighted() || _isLegendHighlighted(point.legend));\n setCalloutLegend(point.legend);\n setDataForHoverCard(point.data);\n setColor(color);\n setXCalloutValue(point.xAxisCalloutData ? point.xAxisCalloutData : `${xAxisPoint}`);\n setYCalloutValue(point.yAxisCalloutData!);\n setDataPointCalloutProps(point);\n setCallOutAccessibilityData(point.callOutAccessibilityData);\n }\n }\n\n function _lineHover(lineData: LinePoint, mouseEvent: React.MouseEvent<SVGElement>) {\n mouseEvent.persist();\n _lineHoverFocus(lineData);\n }\n\n function _lineFocus(\n event: React.FocusEvent<SVGCircleElement, Element>,\n lineData: LinePoint,\n ref: { refElement: SVGCircleElement | null },\n ) {\n if (ref.refElement) {\n _lineHoverFocus(lineData);\n }\n }\n\n function _onStackHover(stack: VerticalStackedChartProps, mouseEvent: React.MouseEvent<SVGElement>): void {\n mouseEvent.persist();\n _onStackHoverFocus(stack, mouseEvent);\n }\n\n function _onRectFocus(point: VSChartDataPoint, xAxisPoint: string, color: string, ref: RefArrayData): void {\n if (ref.refElement) {\n _onRectFocusHover(xAxisPoint, point, color, ref.refElement);\n }\n }\n\n function _onStackFocus(stack: VerticalStackedChartProps, groupRef: RefArrayData): void {\n if (groupRef.refElement) {\n _onStackHoverFocus(stack, groupRef.refElement);\n }\n }\n\n function _handleMouseOut(): void {\n setPopoverOpen(false);\n }\n\n function _getBarGapAndScale(\n bars: VSChartDataPoint[],\n yBarScale: NumericScale,\n defaultTotalHeight?: number,\n ): {\n readonly gapHeight: number;\n readonly heightValueScale: number;\n readonly absStackTotal: number;\n } {\n const { barGapMax = 0 } = props;\n // When displaying gaps between the bars, the height of each bar is\n // adjusted so that the total of all bars is not changed by the gaps\n const totalData = bars.reduce((iter, value) => iter + Math.abs(value.data), 0);\n const totalHeight = defaultTotalHeight ?? Math.abs(yBarScale(totalData) - yBarScale(Y_ORIGIN));\n let sumOfPercent = 0;\n bars.forEach(point => {\n let value = (Math.abs(point.data) / totalData) * 100;\n if (value < 1 && value !== 0) {\n value = 1;\n }\n sumOfPercent += value;\n });\n const scalingRatio = sumOfPercent !== 0 ? sumOfPercent / 100 : 1;\n const gaps = barGapMax && bars.length - 1;\n const gapHeight = gaps && Math.max(barGapMin, Math.min(barGapMax, (totalHeight * barGapMultiplier) / gaps));\n const heightValueScale = (totalHeight - gapHeight * gaps) / (totalData * scalingRatio);\n return {\n gapHeight,\n heightValueScale,\n absStackTotal: totalData,\n } as const;\n }\n\n function _getScales(containerHeight: number, containerWidth: number) {\n const yDomain = [Math.min(Y_ORIGIN, _yMin), Math.max(Y_ORIGIN, _yMax)];\n const yBarScale = d3ScaleLinear()\n .domain(yDomain)\n .range([0, containerHeight - _margins.bottom! - _margins.top!]);\n if (_xAxisType === XAxisTypes.NumericAxis) {\n const xMax = d3Max(_dataset, (point: VerticalStackedBarDataPoint) => point.x as number)!;\n const xMin = d3Min(_dataset, (point: VerticalStackedBarDataPoint) => point.x as number)!;\n\n const xBarScale = d3ScaleLinear()\n .domain(_isRtl ? [xMax, xMin] : [xMin, xMax])\n .nice()\n .range([_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin]);\n\n return { xBarScale, yBarScale };\n }\n if (_xAxisType === XAxisTypes.DateAxis) {\n const sDate = d3Min(_dataset, (point: VerticalStackedBarDataPoint) => {\n return point.x as Date;\n })!;\n const lDate = d3Max(_dataset, (point: VerticalStackedBarDataPoint) => {\n return point.x as Date;\n })!;\n const xBarScale = props.useUTC ? d3ScaleUtc() : d3ScaleTime();\n xBarScale\n .domain(_isRtl ? [lDate, sDate] : [sDate, lDate])\n .range([_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin]);\n\n return { xBarScale, yBarScale };\n }\n const xBarScale = d3ScaleBand()\n .domain(_xAxisLabels)\n .range(\n _isRtl\n ? [containerWidth - _margins.right! - _domainMargin, _margins.left! + _domainMargin]\n : [_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin],\n )\n .paddingInner(_xAxisInnerPadding)\n .paddingOuter(_xAxisOuterPadding);\n\n return { xBarScale, yBarScale };\n }\n\n const _isChartEmpty = (): boolean => {\n return !(\n props.data &&\n props.data.length > 0 &&\n props.data.some(item => item.chartData.length > 0 || (item.lineData && item.lineData.length > 0))\n );\n };\n\n function _updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\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 function _getDomainMargins(containerWidth: number): Margins {\n _domainMargin = MIN_DOMAIN_MARGIN;\n\n /** Total width available to render the bars */\n const totalWidth = containerWidth - (_margins.left! + MIN_DOMAIN_MARGIN) - (_margins.right! + MIN_DOMAIN_MARGIN);\n /** Rate at which the space between the bars changes wrt the bar width */\n const barGapRate = _xAxisInnerPadding / (1 - _xAxisInnerPadding);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(props.xAxisOuterPadding, props.xAxisPadding)) {\n // Setting the domain margin for string x-axis to 0 because the xAxisOuterPadding prop is now available\n // to adjust the space before the first bar and after the last bar.\n _domainMargin = 0;\n } else if (props.barWidth !== 'auto') {\n // Update the bar width so that when CartesianChart rerenders,\n // the following calculations don't use the previous bar width.\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n /** Total width required to render the bars. Directly proportional to bar width */\n const reqWidth = (_xAxisLabels.length + (_xAxisLabels.length - 1) * barGapRate) * _barWidth;\n\n if (totalWidth >= reqWidth) {\n // Center align the chart by setting equal left and right margins for domain\n _domainMargin = MIN_DOMAIN_MARGIN + (totalWidth - reqWidth) / 2;\n }\n } else if (props.mode === 'plotly' && _xAxisLabels.length > 1) {\n // Calculate the remaining width after rendering bars at their maximum allowable width\n const bandwidth = totalWidth / (_xAxisLabels.length + (_xAxisLabels.length - 1) * barGapRate);\n const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, bandwidth);\n let reqWidth = (_xAxisLabels.length + (_xAxisLabels.length - 1) * barGapRate) * barWidth;\n const margin1 = (totalWidth - reqWidth) / 2;\n\n // Calculate the remaining width after accounting for the space required to render x-axis labels\n const step = calculateLongestLabelWidth(_xAxisLabels) + 20;\n reqWidth = (_xAxisLabels.length - _xAxisInnerPadding) * step;\n const margin2 = (totalWidth - reqWidth) / 2;\n\n _domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n } else {\n const data = (props.data?.map(point => point.xAxisPoint) as number[] | Date[] | undefined) || [];\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth, calculateAppropriateBarWidth(data, totalWidth));\n _domainMargin = MIN_DOMAIN_MARGIN + _barWidth / 2;\n }\n\n return {\n ..._margins,\n left: _margins.left! + _domainMargin,\n right: _margins.right! + _domainMargin,\n };\n }\n\n function _getChartTitle(): string {\n const { chartTitle, data } = props;\n const numLines = Object.keys(_lineObject).length;\n return (\n (chartTitle ? `${chartTitle}. ` : '') +\n `Vertical bar chart with ${data?.length || 0} stacked bars` +\n (numLines > 0 ? ` and ${numLines} lines` : '') +\n '. '\n );\n }\n\n const classes = useVerticalStackedBarChartStyles(props);\n function _createBar(\n xBarScale: any,\n yBarScale: NumericScale,\n containerHeight: number,\n xElement: SVGElement,\n ): JSX.Element[] {\n const { barCornerRadius = 0, barMinimumHeight = 0 } = props;\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = _toFocusWholeStack(_isHavingLines);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth, xBarScale.bandwidth());\n }\n\n const bars = _points.map((singleChartData: VerticalStackedChartProps, indexNumber: number) => {\n const xPoint = xBarScale(\n _xAxisType === XAxisTypes.NumericAxis\n ? (singleChartData.xAxisPoint as number)\n : _xAxisType === XAxisTypes.DateAxis\n ? (singleChartData.xAxisPoint as Date)\n : (singleChartData.xAxisPoint as string),\n );\n const xScaleBandwidthTranslate =\n _xAxisType !== XAxisTypes.StringAxis ? -_barWidth / 2 : (xBarScale.bandwidth() - _barWidth) / 2;\n\n let barTotalValue = 0;\n\n const barsToDisplay = singleChartData.chartData.filter(point => point.data !== 0);\n\n if (!barsToDisplay.length) {\n return undefined;\n }\n\n const { gapHeight, heightValueScale, absStackTotal } = _getBarGapAndScale(barsToDisplay, yBarScale);\n\n if (heightValueScale < 0) {\n return undefined;\n }\n\n const yBaseline = containerHeight - _margins.bottom! - yBarScale(Y_ORIGIN);\n let yPositiveStart = yBaseline;\n let yNegativeStart = yBaseline;\n let yPoint = 0;\n let heightOfLastBar = 0;\n\n const singleBar = barsToDisplay.map((point: VSChartDataPoint, index: number) => {\n const startColor = point.color ? point.color : _colors[index];\n const ref: RefArrayData = {};\n const shouldHighlight = _isLegendHighlighted(point.legend) || _noLegendHighlighted() ? true : false;\n const rectFocusProps = !shouldFocusWholeStack && {\n 'aria-label': _getAriaLabel(singleChartData, point),\n onMouseOver: (event: React.MouseEvent<SVGElement, MouseEvent>) =>\n _onRectHover(singleChartData.xAxisPoint, point, startColor, event),\n onMouseMove: (event: React.MouseEvent<SVGElement, MouseEvent>) =>\n _onRectHover(singleChartData.xAxisPoint, point, startColor, event),\n onMouseLeave: _handleMouseOut,\n onFocus: () => _onRectFocus(point, singleChartData.xAxisPoint as string, startColor, ref),\n onBlur: _handleMouseOut,\n onClick: (event: React.MouseEvent<SVGElement, MouseEvent>) => _onClick(point, event),\n role: 'img',\n tabIndex: !props.hideTooltip && shouldHighlight ? 0 : undefined,\n };\n\n let barHeight = Math.abs(heightValueScale * point.data);\n // FIXME: The current scaling logic may produce different min and gap heights for each bar stack.\n const minHeight = Math.max((heightValueScale * absStackTotal) / 100.0, barMinimumHeight);\n if (barHeight < minHeight) {\n barHeight = minHeight;\n }\n const gapOffset = index ? gapHeight : 0;\n if (point.data >= Y_ORIGIN) {\n yPositiveStart -= barHeight + gapOffset;\n yPoint = yPositiveStart;\n } else {\n yPoint = yNegativeStart + gapOffset;\n yNegativeStart = yPoint + barHeight;\n }\n\n barTotalValue += point.data;\n heightOfLastBar = index === barsToDisplay.length - 1 ? barHeight : 0;\n\n if (barCornerRadius && barHeight > barCornerRadius && index === barsToDisplay.length - 1) {\n return (\n <React.Fragment key={index + indexNumber + `${shouldFocusWholeStack}`}>\n <path\n className={classes.opacityChangeOnHover}\n d={`\n M ${xPoint} ${yPoint + barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${-barCornerRadius}\n h ${_barWidth - 2 * barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${barCornerRadius}\n v ${barHeight - barCornerRadius}\n h ${-_barWidth}\n z\n `}\n fill={startColor}\n rx={props.roundCorners ? 3 : 0}\n ref={e => (ref.refElement = e)}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n cursor={props.href ? 'pointer' : 'default'}\n {...rectFocusProps}\n />\n </React.Fragment>\n );\n }\n if (barHeight < 0) {\n return <React.Fragment key={index + indexNumber}> </React.Fragment>;\n }\n return (\n <React.Fragment key={index + indexNumber}>\n <rect\n className={classes.opacityChangeOnHover}\n x={xPoint}\n y={yPoint}\n width={_barWidth}\n height={barHeight}\n fill={startColor}\n opacity={shouldHighlight ? 1 : 0.1}\n cursor={props.href ? 'pointer' : 'default'}\n rx={props.roundCorners ? 3 : 0}\n ref={e => (ref.refElement = e)}\n {...rectFocusProps}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />\n </React.Fragment>\n );\n });\n const groupRef: RefArrayData = {};\n const stackFocusProps = shouldFocusWholeStack && {\n 'aria-label': _getAriaLabel(singleChartData),\n onMouseOver: (event: any) => _onStackHover(singleChartData, event),\n onMouseMove: (event: any) => _onStackHover(singleChartData, event),\n onMouseLeave: _handleMouseOut,\n onFocus: () => _onStackFocus(singleChartData, groupRef),\n onBlur: _handleMouseOut,\n onClick: (event: any) => _onClick(singleChartData, event),\n role: 'img',\n tabIndex: !props.hideTooltip ? 0 : undefined,\n };\n let showLabel = false;\n let barLabel = 0;\n if (!props.hideLabels) {\n if (_noLegendHighlighted()) {\n showLabel = true;\n barLabel = barTotalValue;\n } else {\n barsToDisplay.forEach(point => {\n if (_isLegendHighlighted(point.legend)) {\n showLabel = true;\n barLabel += point.data;\n }\n });\n }\n }\n return (\n <g key={indexNumber + `${shouldFocusWholeStack}`}>\n <g id={`${indexNumber}-singleBar`} ref={e => (groupRef.refElement = e)} {...stackFocusProps}>\n {singleBar}\n </g>\n {!props.hideLabels && _barWidth >= 16 && showLabel && (\n <text\n x={xPoint + _barWidth / 2}\n //if total bar value >=0, show label above top bar, otherwise below bottom bar\n y={barLabel >= Y_ORIGIN ? yPoint - 6 : yPoint + heightOfLastBar + 12}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-label={`Total: ${barLabel}`}\n role=\"img\"\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n >\n {typeof props.yAxisTickFormat === 'function'\n ? props.yAxisTickFormat(barLabel)\n : formatScientificLimitWidth(barLabel)}\n </text>\n )}\n </g>\n );\n });\n if (!props.showXAxisLablesTooltip) {\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n axis: xAxisElement,\n };\n xAxisElement && tooltipOfAxislabels(tooltipProps);\n }\n return bars.filter((bar): bar is JSX.Element => !!bar);\n }\n\n function _getMinMaxOfYAxis(\n dataset: DataPoint[],\n yAxisType?: YAxisType,\n useSecondaryYScale?: boolean,\n ): { startValue: number; endValue: number } {\n if (!useSecondaryYScale) {\n return findVSBCNumericMinMaxOfY(dataset);\n }\n\n const values: number[] = [];\n props.data.forEach(xPoint => {\n xPoint.lineData?.forEach(point => {\n // useSecondaryYScale is applicable only for lines in VSBC\n if (point.useSecondaryYScale) {\n values.push(point.y);\n }\n });\n });\n\n return { startValue: d3Min(values)!, endValue: d3Max(values)! };\n }\n\n if (!_isChartEmpty()) {\n _adjustProps();\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = _toFocusWholeStack(_isHavingLines);\n _dataset = _createDataSetLayer();\n const legendBars: JSX.Element = _getLegendData(_points, _createLegendsForLine(props.data));\n const calloutProps: ModifiedCartesianChartProps['calloutProps'] = {\n color: color,\n legend: calloutLegend,\n XValue: xCalloutValue!,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n YValueHover: YValueHover,\n hoverXValue: hoverXValue,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData),\n clickPosition: clickPosition,\n isPopoverOpen: isPopoverOpen,\n isCalloutForStack:\n props.isCalloutForStack || (_isHavingLines && (_noLegendHighlighted() || _getHighlightedLegend().length > 1)),\n isCartesian: true,\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n };\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n return (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_dataset}\n chartType={ChartTypes.VerticalStackedBarChart}\n xAxisType={_xAxisType}\n getMinMaxOfYAxis={_getMinMaxOfYAxis}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n datasetForXAxisDomain={_xAxisLabels}\n isCalloutForStack={shouldFocusWholeStack}\n barwidth={_barWidth}\n getmargins={_getMargins}\n getGraphData={_getGraphData}\n getAxisData={_getAxisData}\n onChartMouseLeave={_handleChartMouseLeave}\n getDomainMargins={_getDomainMargins}\n {...(_xAxisType === XAxisTypes.StringAxis && {\n xAxisInnerPadding: _xAxisInnerPadding,\n xAxisOuterPadding: _xAxisOuterPadding,\n })}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n children={(props: ChildProps) => {\n return (\n <>\n <g>{_bars}</g>\n <g>\n {_isHavingLines &&\n _createLines(\n props.xScale!,\n props.yScalePrimary!,\n props.containerHeight!,\n props.containerWidth!,\n props.yScaleSecondary,\n )}\n </g>\n </>\n );\n }}\n />\n );\n }\n return <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />;\n};\nVerticalStackedBarChart.displayName = 'VerticalStackedBarChart';\n"],"names":["VerticalStackedBarChart","barGapMultiplier","barGapMin","MIN_DOMAIN_MARGIN","CircleVisbility","props","_isRtl","useRtl","_createLegendsForLine","data","_getLineLegends","_tooltipId","useId","_emptyChartId","_points","_dataset","_xAxisLabels","_bars","_xAxisType","length","getTypeOfAxis","xAxisPoint","XAxisTypes","StringAxis","_barWidth","_colors","_margins","_lineObject","_yMax","_yMin","_calloutAnchorPoint","_domainMargin","_xAxisInnerPadding","_xAxisOuterPadding","cartesianChartRef","React","useRef","Y_ORIGIN","selectedLegends","setSelectedLegends","useState","legendProps","activeLegend","setActiveLegend","undefined","dataForHoverCard","setDataForHoverCard","color","setColor","hoverXValue","setHoverXValue","YValueHover","setYValueHover","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","activeXAxisDataPoint","setActiveXAxisDataPoint","calloutLegend","setCalloutLegend","stackCalloutProps","setStackCalloutProps","dataPointCalloutProps","setDataPointCalloutProps","callOutAccessibilityData","setCallOutAccessibilityData","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","prevPropsRef","useEffect","current","prevProps","areArraysEqual","height","width","_adjustProps","_createDataSetLayer","useImperativeHandle","componentRef","chartContainer","_getLegendData","lineLegends","hideLegend","createElement","Fragment","defaultPalette","getColorFromToken","DataVizPalette","color6","color1","color5","color7","color10","actions","allowHoverOnLegend","forEach","singleChartData","chartData","point","Math","floor","random","checkSimilarLegends","filter","leg","title","legend","hoverAction","_handleChartMouseLeave","_onLegendHover","onMouseOutAction","_onLegendLeave","push","legendsOfLine","isLineLegendInBarChart","totalLegends","concat","Legends","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onChange","_onLegendSelectionChange","_getHighlightedLegend","_lineHoverOut","_lineHoverFocus","lineData","xItem","yAxisCalloutData","_onStackHoverFocus","stack","mouseEvent","clientX","clientY","boundingRect","getBoundingClientRect","left","top","_noLegendHighlighted","dataPoint","_isLegendHighlighted","isLinesPresent","item","shouldDrawBorderBottom","_updatePosition","sort","a","b","slice","reverse","Date","formatDate","useUTC","stackCallOutAccessibilityData","_onClick","onBarClick","href","window","location","getBarWidth","barWidth","maxBarWidth","defaultColors","_getFormattedLineData","getScalePadding","xAxisInnerPadding","xAxisPadding","xAxisOuterPadding","tempArr","dataset","map","singlePointData","total","legendTitle","_selectedLegends","event","currentLegend","canSelectMultipleLegends","_getMargins","margins","_getGraphData","xScale","yScale","containerHeight","containerWidth","xElement","xBarScale","yBarScale","_getScales","_createBar","_getAxisData","yAxisData","yAxisDomainValues","domainValue","max","yMaxValue","min","yMinValue","includes","_getAriaLabel","xValue","xAxisCalloutData","pointValues","pt","yValue","join","lineValues","ln","ariaLabel","_getCustomizedCallout","_isHavingLines","some","onRenderCalloutPerStack","onRenderCalloutPerDataPoint","_renderCallout","_toFocusWholeStack","isCalloutForStack","shouldFocusStackOnly","linesData","formattedLineData","index","line","lineObject","Object","keys","_createLines","yScalePrimary","yScaleSecondary","lines","borderForLines","dots","lineBorderWidth","lineOptions","Number","parseFloat","toString","xScaleBandwidthTranslate","bandwidth","shouldHighlight","i","x1","useSecondaryYScale","y1","x2","y2","key","opacity","strokeWidth","fill","strokeLinecap","stroke","tokens","colorNeutralBackground1","transform","strokeDasharray","onMouseOver","_lineHover","bind","onMouseLeave","circlePoint","subIndex","circleRef","refElement","noBarsAndLinesActive","circle","cx","cy","_onStackHover","r","_getCircleVisibilityAndRadius","radius","visibility","ref","e","tabIndex","hideTooltip","onFocus","_lineFocus","onBlur","_handleMouseOut","role","ChartPopover","culture","XValue","YValue","_onRectHover","persist","_onRectFocusHover","chartDataPoint","xAxisDataPoint","_onRectFocus","_onStackFocus","groupRef","_getBarGapAndScale","bars","defaultTotalHeight","barGapMax","totalData","reduce","iter","value","abs","totalHeight","sumOfPercent","scalingRatio","gaps","gapHeight","heightValueScale","absStackTotal","yDomain","d3ScaleLinear","domain","range","bottom","NumericAxis","xMax","d3Max","xMin","d3Min","nice","right","DateAxis","sDate","lDate","d3ScaleUtc","d3ScaleTime","d3ScaleBand","paddingInner","paddingOuter","_isChartEmpty","newX","newY","threshold","distance","sqrt","pow","_getDomainMargins","totalWidth","barGapRate","isScalePaddingDefined","reqWidth","mode","margin1","step","calculateLongestLabelWidth","margin2","calculateAppropriateBarWidth","_getChartTitle","chartTitle","numLines","classes","useVerticalStackedBarChartStyles","barCornerRadius","barMinimumHeight","shouldFocusWholeStack","indexNumber","xPoint","barTotalValue","barsToDisplay","yBaseline","yPositiveStart","yNegativeStart","yPoint","heightOfLastBar","singleBar","startColor","rectFocusProps","onMouseMove","onClick","barHeight","minHeight","gapOffset","path","className","opacityChangeOnHover","d","rx","roundCorners","cursor","rect","stackFocusProps","showLabel","barLabel","hideLabels","g","id","text","textAnchor","aria-label","yAxisTickFormat","formatScientificLimitWidth","showXAxisLablesTooltip","document","getElementById","remove","wrapXAxisLables","xAxisElement","d3Select","call","tooltipProps","tooltipCls","tooltip","axis","tooltipOfAxislabels","bar","_getMinMaxOfYAxis","yAxisType","findVSBCNumericMinMaxOfY","values","startValue","endValue","legendBars","calloutProps","getAccessibleDataObject","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","tickValues","tickFormat","CartesianChart","points","chartType","ChartTypes","xAxisType","getMinMaxOfYAxis","datasetForXAxisDomain","barwidth","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","children","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["VerticalStackedBarChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { select as d3Select } from 'd3-selection';\nimport { useVerticalStackedBarChartStyles } from './useVerticalStackedBarChartStyles.styles';\nimport {\n scaleLinear as d3ScaleLinear,\n ScaleLinear as D3ScaleLinear,\n scaleBand as d3ScaleBand,\n scaleUtc as d3ScaleUtc,\n scaleTime as d3ScaleTime,\n} from 'd3-scale';\nimport { useId } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n VerticalStackedBarDataPoint,\n Margins,\n VerticalStackedBarChartProps,\n VerticalStackedChartProps,\n VSChartDataPoint,\n LineDataInVerticalStackedBarChart,\n ModifiedCartesianChartProps,\n Legend,\n ChartPopover,\n Legends,\n Chart,\n DataPoint,\n} from '../../index';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfAxislabels,\n formatScientificLimitWidth,\n getBarWidth,\n getScalePadding,\n isScalePaddingDefined,\n calculateAppropriateBarWidth,\n formatDate,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n DataVizPalette,\n getColorFromToken,\n findVSBCNumericMinMaxOfY,\n YAxisType,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfDateForAreaLineVerticalBarChart,\n domainRangeOfVSBCNumeric,\n domainRangeOfXStringAxis,\n createStringYAxis,\n} from '../../utilities/index';\n\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\ntype NumericScale = D3ScaleLinear<number, number>;\nconst barGapMultiplier = 0.2;\nconst barGapMin = 1;\nconst MIN_DOMAIN_MARGIN = 8;\n\ninterface RefArrayData {\n refElement?: SVGGElement | null;\n}\n\ntype LinePoint = LineDataInVerticalStackedBarChart & { index: number; xItem: VerticalStackedChartProps };\ntype LineObject = { [key: string]: LinePoint[] };\ntype LineLegends = {\n title: string;\n color: string;\n};\nenum CircleVisbility {\n show = 'visibility',\n hide = 'hidden',\n}\ntype CalloutAnchorPointData = {\n xAxisDataPoint: string;\n chartDataPoint: VSChartDataPoint;\n};\n\nexport const VerticalStackedBarChart: React.FunctionComponent<VerticalStackedBarChartProps> = props => {\n const _isRtl: boolean = useRtl();\n const _createLegendsForLine: (data: VerticalStackedChartProps[]) => LineLegends[] = (\n data: VerticalStackedChartProps[],\n ) => _getLineLegends(data);\n const _tooltipId: string = useId('VSBCTooltipId_');\n const _emptyChartId: string = useId('_VSBC_empty');\n let _points: VerticalStackedChartProps[] = [];\n let _dataset: VerticalStackedBarDataPoint[];\n let _xAxisLabels: string[] = [];\n let _bars: JSX.Element[];\n let _xAxisType: XAxisTypes =\n props.data! && props.data!.length > 0\n ? (getTypeOfAxis(props.data[0]!.xAxisPoint, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n let _barWidth: number = 0;\n let _colors: string[];\n let _margins: Margins;\n let _lineObject: LineObject;\n let _yMax: number;\n let _yMin: number;\n let _calloutAnchorPoint: CalloutAnchorPointData | null;\n let _domainMargin: number = MIN_DOMAIN_MARGIN;\n let _xAxisInnerPadding: number = 0;\n let _xAxisOuterPadding: number = 0;\n const cartesianChartRef = React.useRef<Chart>(null);\n const Y_ORIGIN: number = 0;\n\n const [selectedLegends, setSelectedLegends] = React.useState(props.legendProps?.selectedLegends || []);\n const [activeLegend, setActiveLegend] = React.useState<string | undefined>(undefined);\n const [dataForHoverCard, setDataForHoverCard] = React.useState(0);\n const [color, setColor] = React.useState('');\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [YValueHover, setYValueHover] = React.useState<(LineDataInVerticalStackedBarChart | VSChartDataPoint)[]>([]);\n const [xCalloutValue, setXCalloutValue] = React.useState('');\n const [yCalloutValue, setYCalloutValue] = React.useState('');\n const [activeXAxisDataPoint, setActiveXAxisDataPoint] = React.useState<number | string | Date>('');\n const [calloutLegend, setCalloutLegend] = React.useState('');\n const [stackCalloutProps, setStackCalloutProps] = React.useState<VerticalStackedChartProps>();\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<VSChartDataPoint>();\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const prevPropsRef = React.useRef<VerticalStackedBarChartProps | null>(null);\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 if (prevProps.height !== props.height || prevProps.width !== props.width || prevProps.data !== props.data) {\n _adjustProps();\n _dataset = _createDataSetLayer();\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 function _getLegendData(data: VerticalStackedChartProps[], lineLegends: LineLegends[]): JSX.Element {\n if (props.hideLegend) {\n return <></>;\n }\n const defaultPalette: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n getColorFromToken(DataVizPalette.color10),\n ];\n const actions: Legend[] = [];\n const { allowHoverOnLegend = true } = props;\n\n data.forEach((singleChartData: VerticalStackedChartProps) => {\n singleChartData.chartData.forEach((point: VSChartDataPoint) => {\n const color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter((leg: Legend) => leg.title === point.legend && leg.color === color);\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n\n const legend: Legend = {\n title: point.legend,\n color,\n hoverAction: allowHoverOnLegend\n ? () => {\n _handleChartMouseLeave();\n _onLegendHover(point.legend);\n }\n : undefined,\n onMouseOutAction: allowHoverOnLegend ? () => _onLegendLeave() : undefined,\n };\n\n actions.push(legend);\n });\n });\n const legendsOfLine: Legend[] = [];\n if (lineLegends && lineLegends.length > 0) {\n lineLegends.forEach((point: LineLegends) => {\n const legend: Legend = {\n title: point.title,\n color: point.color,\n isLineLegendInBarChart: true,\n hoverAction: allowHoverOnLegend\n ? () => {\n _handleChartMouseLeave();\n _onLegendHover(point.title);\n }\n : undefined,\n onMouseOutAction: allowHoverOnLegend ? () => _onLegendLeave() : undefined,\n };\n legendsOfLine.push(legend);\n });\n }\n const totalLegends: Legend[] = legendsOfLine.concat(actions);\n return (\n <Legends\n legends={totalLegends}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={_onLegendSelectionChange}\n />\n );\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _lineHoverOut() {\n setPopoverOpen(false);\n setXCalloutValue('');\n setYCalloutValue('');\n setActiveXAxisDataPoint('');\n setColor('');\n }\n\n function _lineHoverFocus(lineData: LinePoint) {\n setPopoverOpen(true);\n setXCalloutValue(`${lineData.xItem.xAxisPoint}`);\n setYCalloutValue(`${lineData.yAxisCalloutData || lineData.data || lineData.y}`);\n setActiveXAxisDataPoint(lineData.xItem.xAxisPoint);\n setColor(lineData.color);\n }\n\n function _onStackHoverFocus(\n stack: VerticalStackedChartProps,\n mouseEvent: React.MouseEvent<SVGElement> | SVGGElement,\n ): void {\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in mouseEvent) {\n clientX = mouseEvent.clientX;\n clientY = mouseEvent.clientY;\n } else {\n // Handle case where mouseEvent is an SVGGElement\n const boundingRect = mouseEvent.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n if (!_noLegendHighlighted()) {\n stack = {\n ...stack,\n chartData: stack.chartData.filter((dataPoint: { legend: any }) => _isLegendHighlighted(dataPoint.legend)),\n lineData: stack.lineData?.filter((dataPoint: { legend: any }) => _isLegendHighlighted(dataPoint.legend)),\n };\n }\n const lineData = stack.lineData;\n const isLinesPresent: boolean = lineData !== undefined && lineData.length > 0;\n if (isLinesPresent) {\n lineData!.forEach((item: LineDataInVerticalStackedBarChart & { shouldDrawBorderBottom?: boolean }) => {\n item.data = item.data || item.y;\n item.shouldDrawBorderBottom = true;\n });\n }\n _updatePosition(clientX, clientY);\n setPopoverOpen(stack.chartData.length > 0 || (stack.lineData?.length ?? 0) > 0);\n setYValueHover(\n isLinesPresent\n ? [...lineData!.sort((a, b) => (a.data! < b.data! ? 1 : -1)), ...stack.chartData.slice().reverse()]\n : stack.chartData.slice().reverse(),\n );\n setHoverXValue(stack.xAxisPoint instanceof Date ? formatDate(stack.xAxisPoint, props.useUTC) : stack.xAxisPoint);\n setStackCalloutProps(stack);\n setActiveXAxisDataPoint(stack.xAxisPoint);\n setCallOutAccessibilityData(stack.stackCallOutAccessibilityData);\n }\n\n function _handleChartMouseLeave(): void {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n setActiveXAxisDataPoint('');\n }\n\n const _onClick = (\n data: VerticalStackedChartProps | VSChartDataPoint,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n props.onBarClick?.(mouseEvent, data);\n props.href ? (window.location.href = props.href) : '';\n };\n\n function _adjustProps(): void {\n _points = props.data || [];\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n const defaultColors: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n getColorFromToken(DataVizPalette.color10),\n ];\n _colors = defaultColors;\n _xAxisType = getTypeOfAxis(props.data[0].xAxisPoint, true) as XAxisTypes;\n _lineObject = _getFormattedLineData(props.data);\n _xAxisInnerPadding = getScalePadding(props.xAxisInnerPadding, props.xAxisPadding, 2 / 3);\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding, props.xAxisPadding, 0);\n }\n\n function _createDataSetLayer(): VerticalStackedBarDataPoint[] {\n const tempArr: string[] = [];\n const dataset: VerticalStackedBarDataPoint[] = _points.map(singlePointData => {\n let total: number = 0;\n singlePointData.chartData!.forEach((point: VSChartDataPoint) => {\n total = total + point.data;\n });\n tempArr.push(singlePointData.xAxisPoint as string);\n return {\n x: singlePointData.xAxisPoint,\n y: total,\n };\n });\n _xAxisLabels = tempArr;\n return dataset;\n }\n\n function _onLegendHover(legendTitle: string): void {\n setActiveLegend(legendTitle);\n }\n\n function _onLegendLeave(): void {\n setActiveLegend(undefined);\n }\n\n function _onLegendSelectionChange(\n _selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(_selectedLegends);\n } else {\n setSelectedLegends(_selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(_selectedLegends, event, currentLegend);\n }\n }\n\n function _getMargins(margins: Margins) {\n _margins = margins;\n }\n\n function _getGraphData(\n xScale: any,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) {\n const { xBarScale, yBarScale } = _getScales(containerHeight, containerWidth);\n return (_bars = _createBar(xBarScale, yBarScale, containerHeight, xElement!));\n }\n\n function _getAxisData(yAxisData: IAxisData) {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n const { yAxisDomainValues: domainValue } = yAxisData;\n _yMax = Math.max(domainValue[domainValue.length - 1], props.yMaxValue || Y_ORIGIN);\n _yMin = Math.min(domainValue[0], props.yMinValue || Y_ORIGIN);\n }\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(legendTitle: string) {\n return _getHighlightedLegend().includes(legendTitle);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n function _noLegendHighlighted() {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getAriaLabel(singleChartData: VerticalStackedChartProps, point?: VSChartDataPoint): string {\n if (!point) {\n /** if shouldFocusWholeStack is true */\n const xValue =\n singleChartData.xAxisCalloutData ||\n (singleChartData.xAxisPoint instanceof Date\n ? formatDate(singleChartData.xAxisPoint)\n : singleChartData.xAxisPoint);\n const pointValues = singleChartData.chartData\n .map(pt => {\n const legend = pt.legend;\n const yValue = pt.yAxisCalloutData || pt.data;\n return `${legend}, ${yValue}.`;\n })\n .join(' ');\n const lineValues = singleChartData.lineData\n ?.map(ln => {\n const legend = ln.legend;\n const yValue = ln.yAxisCalloutData || ln.data || ln.y;\n return `${legend}, ${yValue}.`;\n })\n .join(' ');\n return (\n singleChartData.stackCallOutAccessibilityData?.ariaLabel ||\n `${xValue}. ${pointValues}` + (lineValues ? ` ${lineValues}` : '')\n );\n }\n /** if shouldFocusWholeStack is false */\n const xValue =\n singleChartData.xAxisCalloutData ||\n point.xAxisCalloutData ||\n (singleChartData.xAxisPoint instanceof Date\n ? formatDate(singleChartData.xAxisPoint)\n : singleChartData.xAxisPoint);\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.data;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n }\n\n function _getCustomizedCallout() {\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n return props.onRenderCalloutPerStack\n ? props.onRenderCalloutPerStack(stackCalloutProps)\n : props.onRenderCalloutPerDataPoint && !_isHavingLines\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps, _renderCallout)\n : null;\n }\n\n function _toFocusWholeStack(_isHavingLines: boolean): boolean {\n const { isCalloutForStack = false } = props;\n let shouldFocusStackOnly: boolean = false;\n if (_isHavingLines) {\n if (_getHighlightedLegend().length === 1) {\n shouldFocusStackOnly = false;\n } else {\n shouldFocusStackOnly = true;\n }\n } else {\n shouldFocusStackOnly = isCalloutForStack;\n }\n return shouldFocusStackOnly;\n }\n\n function _getDomainNRangeValues(\n points: DataPoint[],\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = domainRangeOfVSBCNumeric(points, margins, width, isRTL, barWidth!);\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForAreaLineVerticalBarChart(\n points,\n margins,\n width,\n isRTL,\n tickValues! as Date[],\n chartType,\n barWidth,\n );\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n }\n\n function _getFormattedLineData(data: VerticalStackedChartProps[]): LineObject {\n const linesData: LinePoint[] = [];\n const formattedLineData: LineObject = {};\n data.forEach((item: VerticalStackedChartProps, index: number) => {\n if (item.lineData) {\n item.lineData.forEach((line: any) => {\n linesData.push({\n ...line,\n index,\n xItem: item,\n });\n });\n }\n });\n linesData.forEach(item => {\n if (formattedLineData[item.legend]) {\n formattedLineData[item.legend].push(item);\n } else {\n formattedLineData[item.legend] = [item];\n }\n });\n return formattedLineData;\n }\n\n function _getLineLegends(data: VerticalStackedChartProps[]): LineLegends[] {\n const lineObject: LineObject = _lineObject;\n const lineLegends: LineLegends[] = [];\n Object.keys(lineObject).forEach((item: string) => {\n lineLegends.push({\n title: item,\n color: lineObject[item][0].color,\n });\n });\n return lineLegends;\n }\n\n function _createLines(\n xScale: any,\n yScalePrimary: NumericScale,\n containerHeight: number,\n containerWidth: number,\n yScaleSecondary?: NumericScale,\n ): JSX.Element {\n const lineObject: LineObject = _getFormattedLineData(props.data);\n const lines: React.ReactNode[] = [];\n const borderForLines: React.ReactNode[] = [];\n const dots: React.ReactNode[] = [];\n //const { theme } = props;\n const lineBorderWidth = props.lineOptions?.lineBorderWidth\n ? Number.parseFloat(props.lineOptions!.lineBorderWidth!.toString())\n : 0;\n const xScaleBandwidthTranslate = _xAxisType !== XAxisTypes.StringAxis ? 0 : xScale.bandwidth() / 2;\n Object.keys(lineObject).forEach((item: string, index: number) => {\n const shouldHighlight = _isLegendHighlighted(item) || _noLegendHighlighted();\n for (let i = 1; i < lineObject[item].length; i++) {\n const x1 = xScale(lineObject[item][i - 1].xItem.xAxisPoint);\n const useSecondaryYScale =\n lineObject[item][i - 1].useSecondaryYScale && lineObject[item][i].useSecondaryYScale && yScaleSecondary;\n const y1 = useSecondaryYScale\n ? yScaleSecondary!(lineObject[item][i - 1].y)\n : yScalePrimary(lineObject[item][i - 1].y);\n const x2 = xScale(lineObject[item][i].xItem.xAxisPoint);\n const y2 = useSecondaryYScale ? yScaleSecondary!(lineObject[item][i].y) : yScalePrimary(lineObject[item][i].y);\n if (lineBorderWidth > 0) {\n borderForLines.push(\n <line\n key={`${index}-${i}-BorderLine`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={3 + lineBorderWidth * 2}\n fill=\"transparent\"\n strokeLinecap=\"round\"\n stroke={tokens.colorNeutralBackground1}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />,\n );\n }\n lines.push(\n <line\n key={`${index}-${i}-line`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={lineObject[item][0].lineOptions?.strokeWidth ?? 3}\n strokeLinecap={lineObject[item][0].lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={lineObject[item][0].lineOptions?.strokeDasharray}\n stroke={lineObject[item][i].color}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n {...(_isLegendHighlighted(item) && {\n onMouseOver: _lineHover.bind(lineObject[item][i - 1]),\n onMouseLeave: _lineHoverOut,\n })}\n />,\n );\n }\n });\n Object.keys(lineObject).forEach((item: string, index: number) => {\n lineObject[item].forEach((circlePoint: LinePoint, subIndex: number) => {\n const circleRef: { refElement: SVGCircleElement | null } = { refElement: null };\n const noBarsAndLinesActive =\n circlePoint.xItem.chartData.filter(\n dataPoint => _noLegendHighlighted() || _isLegendHighlighted(dataPoint.legend),\n ).length === 0;\n dots.push(\n <circle\n key={`${index}-${subIndex}-dot`}\n cx={xScale(circlePoint.xItem.xAxisPoint)}\n cy={\n circlePoint.useSecondaryYScale && yScaleSecondary\n ? yScaleSecondary(circlePoint.y)\n : yScalePrimary(circlePoint.y)\n }\n onMouseOver={\n _isLegendHighlighted(item)\n ? (event: React.MouseEvent<SVGElement, MouseEvent>) => _lineHover(circlePoint, event)\n : (event: React.MouseEvent<SVGElement, MouseEvent>) => _onStackHover(circlePoint.xItem, event)\n }\n {...(_isLegendHighlighted(item) && {\n onMouseLeave: _lineHoverOut,\n })}\n r={_getCircleVisibilityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).radius}\n stroke={circlePoint.color}\n fill={tokens.colorNeutralBackground1}\n strokeWidth={3}\n visibility={_getCircleVisibilityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).visibility}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n ref={e => (circleRef.refElement = e)}\n {...(noBarsAndLinesActive\n ? {\n tabIndex: !props.hideTooltip ? 0 : undefined,\n onFocus: event => _lineFocus(event, circlePoint, circleRef),\n onBlur: _handleMouseOut,\n role: 'img',\n 'aria-label': _getAriaLabel(circlePoint.xItem, circlePoint as VSChartDataPoint),\n }\n : {})}\n />,\n );\n });\n });\n return (\n <>\n {borderForLines}\n {lines}\n {dots}\n </>\n );\n }\n\n function _getCircleVisibilityAndRadius(\n xAxisPoint: string | number | Date,\n legend: string,\n ): { visibility: CircleVisbility; radius: number } {\n if (!_noLegendHighlighted()) {\n if (xAxisPoint === activeXAxisDataPoint && _isLegendHighlighted(legend)) {\n return { visibility: CircleVisbility.show, radius: 8 };\n } else if (_isLegendHighlighted(legend)) {\n return { visibility: CircleVisbility.show, radius: 0.3 };\n } else {\n return { visibility: CircleVisbility.hide, radius: 0 };\n }\n } else {\n return {\n visibility: activeXAxisDataPoint === xAxisPoint ? CircleVisbility.show : CircleVisbility.hide,\n radius: 8,\n };\n }\n }\n\n function _renderCallout(props?: VSChartDataPoint): JSX.Element | null {\n return props ? (\n <ChartPopover\n culture={props.culture ?? 'en-us'}\n XValue={props.xAxisCalloutData}\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n legend={props.legend}\n YValue={props.yAxisCalloutData}\n color={props.color}\n />\n ) : null;\n }\n\n function _onRectHover(\n xAxisPoint: string | number | Date,\n point: VSChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void {\n mouseEvent.persist();\n _onRectFocusHover(xAxisPoint, point, color, mouseEvent);\n }\n\n function _onRectFocusHover(\n xAxisPoint: string | number | Date,\n point: VSChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement> | SVGGElement,\n ) {\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in mouseEvent) {\n clientX = mouseEvent.clientX;\n clientY = mouseEvent.clientY;\n } else {\n // Handle case where mouseEvent is an SVGGElement\n const boundingRect = mouseEvent.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n if (_calloutAnchorPoint?.chartDataPoint !== point || _calloutAnchorPoint?.xAxisDataPoint !== xAxisPoint) {\n _calloutAnchorPoint = {\n chartDataPoint: point,\n xAxisDataPoint: `${xAxisPoint}`,\n };\n _updatePosition(clientX, clientY);\n setPopoverOpen(_noLegendHighlighted() || _isLegendHighlighted(point.legend));\n setCalloutLegend(point.legend);\n setDataForHoverCard(point.data);\n setColor(color);\n setXCalloutValue(point.xAxisCalloutData ? point.xAxisCalloutData : `${xAxisPoint}`);\n setYCalloutValue(point.yAxisCalloutData!);\n setDataPointCalloutProps(point);\n setCallOutAccessibilityData(point.callOutAccessibilityData);\n }\n }\n\n function _lineHover(lineData: LinePoint, mouseEvent: React.MouseEvent<SVGElement>) {\n mouseEvent.persist();\n _lineHoverFocus(lineData);\n }\n\n function _lineFocus(\n event: React.FocusEvent<SVGCircleElement, Element>,\n lineData: LinePoint,\n ref: { refElement: SVGCircleElement | null },\n ) {\n if (ref.refElement) {\n _lineHoverFocus(lineData);\n }\n }\n\n function _onStackHover(stack: VerticalStackedChartProps, mouseEvent: React.MouseEvent<SVGElement>): void {\n mouseEvent.persist();\n _onStackHoverFocus(stack, mouseEvent);\n }\n\n function _onRectFocus(point: VSChartDataPoint, xAxisPoint: string, color: string, ref: RefArrayData): void {\n if (ref.refElement) {\n _onRectFocusHover(xAxisPoint, point, color, ref.refElement);\n }\n }\n\n function _onStackFocus(stack: VerticalStackedChartProps, groupRef: RefArrayData): void {\n if (groupRef.refElement) {\n _onStackHoverFocus(stack, groupRef.refElement);\n }\n }\n\n function _handleMouseOut(): void {\n setPopoverOpen(false);\n }\n\n function _getBarGapAndScale(\n bars: VSChartDataPoint[],\n yBarScale: NumericScale,\n defaultTotalHeight?: number,\n ): {\n readonly gapHeight: number;\n readonly heightValueScale: number;\n readonly absStackTotal: number;\n } {\n const { barGapMax = 0 } = props;\n // When displaying gaps between the bars, the height of each bar is\n // adjusted so that the total of all bars is not changed by the gaps\n const totalData = bars.reduce((iter, value) => iter + Math.abs(value.data), 0);\n const totalHeight = defaultTotalHeight ?? Math.abs(yBarScale(totalData) - yBarScale(Y_ORIGIN));\n let sumOfPercent = 0;\n bars.forEach(point => {\n let value = (Math.abs(point.data) / totalData) * 100;\n if (value < 1 && value !== 0) {\n value = 1;\n }\n sumOfPercent += value;\n });\n const scalingRatio = sumOfPercent !== 0 ? sumOfPercent / 100 : 1;\n const gaps = barGapMax && bars.length - 1;\n const gapHeight = gaps && Math.max(barGapMin, Math.min(barGapMax, (totalHeight * barGapMultiplier) / gaps));\n const heightValueScale = (totalHeight - gapHeight * gaps) / (totalData * scalingRatio);\n return {\n gapHeight,\n heightValueScale,\n absStackTotal: totalData,\n } as const;\n }\n\n function _getScales(containerHeight: number, containerWidth: number) {\n const yDomain = [Math.min(Y_ORIGIN, _yMin), Math.max(Y_ORIGIN, _yMax)];\n const yBarScale = d3ScaleLinear()\n .domain(yDomain)\n .range([0, containerHeight - _margins.bottom! - _margins.top!]);\n if (_xAxisType === XAxisTypes.NumericAxis) {\n const xMax = d3Max(_dataset, (point: VerticalStackedBarDataPoint) => point.x as number)!;\n const xMin = d3Min(_dataset, (point: VerticalStackedBarDataPoint) => point.x as number)!;\n\n const xBarScale = d3ScaleLinear()\n .domain(_isRtl ? [xMax, xMin] : [xMin, xMax])\n .nice()\n .range([_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin]);\n\n return { xBarScale, yBarScale };\n }\n if (_xAxisType === XAxisTypes.DateAxis) {\n const sDate = d3Min(_dataset, (point: VerticalStackedBarDataPoint) => {\n return point.x as Date;\n })!;\n const lDate = d3Max(_dataset, (point: VerticalStackedBarDataPoint) => {\n return point.x as Date;\n })!;\n const xBarScale = props.useUTC ? d3ScaleUtc() : d3ScaleTime();\n xBarScale\n .domain(_isRtl ? [lDate, sDate] : [sDate, lDate])\n .range([_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin]);\n\n return { xBarScale, yBarScale };\n }\n const xBarScale = d3ScaleBand()\n .domain(_xAxisLabels)\n .range(\n _isRtl\n ? [containerWidth - _margins.right! - _domainMargin, _margins.left! + _domainMargin]\n : [_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin],\n )\n .paddingInner(_xAxisInnerPadding)\n .paddingOuter(_xAxisOuterPadding);\n\n return { xBarScale, yBarScale };\n }\n\n const _isChartEmpty = (): boolean => {\n return !(\n props.data &&\n props.data.length > 0 &&\n props.data.some(item => item.chartData.length > 0 || (item.lineData && item.lineData.length > 0))\n );\n };\n\n function _updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\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 function _getDomainMargins(containerWidth: number): Margins {\n _domainMargin = MIN_DOMAIN_MARGIN;\n\n /** Total width available to render the bars */\n const totalWidth = containerWidth - (_margins.left! + MIN_DOMAIN_MARGIN) - (_margins.right! + MIN_DOMAIN_MARGIN);\n /** Rate at which the space between the bars changes wrt the bar width */\n const barGapRate = _xAxisInnerPadding / (1 - _xAxisInnerPadding);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(props.xAxisOuterPadding, props.xAxisPadding)) {\n // Setting the domain margin for string x-axis to 0 because the xAxisOuterPadding prop is now available\n // to adjust the space before the first bar and after the last bar.\n _domainMargin = 0;\n } else if (props.barWidth !== 'auto') {\n // Update the bar width so that when CartesianChart rerenders,\n // the following calculations don't use the previous bar width.\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n /** Total width required to render the bars. Directly proportional to bar width */\n const reqWidth = (_xAxisLabels.length + (_xAxisLabels.length - 1) * barGapRate) * _barWidth;\n\n if (totalWidth >= reqWidth) {\n // Center align the chart by setting equal left and right margins for domain\n _domainMargin = MIN_DOMAIN_MARGIN + (totalWidth - reqWidth) / 2;\n }\n } else if (props.mode === 'plotly' && _xAxisLabels.length > 1) {\n // Calculate the remaining width after rendering bars at their maximum allowable width\n const bandwidth = totalWidth / (_xAxisLabels.length + (_xAxisLabels.length - 1) * barGapRate);\n const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, bandwidth);\n let reqWidth = (_xAxisLabels.length + (_xAxisLabels.length - 1) * barGapRate) * barWidth;\n const margin1 = (totalWidth - reqWidth) / 2;\n\n // Calculate the remaining width after accounting for the space required to render x-axis labels\n const step = calculateLongestLabelWidth(_xAxisLabels) + 20;\n reqWidth = (_xAxisLabels.length - _xAxisInnerPadding) * step;\n const margin2 = (totalWidth - reqWidth) / 2;\n\n _domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n } else {\n const data = (props.data?.map(point => point.xAxisPoint) as number[] | Date[] | undefined) || [];\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth, calculateAppropriateBarWidth(data, totalWidth));\n _domainMargin = MIN_DOMAIN_MARGIN + _barWidth / 2;\n }\n\n return {\n ..._margins,\n left: _margins.left! + _domainMargin,\n right: _margins.right! + _domainMargin,\n };\n }\n\n function _getChartTitle(): string {\n const { chartTitle, data } = props;\n const numLines = Object.keys(_lineObject).length;\n return (\n (chartTitle ? `${chartTitle}. ` : '') +\n `Vertical bar chart with ${data?.length || 0} stacked bars` +\n (numLines > 0 ? ` and ${numLines} lines` : '') +\n '. '\n );\n }\n\n const classes = useVerticalStackedBarChartStyles(props);\n function _createBar(\n xBarScale: any,\n yBarScale: NumericScale,\n containerHeight: number,\n xElement: SVGElement,\n ): JSX.Element[] {\n const { barCornerRadius = 0, barMinimumHeight = 0 } = props;\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = _toFocusWholeStack(_isHavingLines);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth, xBarScale.bandwidth());\n }\n\n const bars = _points.map((singleChartData: VerticalStackedChartProps, indexNumber: number) => {\n const xPoint = xBarScale(\n _xAxisType === XAxisTypes.NumericAxis\n ? (singleChartData.xAxisPoint as number)\n : _xAxisType === XAxisTypes.DateAxis\n ? (singleChartData.xAxisPoint as Date)\n : (singleChartData.xAxisPoint as string),\n );\n const xScaleBandwidthTranslate =\n _xAxisType !== XAxisTypes.StringAxis ? -_barWidth / 2 : (xBarScale.bandwidth() - _barWidth) / 2;\n\n let barTotalValue = 0;\n\n const barsToDisplay = singleChartData.chartData.filter(point => point.data !== 0);\n\n if (!barsToDisplay.length) {\n return undefined;\n }\n\n const { gapHeight, heightValueScale, absStackTotal } = _getBarGapAndScale(barsToDisplay, yBarScale);\n\n if (heightValueScale < 0) {\n return undefined;\n }\n\n const yBaseline = containerHeight - _margins.bottom! - yBarScale(Y_ORIGIN);\n let yPositiveStart = yBaseline;\n let yNegativeStart = yBaseline;\n let yPoint = 0;\n let heightOfLastBar = 0;\n\n const singleBar = barsToDisplay.map((point: VSChartDataPoint, index: number) => {\n const startColor = point.color ? point.color : _colors[index];\n const ref: RefArrayData = {};\n const shouldHighlight = _isLegendHighlighted(point.legend) || _noLegendHighlighted() ? true : false;\n const rectFocusProps = !shouldFocusWholeStack && {\n 'aria-label': _getAriaLabel(singleChartData, point),\n onMouseOver: (event: React.MouseEvent<SVGElement, MouseEvent>) =>\n _onRectHover(singleChartData.xAxisPoint, point, startColor, event),\n onMouseMove: (event: React.MouseEvent<SVGElement, MouseEvent>) =>\n _onRectHover(singleChartData.xAxisPoint, point, startColor, event),\n onMouseLeave: _handleMouseOut,\n onFocus: () => _onRectFocus(point, singleChartData.xAxisPoint as string, startColor, ref),\n onBlur: _handleMouseOut,\n onClick: (event: React.MouseEvent<SVGElement, MouseEvent>) => _onClick(point, event),\n role: 'img',\n tabIndex: !props.hideTooltip && shouldHighlight ? 0 : undefined,\n };\n\n let barHeight = Math.abs(heightValueScale * point.data);\n // FIXME: The current scaling logic may produce different min and gap heights for each bar stack.\n const minHeight = Math.max((heightValueScale * absStackTotal) / 100.0, barMinimumHeight);\n if (barHeight < minHeight) {\n barHeight = minHeight;\n }\n const gapOffset = index ? gapHeight : 0;\n if (point.data >= Y_ORIGIN) {\n yPositiveStart -= barHeight + gapOffset;\n yPoint = yPositiveStart;\n } else {\n yPoint = yNegativeStart + gapOffset;\n yNegativeStart = yPoint + barHeight;\n }\n\n barTotalValue += point.data;\n heightOfLastBar = index === barsToDisplay.length - 1 ? barHeight : 0;\n\n if (barCornerRadius && barHeight > barCornerRadius && index === barsToDisplay.length - 1) {\n return (\n <React.Fragment key={index + indexNumber + `${shouldFocusWholeStack}`}>\n <path\n className={classes.opacityChangeOnHover}\n d={`\n M ${xPoint} ${yPoint + barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${-barCornerRadius}\n h ${_barWidth - 2 * barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${barCornerRadius}\n v ${barHeight - barCornerRadius}\n h ${-_barWidth}\n z\n `}\n fill={startColor}\n rx={props.roundCorners ? 3 : 0}\n ref={e => (ref.refElement = e)}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n cursor={props.href ? 'pointer' : 'default'}\n {...rectFocusProps}\n />\n </React.Fragment>\n );\n }\n if (barHeight < 0) {\n return <React.Fragment key={index + indexNumber}> </React.Fragment>;\n }\n return (\n <React.Fragment key={index + indexNumber}>\n <rect\n className={classes.opacityChangeOnHover}\n x={xPoint}\n y={yPoint}\n width={_barWidth}\n height={barHeight}\n fill={startColor}\n opacity={shouldHighlight ? 1 : 0.1}\n cursor={props.href ? 'pointer' : 'default'}\n rx={props.roundCorners ? 3 : 0}\n ref={e => (ref.refElement = e)}\n {...rectFocusProps}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />\n </React.Fragment>\n );\n });\n const groupRef: RefArrayData = {};\n const stackFocusProps = shouldFocusWholeStack && {\n 'aria-label': _getAriaLabel(singleChartData),\n onMouseOver: (event: any) => _onStackHover(singleChartData, event),\n onMouseMove: (event: any) => _onStackHover(singleChartData, event),\n onMouseLeave: _handleMouseOut,\n onFocus: () => _onStackFocus(singleChartData, groupRef),\n onBlur: _handleMouseOut,\n onClick: (event: any) => _onClick(singleChartData, event),\n role: 'img',\n tabIndex: !props.hideTooltip ? 0 : undefined,\n };\n let showLabel = false;\n let barLabel = 0;\n if (!props.hideLabels) {\n if (_noLegendHighlighted()) {\n showLabel = true;\n barLabel = barTotalValue;\n } else {\n barsToDisplay.forEach(point => {\n if (_isLegendHighlighted(point.legend)) {\n showLabel = true;\n barLabel += point.data;\n }\n });\n }\n }\n return (\n <g key={indexNumber + `${shouldFocusWholeStack}`}>\n <g id={`${indexNumber}-singleBar`} ref={e => (groupRef.refElement = e)} {...stackFocusProps}>\n {singleBar}\n </g>\n {!props.hideLabels && _barWidth >= 16 && showLabel && (\n <text\n x={xPoint + _barWidth / 2}\n //if total bar value >=0, show label above top bar, otherwise below bottom bar\n y={barLabel >= Y_ORIGIN ? yPoint - 6 : yPoint + heightOfLastBar + 12}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-label={`Total: ${barLabel}`}\n role=\"img\"\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n >\n {typeof props.yAxisTickFormat === 'function'\n ? props.yAxisTickFormat(barLabel)\n : formatScientificLimitWidth(barLabel)}\n </text>\n )}\n </g>\n );\n });\n if (!props.showXAxisLablesTooltip) {\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n axis: xAxisElement,\n };\n xAxisElement && tooltipOfAxislabels(tooltipProps);\n }\n return bars.filter((bar): bar is JSX.Element => !!bar);\n }\n\n function _getMinMaxOfYAxis(\n dataset: DataPoint[],\n yAxisType?: YAxisType,\n useSecondaryYScale?: boolean,\n ): { startValue: number; endValue: number } {\n if (!useSecondaryYScale) {\n return findVSBCNumericMinMaxOfY(dataset);\n }\n\n const values: number[] = [];\n props.data.forEach(xPoint => {\n xPoint.lineData?.forEach(point => {\n // useSecondaryYScale is applicable only for lines in VSBC\n if (point.useSecondaryYScale) {\n values.push(point.y);\n }\n });\n });\n\n return { startValue: d3Min(values)!, endValue: d3Max(values)! };\n }\n\n if (!_isChartEmpty()) {\n _adjustProps();\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = _toFocusWholeStack(_isHavingLines);\n _dataset = _createDataSetLayer();\n const legendBars: JSX.Element = _getLegendData(_points, _createLegendsForLine(props.data));\n const calloutProps: ModifiedCartesianChartProps['calloutProps'] = {\n color: color,\n legend: calloutLegend,\n XValue: xCalloutValue!,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n YValueHover: YValueHover,\n hoverXValue: hoverXValue,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData),\n clickPosition: clickPosition,\n isPopoverOpen: isPopoverOpen,\n isCalloutForStack:\n props.isCalloutForStack || (_isHavingLines && (_noLegendHighlighted() || _getHighlightedLegend().length > 1)),\n isCartesian: true,\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n };\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n return (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_dataset}\n chartType={ChartTypes.VerticalStackedBarChart}\n xAxisType={_xAxisType}\n getMinMaxOfYAxis={_getMinMaxOfYAxis}\n calloutProps={calloutProps}\n createYAxis={createNumericYAxis}\n tickParams={tickParams}\n legendBars={legendBars}\n datasetForXAxisDomain={_xAxisLabels}\n isCalloutForStack={shouldFocusWholeStack}\n getDomainNRangeValues={_getDomainNRangeValues}\n createStringYAxis={createStringYAxis}\n barwidth={_barWidth}\n getmargins={_getMargins}\n getGraphData={_getGraphData}\n getAxisData={_getAxisData}\n onChartMouseLeave={_handleChartMouseLeave}\n getDomainMargins={_getDomainMargins}\n {...(_xAxisType === XAxisTypes.StringAxis && {\n xAxisInnerPadding: _xAxisInnerPadding,\n xAxisOuterPadding: _xAxisOuterPadding,\n })}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n children={(props: ChildProps) => {\n return (\n <>\n <g>{_bars}</g>\n <g>\n {_isHavingLines &&\n _createLines(\n props.xScale!,\n props.yScalePrimary!,\n props.containerHeight!,\n props.containerWidth!,\n props.yScaleSecondary,\n )}\n </g>\n </>\n );\n }}\n />\n );\n }\n return <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />;\n};\nVerticalStackedBarChart.displayName = 'VerticalStackedBarChart';\n"],"names":["VerticalStackedBarChart","barGapMultiplier","barGapMin","MIN_DOMAIN_MARGIN","CircleVisbility","props","_isRtl","useRtl","_createLegendsForLine","data","_getLineLegends","_tooltipId","useId","_emptyChartId","_points","_dataset","_xAxisLabels","_bars","_xAxisType","length","getTypeOfAxis","xAxisPoint","XAxisTypes","StringAxis","_barWidth","_colors","_margins","_lineObject","_yMax","_yMin","_calloutAnchorPoint","_domainMargin","_xAxisInnerPadding","_xAxisOuterPadding","cartesianChartRef","React","useRef","Y_ORIGIN","selectedLegends","setSelectedLegends","useState","legendProps","activeLegend","setActiveLegend","undefined","dataForHoverCard","setDataForHoverCard","color","setColor","hoverXValue","setHoverXValue","YValueHover","setYValueHover","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","activeXAxisDataPoint","setActiveXAxisDataPoint","calloutLegend","setCalloutLegend","stackCalloutProps","setStackCalloutProps","dataPointCalloutProps","setDataPointCalloutProps","callOutAccessibilityData","setCallOutAccessibilityData","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","prevPropsRef","useEffect","current","prevProps","areArraysEqual","height","width","_adjustProps","_createDataSetLayer","useImperativeHandle","componentRef","chartContainer","_getLegendData","lineLegends","hideLegend","createElement","Fragment","defaultPalette","getColorFromToken","DataVizPalette","color6","color1","color5","color7","color10","actions","allowHoverOnLegend","forEach","singleChartData","chartData","point","Math","floor","random","checkSimilarLegends","filter","leg","title","legend","hoverAction","_handleChartMouseLeave","_onLegendHover","onMouseOutAction","_onLegendLeave","push","legendsOfLine","isLineLegendInBarChart","totalLegends","concat","Legends","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onChange","_onLegendSelectionChange","_getHighlightedLegend","_lineHoverOut","_lineHoverFocus","lineData","xItem","yAxisCalloutData","_onStackHoverFocus","stack","mouseEvent","clientX","clientY","boundingRect","getBoundingClientRect","left","top","_noLegendHighlighted","dataPoint","_isLegendHighlighted","isLinesPresent","item","shouldDrawBorderBottom","_updatePosition","sort","a","b","slice","reverse","Date","formatDate","useUTC","stackCallOutAccessibilityData","_onClick","onBarClick","href","window","location","getBarWidth","barWidth","maxBarWidth","defaultColors","_getFormattedLineData","getScalePadding","xAxisInnerPadding","xAxisPadding","xAxisOuterPadding","tempArr","dataset","map","singlePointData","total","legendTitle","_selectedLegends","event","currentLegend","canSelectMultipleLegends","_getMargins","margins","_getGraphData","xScale","yScale","containerHeight","containerWidth","xElement","xBarScale","yBarScale","_getScales","_createBar","_getAxisData","yAxisData","yAxisDomainValues","domainValue","max","yMaxValue","min","yMinValue","includes","_getAriaLabel","xValue","xAxisCalloutData","pointValues","pt","yValue","join","lineValues","ln","ariaLabel","_getCustomizedCallout","_isHavingLines","some","onRenderCalloutPerStack","onRenderCalloutPerDataPoint","_renderCallout","_toFocusWholeStack","isCalloutForStack","shouldFocusStackOnly","_getDomainNRangeValues","points","chartType","isRTL","xAxisType","tickValues","shiftX","domainNRangeValue","NumericAxis","domainRangeOfVSBCNumeric","DateAxis","domainRangeOfDateForAreaLineVerticalBarChart","domainRangeOfXStringAxis","linesData","formattedLineData","index","line","lineObject","Object","keys","_createLines","yScalePrimary","yScaleSecondary","lines","borderForLines","dots","lineBorderWidth","lineOptions","Number","parseFloat","toString","xScaleBandwidthTranslate","bandwidth","shouldHighlight","i","x1","useSecondaryYScale","y1","x2","y2","key","opacity","strokeWidth","fill","strokeLinecap","stroke","tokens","colorNeutralBackground1","transform","strokeDasharray","onMouseOver","_lineHover","bind","onMouseLeave","circlePoint","subIndex","circleRef","refElement","noBarsAndLinesActive","circle","cx","cy","_onStackHover","r","_getCircleVisibilityAndRadius","radius","visibility","ref","e","tabIndex","hideTooltip","onFocus","_lineFocus","onBlur","_handleMouseOut","role","ChartPopover","culture","XValue","YValue","_onRectHover","persist","_onRectFocusHover","chartDataPoint","xAxisDataPoint","_onRectFocus","_onStackFocus","groupRef","_getBarGapAndScale","bars","defaultTotalHeight","barGapMax","totalData","reduce","iter","value","abs","totalHeight","sumOfPercent","scalingRatio","gaps","gapHeight","heightValueScale","absStackTotal","yDomain","d3ScaleLinear","domain","range","bottom","xMax","d3Max","xMin","d3Min","nice","right","sDate","lDate","d3ScaleUtc","d3ScaleTime","d3ScaleBand","paddingInner","paddingOuter","_isChartEmpty","newX","newY","threshold","distance","sqrt","pow","_getDomainMargins","totalWidth","barGapRate","isScalePaddingDefined","reqWidth","mode","margin1","step","calculateLongestLabelWidth","margin2","calculateAppropriateBarWidth","_getChartTitle","chartTitle","numLines","classes","useVerticalStackedBarChartStyles","barCornerRadius","barMinimumHeight","shouldFocusWholeStack","indexNumber","xPoint","barTotalValue","barsToDisplay","yBaseline","yPositiveStart","yNegativeStart","yPoint","heightOfLastBar","singleBar","startColor","rectFocusProps","onMouseMove","onClick","barHeight","minHeight","gapOffset","path","className","opacityChangeOnHover","d","rx","roundCorners","cursor","rect","stackFocusProps","showLabel","barLabel","hideLabels","g","id","text","textAnchor","aria-label","yAxisTickFormat","formatScientificLimitWidth","showXAxisLablesTooltip","document","getElementById","remove","wrapXAxisLables","xAxisElement","d3Select","call","tooltipProps","tooltipCls","tooltip","axis","tooltipOfAxislabels","bar","_getMinMaxOfYAxis","yAxisType","findVSBCNumericMinMaxOfY","values","startValue","endValue","legendBars","calloutProps","getAccessibleDataObject","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","tickFormat","CartesianChart","ChartTypes","getMinMaxOfYAxis","createYAxis","createNumericYAxis","datasetForXAxisDomain","getDomainNRangeValues","createStringYAxis","barwidth","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","children","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -62,8 +62,7 @@ const FocusableTooltipText = /*#__PURE__*/ _react.forwardRef((props, forwardedRe
62
62
  getTargetElement
63
63
  ]);
64
64
  return /*#__PURE__*/ _react.createElement("div", {
65
- className: props.className,
66
- tabIndex: 0
65
+ className: props.className
67
66
  }, /*#__PURE__*/ _react.createElement(_reacttooltip.Tooltip, {
68
67
  content: props.content,
69
68
  relationship: "description"
@@ -1 +1 @@
1
- {"version":3,"sources":["FocusableTooltipText.tsx"],"sourcesContent":["/* eslint-disable no-restricted-globals */\nimport * as React from 'react';\nimport { useCallback, useState, useEffect, useRef } from 'react';\nimport { Tooltip } from '@fluentui/react-tooltip';\nimport { hasOverflow } from './overflow-utils';\nimport { getAccessibleDataObject } from './index';\nimport { AccessibilityProps } from '../types/index';\nimport { Async } from './async-utils';\n\ninterface IFocusableTooltipTextProps {\n className?: string;\n content: string | JSX.Element | JSX.Element[];\n accessibilityData?: AccessibilityProps;\n}\n\nexport const FocusableTooltipText: React.FunctionComponent<IFocusableTooltipTextProps> = React.forwardRef<\n HTMLDivElement,\n IFocusableTooltipTextProps\n>((props, forwardedRef) => {\n const [textOverflow, setTextOverflow] = useState(false);\n const tooltipChild = useRef<HTMLSpanElement>(null);\n const async = useRef(new Async()).current;\n const resizeObserver = useRef<ResizeObserver>();\n\n const getTargetElement = useCallback((): HTMLElement | undefined => {\n if (!tooltipChild.current || !tooltipChild.current.parentElement) {\n return undefined;\n }\n return tooltipChild.current.parentElement;\n }, [tooltipChild]);\n\n const checkTextOverflow = useCallback(() => {\n const overflowElement = getTargetElement();\n const isTextOverflow = !!overflowElement && hasOverflow(overflowElement);\n if (isTextOverflow !== textOverflow) {\n setTextOverflow(isTextOverflow);\n }\n }, [getTargetElement, textOverflow, setTextOverflow]);\n\n useEffect(() => {\n checkTextOverflow();\n }, [checkTextOverflow]);\n\n useEffect(() => {\n // setup part executed only when the component mounts/updates\n const overflowElement = getTargetElement();\n if (window.ResizeObserver && overflowElement) {\n resizeObserver.current = new window.ResizeObserver(async.debounce(checkTextOverflow, 500));\n resizeObserver.current.observe(overflowElement);\n }\n // cleanup part executed only when the component unmounts\n return () => {\n resizeObserver.current?.disconnect();\n async.dispose();\n };\n }, [async, checkTextOverflow, getTargetElement]);\n\n return (\n <div className={props.className} tabIndex={0}>\n <Tooltip content={props.content} relationship=\"description\">\n <span {...getAccessibleDataObject(props.accessibilityData)} ref={tooltipChild} data-is-focusable={textOverflow}>\n {props.content}\n </span>\n </Tooltip>\n </div>\n );\n});\n"],"names":["FocusableTooltipText","React","forwardRef","props","forwardedRef","textOverflow","setTextOverflow","useState","tooltipChild","useRef","async","Async","current","resizeObserver","getTargetElement","useCallback","parentElement","undefined","checkTextOverflow","overflowElement","isTextOverflow","hasOverflow","useEffect","window","ResizeObserver","debounce","observe","disconnect","dispose","createElement","div","className","tabIndex","Tooltip","content","relationship","span","getAccessibleDataObject","accessibilityData","ref","data-is-focusable"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,wCAAwC;;;;+BAe3BA;;;eAAAA;;;;iEAdU;8BAEC;+BACI;uBACY;4BAElB;AAQf,MAAMA,uBAAAA,WAAAA,GAA4EC,OAAMC,UAAU,CAGvG,CAACC,OAAOC;IACR,MAAM,CAACC,cAAcC,gBAAgB,GAAGC,IAAAA,eAAAA,EAAS;IACjD,MAAMC,eAAeC,IAAAA,aAAAA,EAAwB;IAC7C,MAAMC,QAAQD,IAAAA,aAAAA,EAAO,IAAIE,iBAAAA,IAASC,OAAO;IACzC,MAAMC,iBAAiBJ,IAAAA,aAAAA;IAEvB,MAAMK,mBAAmBC,IAAAA,kBAAAA,EAAY;QACnC,IAAI,CAACP,aAAaI,OAAO,IAAI,CAACJ,aAAaI,OAAO,CAACI,aAAa,EAAE;YAChE,OAAOC;QACT;QACA,OAAOT,aAAaI,OAAO,CAACI,aAAa;IAC3C,GAAG;QAACR;KAAa;IAEjB,MAAMU,oBAAoBH,IAAAA,kBAAAA,EAAY;QACpC,MAAMI,kBAAkBL;QACxB,MAAMM,iBAAiB,CAAC,CAACD,mBAAmBE,IAAAA,0BAAAA,EAAYF;QACxD,IAAIC,mBAAmBf,cAAc;YACnCC,gBAAgBc;QAClB;IACF,GAAG;QAACN;QAAkBT;QAAcC;KAAgB;IAEpDgB,IAAAA,gBAAAA,EAAU;QACRJ;IACF,GAAG;QAACA;KAAkB;IAEtBI,IAAAA,gBAAAA,EAAU;QACR,6DAA6D;QAC7D,MAAMH,kBAAkBL;QACxB,IAAIS,OAAOC,cAAc,IAAIL,iBAAiB;YAC5CN,eAAeD,OAAO,GAAG,IAAIW,OAAOC,cAAc,CAACd,MAAMe,QAAQ,CAACP,mBAAmB;YACrFL,eAAeD,OAAO,CAACc,OAAO,CAACP;QACjC;QACA,yDAAyD;QACzD,OAAO;gBACLN;YAAAA,CAAAA,0BAAAA,eAAeD,OAAO,AAAPA,MAAO,QAAtBC,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,wBAAwBc,UAAU;YAClCjB,MAAMkB,OAAO;QACf;IACF,GAAG;QAAClB;QAAOQ;QAAmBJ;KAAiB;IAE/C,OAAA,WAAA,GACEb,OAAA4B,aAAA,CAACC,OAAAA;QAAIC,WAAW5B,MAAM4B,SAAS;QAAEC,UAAU;qBACzC/B,OAAA4B,aAAA,CAACI,qBAAAA,EAAAA;QAAQC,SAAS/B,MAAM+B,OAAO;QAAEC,cAAa;qBAC5ClC,OAAA4B,aAAA,CAACO,QAAAA;QAAM,GAAGC,IAAAA,8BAAAA,EAAwBlC,MAAMmC,iBAAiB,CAAC;QAAEC,KAAK/B;QAAcgC,qBAAmBnC;OAC/FF,MAAM+B,OAAO;AAKxB"}
1
+ {"version":3,"sources":["FocusableTooltipText.tsx"],"sourcesContent":["/* eslint-disable no-restricted-globals */\nimport * as React from 'react';\nimport { useCallback, useState, useEffect, useRef } from 'react';\nimport { Tooltip } from '@fluentui/react-tooltip';\nimport { hasOverflow } from './overflow-utils';\nimport { getAccessibleDataObject } from './index';\nimport { AccessibilityProps } from '../types/index';\nimport { Async } from './async-utils';\n\ninterface IFocusableTooltipTextProps {\n className?: string;\n content: string | JSX.Element | JSX.Element[];\n accessibilityData?: AccessibilityProps;\n}\n\nexport const FocusableTooltipText: React.FunctionComponent<IFocusableTooltipTextProps> = React.forwardRef<\n HTMLDivElement,\n IFocusableTooltipTextProps\n>((props, forwardedRef) => {\n const [textOverflow, setTextOverflow] = useState(false);\n const tooltipChild = useRef<HTMLSpanElement>(null);\n const async = useRef(new Async()).current;\n const resizeObserver = useRef<ResizeObserver>();\n\n const getTargetElement = useCallback((): HTMLElement | undefined => {\n if (!tooltipChild.current || !tooltipChild.current.parentElement) {\n return undefined;\n }\n return tooltipChild.current.parentElement;\n }, [tooltipChild]);\n\n const checkTextOverflow = useCallback(() => {\n const overflowElement = getTargetElement();\n const isTextOverflow = !!overflowElement && hasOverflow(overflowElement);\n if (isTextOverflow !== textOverflow) {\n setTextOverflow(isTextOverflow);\n }\n }, [getTargetElement, textOverflow, setTextOverflow]);\n\n useEffect(() => {\n checkTextOverflow();\n }, [checkTextOverflow]);\n\n useEffect(() => {\n // setup part executed only when the component mounts/updates\n const overflowElement = getTargetElement();\n if (window.ResizeObserver && overflowElement) {\n resizeObserver.current = new window.ResizeObserver(async.debounce(checkTextOverflow, 500));\n resizeObserver.current.observe(overflowElement);\n }\n // cleanup part executed only when the component unmounts\n return () => {\n resizeObserver.current?.disconnect();\n async.dispose();\n };\n }, [async, checkTextOverflow, getTargetElement]);\n\n return (\n <div className={props.className}>\n <Tooltip content={props.content} relationship=\"description\">\n <span {...getAccessibleDataObject(props.accessibilityData)} ref={tooltipChild} data-is-focusable={textOverflow}>\n {props.content}\n </span>\n </Tooltip>\n </div>\n );\n});\n"],"names":["FocusableTooltipText","React","forwardRef","props","forwardedRef","textOverflow","setTextOverflow","useState","tooltipChild","useRef","async","Async","current","resizeObserver","getTargetElement","useCallback","parentElement","undefined","checkTextOverflow","overflowElement","isTextOverflow","hasOverflow","useEffect","window","ResizeObserver","debounce","observe","disconnect","dispose","createElement","div","className","Tooltip","content","relationship","span","getAccessibleDataObject","accessibilityData","ref","data-is-focusable"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,wCAAwC;;;;+BAe3BA;;;eAAAA;;;;iEAdU;8BAEC;+BACI;uBACY;4BAElB;AAQf,MAAMA,uBAAAA,WAAAA,GAA4EC,OAAMC,UAAU,CAGvG,CAACC,OAAOC;IACR,MAAM,CAACC,cAAcC,gBAAgB,GAAGC,IAAAA,eAAAA,EAAS;IACjD,MAAMC,eAAeC,IAAAA,aAAAA,EAAwB;IAC7C,MAAMC,QAAQD,IAAAA,aAAAA,EAAO,IAAIE,iBAAAA,IAASC,OAAO;IACzC,MAAMC,iBAAiBJ,IAAAA,aAAAA;IAEvB,MAAMK,mBAAmBC,IAAAA,kBAAAA,EAAY;QACnC,IAAI,CAACP,aAAaI,OAAO,IAAI,CAACJ,aAAaI,OAAO,CAACI,aAAa,EAAE;YAChE,OAAOC;QACT;QACA,OAAOT,aAAaI,OAAO,CAACI,aAAa;IAC3C,GAAG;QAACR;KAAa;IAEjB,MAAMU,oBAAoBH,IAAAA,kBAAAA,EAAY;QACpC,MAAMI,kBAAkBL;QACxB,MAAMM,iBAAiB,CAAC,CAACD,mBAAmBE,IAAAA,0BAAAA,EAAYF;QACxD,IAAIC,mBAAmBf,cAAc;YACnCC,gBAAgBc;QAClB;IACF,GAAG;QAACN;QAAkBT;QAAcC;KAAgB;IAEpDgB,IAAAA,gBAAAA,EAAU;QACRJ;IACF,GAAG;QAACA;KAAkB;IAEtBI,IAAAA,gBAAAA,EAAU;QACR,6DAA6D;QAC7D,MAAMH,kBAAkBL;QACxB,IAAIS,OAAOC,cAAc,IAAIL,iBAAiB;YAC5CN,eAAeD,OAAO,GAAG,IAAIW,OAAOC,cAAc,CAACd,MAAMe,QAAQ,CAACP,mBAAmB;YACrFL,eAAeD,OAAO,CAACc,OAAO,CAACP;QACjC;QACA,yDAAyD;QACzD,OAAO;gBACLN;YAAAA,CAAAA,0BAAAA,eAAeD,OAAO,AAAPA,MAAO,QAAtBC,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,wBAAwBc,UAAU;YAClCjB,MAAMkB,OAAO;QACf;IACF,GAAG;QAAClB;QAAOQ;QAAmBJ;KAAiB;IAE/C,OAAA,WAAA,GACEb,OAAA4B,aAAA,CAACC,OAAAA;QAAIC,WAAW5B,MAAM4B,SAAS;qBAC7B9B,OAAA4B,aAAA,CAACG,qBAAAA,EAAAA;QAAQC,SAAS9B,MAAM8B,OAAO;QAAEC,cAAa;qBAC5CjC,OAAA4B,aAAA,CAACM,QAAAA;QAAM,GAAGC,IAAAA,8BAAAA,EAAwBjC,MAAMkC,iBAAiB,CAAC;QAAEC,KAAK9B;QAAc+B,qBAAmBlC;OAC/FF,MAAM8B,OAAO;AAKxB"}