@fluentui/react-charts 9.1.1 → 9.1.2

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 (73) hide show
  1. package/CHANGELOG.md +24 -2
  2. package/dist/index.d.ts +66 -5
  3. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  4. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +4 -4
  5. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  6. package/lib/components/DeclarativeChart/DeclarativeChart.js +25 -13
  7. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  8. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +7 -1
  9. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  10. package/lib/components/DonutChart/useDonutChartStyles.styles.js +3 -3
  11. package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  12. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +4 -4
  13. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  14. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +1 -1
  15. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  16. package/lib/components/LineChart/eventAnnotation/LabelLink.js +2 -1
  17. package/lib/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  18. package/lib/components/ResponsiveContainer/ResponsiveContainer.js +51 -22
  19. package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
  20. package/lib/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
  21. package/lib/components/ResponsiveContainer/index.js +2 -0
  22. package/lib/components/ResponsiveContainer/index.js.map +1 -1
  23. package/lib/components/ResponsiveContainer/withResponsiveContainer.js +19 -0
  24. package/lib/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -0
  25. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +3 -3
  26. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  27. package/lib/components/VerticalBarChart/VerticalBarChart.js +1 -1
  28. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  29. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +1 -1
  30. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  31. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
  32. package/lib/utilities/SVGTooltipText.js +3 -3
  33. package/lib/utilities/SVGTooltipText.js.map +1 -1
  34. package/lib/utilities/utilities.js +2 -2
  35. package/lib/utilities/utilities.js.map +1 -1
  36. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  37. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +5 -5
  38. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  39. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +25 -13
  40. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  41. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +7 -1
  42. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  43. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +4 -4
  44. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  45. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +6 -4
  46. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  47. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +1 -1
  48. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  49. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js +2 -1
  50. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  51. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js +47 -21
  52. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
  53. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
  54. package/lib-commonjs/components/ResponsiveContainer/index.js +2 -0
  55. package/lib-commonjs/components/ResponsiveContainer/index.js.map +1 -1
  56. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js +27 -0
  57. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -0
  58. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +4 -4
  59. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  60. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +1 -1
  61. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  62. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +1 -1
  63. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  64. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
  65. package/lib-commonjs/utilities/SVGTooltipText.js +3 -3
  66. package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
  67. package/lib-commonjs/utilities/utilities.js +2 -2
  68. package/lib-commonjs/utilities/utilities.js.map +1 -1
  69. package/package.json +10 -10
  70. package/lib/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js +0 -23
  71. package/lib/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js.map +0 -1
  72. package/lib-commonjs/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js +0 -47
  73. package/lib-commonjs/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js.map +0 -1
@@ -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} from '../../index';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfXAxislabels,\n formatScientificLimitWidth,\n getBarWidth,\n getScalePadding,\n isScalePaddingDefined,\n calculateAppropriateBarWidth,\n formatDate,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n DataVizPalette,\n getColorFromToken,\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 _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\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 || 0);\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 yScale: NumericScale,\n containerHeight: number,\n containerWidth: number,\n secondaryYScale?: 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 && secondaryYScale;\n const y1 = useSecondaryYScale ? secondaryYScale!(lineObject[item][i - 1].y) : yScale(lineObject[item][i - 1].y);\n const x2 = xScale(lineObject[item][i].xItem.xAxisPoint);\n const y2 = useSecondaryYScale ? secondaryYScale!(lineObject[item][i].y) : yScale(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 dots.push(\n <circle\n key={`${index}-${subIndex}-dot`}\n cx={xScale(circlePoint.xItem.xAxisPoint)}\n cy={\n circlePoint.useSecondaryYScale && secondaryYScale ? secondaryYScale(circlePoint.y) : yScale(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 data-is-focusable={_isLegendHighlighted(item)}\n ref={e => (circleRef.refElement = e)}\n onFocus={_lineFocus.bind(circlePoint, circleRef)}\n onBlur={_lineHoverOut}\n tabIndex={circlePoint.legend !== '' ? 0 : undefined}\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(lineData: LinePoint, ref: { refElement: SVGCircleElement | null }) {\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 adjustedTotalHeight: 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 ?? yBarScale(totalData);\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 adjustedTotalHeight: sumOfPercent,\n } as const;\n }\n\n function _getScales(containerHeight: number, containerWidth: number) {\n const yMax = _yMax;\n const yBarScale = d3ScaleLinear()\n .domain([0, yMax])\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 let yPoint = containerHeight - _margins.bottom!;\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, adjustedTotalHeight } = _getBarGapAndScale(barsToDisplay, yBarScale);\n\n if (heightValueScale < 0) {\n return undefined;\n }\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 'data-is-focusable': !props.hideTooltip && shouldHighlight,\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 };\n\n let barHeight = heightValueScale * point.data;\n if (barHeight < Math.max((heightValueScale * adjustedTotalHeight) / 100.0, barMinimumHeight)) {\n barHeight = Math.max((heightValueScale * adjustedTotalHeight) / 100.0, barMinimumHeight);\n }\n yPoint = yPoint - barHeight - (index ? gapHeight : 0);\n barTotalValue += point.data;\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 'data-is-focusable': !props.hideTooltip,\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 };\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\n id={`${indexNumber}-singleBar`}\n ref={e => (groupRef.refElement = e)}\n {...stackFocusProps}\n tabIndex={!props.hideTooltip ? 0 : undefined}\n >\n {singleBar}\n </g>\n {!props.hideLabels && _barWidth >= 16 && showLabel && (\n <text\n x={xPoint + _barWidth / 2}\n y={yPoint - 6}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-label={`Total: ${barLabel}`}\n role=\"img\"\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n >\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 xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return bars.filter((bar): bar is JSX.Element => !!bar);\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 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.yScale!,\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","_calloutAnchorPoint","_domainMargin","_xAxisInnerPadding","_xAxisOuterPadding","cartesianChartRef","React","useRef","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","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","secondaryYScale","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","circle","cx","cy","_onStackHover","r","_getCircleVisibilityAndRadius","radius","visibility","data-is-focusable","ref","e","onFocus","_lineFocus","onBlur","tabIndex","ChartPopover","culture","XValue","YValue","_onRectHover","persist","_onRectFocusHover","chartDataPoint","xAxisDataPoint","_onRectFocus","_onStackFocus","groupRef","_handleMouseOut","_getBarGapAndScale","bars","defaultTotalHeight","barGapMax","totalData","reduce","iter","value","abs","totalHeight","sumOfPercent","scalingRatio","gaps","gapHeight","min","heightValueScale","adjustedTotalHeight","yMax","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","yPoint","xPoint","barTotalValue","barsToDisplay","singleBar","startColor","rectFocusProps","hideTooltip","onMouseMove","onClick","role","barHeight","path","className","opacityChangeOnHover","d","rx","roundCorners","cursor","rect","stackFocusProps","showLabel","barLabel","hideLabels","g","id","text","textAnchor","aria-label","formatScientificLimitWidth","showXAxisLablesTooltip","document","getElementById","remove","wrapXAxisLables","xAxisElement","d3Select","call","tooltipProps","tooltipCls","tooltip","xAxis","tooltipOfXAxislabels","bar","legendBars","calloutProps","getAccessibleDataObject","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","tickValues","tickFormat","CartesianChart","points","chartType","ChartTypes","xAxisType","datasetForXAxisDomain","barwidth","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","children","yScaleSecondary","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} from '../../index';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfXAxislabels,\n formatScientificLimitWidth,\n getBarWidth,\n getScalePadding,\n isScalePaddingDefined,\n calculateAppropriateBarWidth,\n formatDate,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n DataVizPalette,\n getColorFromToken,\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 _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\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 || 0);\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 yScale: NumericScale,\n containerHeight: number,\n containerWidth: number,\n secondaryYScale?: 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 && secondaryYScale;\n const y1 = useSecondaryYScale ? secondaryYScale!(lineObject[item][i - 1].y) : yScale(lineObject[item][i - 1].y);\n const x2 = xScale(lineObject[item][i].xItem.xAxisPoint);\n const y2 = useSecondaryYScale ? secondaryYScale!(lineObject[item][i].y) : yScale(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 dots.push(\n <circle\n key={`${index}-${subIndex}-dot`}\n cx={xScale(circlePoint.xItem.xAxisPoint)}\n cy={\n circlePoint.useSecondaryYScale && secondaryYScale ? secondaryYScale(circlePoint.y) : yScale(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 data-is-focusable={_isLegendHighlighted(item)}\n ref={e => (circleRef.refElement = e)}\n onFocus={_lineFocus.bind(circlePoint, circleRef)}\n onBlur={_lineHoverOut}\n tabIndex={circlePoint.legend !== '' ? 0 : undefined}\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(lineData: LinePoint, ref: { refElement: SVGCircleElement | null }) {\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 adjustedTotalHeight: 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 ?? yBarScale(totalData);\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 adjustedTotalHeight: sumOfPercent,\n } as const;\n }\n\n function _getScales(containerHeight: number, containerWidth: number) {\n const yMax = _yMax;\n const yBarScale = d3ScaleLinear()\n .domain([0, yMax])\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 let yPoint = containerHeight - _margins.bottom!;\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, adjustedTotalHeight } = _getBarGapAndScale(barsToDisplay, yBarScale);\n\n if (heightValueScale < 0) {\n return undefined;\n }\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 'data-is-focusable': !props.hideTooltip && shouldHighlight,\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 };\n\n let barHeight = heightValueScale * point.data;\n if (barHeight < Math.max((heightValueScale * adjustedTotalHeight) / 100.0, barMinimumHeight)) {\n barHeight = Math.max((heightValueScale * adjustedTotalHeight) / 100.0, barMinimumHeight);\n }\n yPoint = yPoint - barHeight - (index ? gapHeight : 0);\n barTotalValue += point.data;\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 'data-is-focusable': !props.hideTooltip,\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 };\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\n id={`${indexNumber}-singleBar`}\n ref={e => (groupRef.refElement = e)}\n {...stackFocusProps}\n tabIndex={!props.hideTooltip ? 0 : undefined}\n >\n {singleBar}\n </g>\n {!props.hideLabels && _barWidth >= 16 && showLabel && (\n <text\n x={xPoint + _barWidth / 2}\n y={yPoint - 6}\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 xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return bars.filter((bar): bar is JSX.Element => !!bar);\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 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.yScale!,\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","_calloutAnchorPoint","_domainMargin","_xAxisInnerPadding","_xAxisOuterPadding","cartesianChartRef","React","useRef","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","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","secondaryYScale","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","circle","cx","cy","_onStackHover","r","_getCircleVisibilityAndRadius","radius","visibility","data-is-focusable","ref","e","onFocus","_lineFocus","onBlur","tabIndex","ChartPopover","culture","XValue","YValue","_onRectHover","persist","_onRectFocusHover","chartDataPoint","xAxisDataPoint","_onRectFocus","_onStackFocus","groupRef","_handleMouseOut","_getBarGapAndScale","bars","defaultTotalHeight","barGapMax","totalData","reduce","iter","value","abs","totalHeight","sumOfPercent","scalingRatio","gaps","gapHeight","min","heightValueScale","adjustedTotalHeight","yMax","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","yPoint","xPoint","barTotalValue","barsToDisplay","singleBar","startColor","rectFocusProps","hideTooltip","onMouseMove","onClick","role","barHeight","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","xAxis","tooltipOfXAxislabels","bar","legendBars","calloutProps","getAccessibleDataObject","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","tickValues","tickFormat","CartesianChart","points","chartType","ChartTypes","xAxisType","datasetForXAxisDomain","barwidth","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","children","yScaleSecondary","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["VerticalStackedBarChart.types.ts"],"sourcesContent":["import * as React from 'react';\n//import { ICalloutProps } from '@fluentui/react/lib/Callout';\nimport { RenderFunction } from '../../utilities/index';\nimport {\n CartesianChartProps,\n CartesianChartStyleProps,\n CartesianChartStyles,\n LineChartLineOptions,\n VerticalStackedChartProps,\n VSChartDataPoint,\n} from '../../index';\n\n/**\n * Vertical Stacked Bar Chart properties\n * {@docCategory VerticalStackedBarChart}\n */\nexport interface VerticalStackedBarChartProps extends CartesianChartProps {\n /**\n * Data to render in the chart.\n */\n data: VerticalStackedChartProps[];\n\n /**\n * Width of each bar in the chart. When set to `undefined` or `'default'`, the bar width defaults to 16px,\n * which may decrease to prevent overlap. When set to `'auto'`, the bar width is calculated from padding values.\n */\n barWidth?: number | 'default' | 'auto';\n\n /**\n * Gap (max) between bars in a stack. When non-zero, the bars in a stack will\n * be separated by gaps. The actual size of each gap is calculated as 20% of\n * the height of that stack, with a minimum size of 1px and a maximum given by\n * this prop.\n * @default 0\n */\n barGapMax?: number;\n\n /**\n * Corner radius of the bars\n * @default 0\n */\n barCornerRadius?: number;\n\n /**\n * The minimum height of a bar; bars below this height will be displayed at\n * this height. Note that this setting will result in the height of these data\n * points not being to scale.\n * @default 0\n */\n barMinimumHeight?: number;\n\n /**\n * chart title for the chart\n */\n chartTitle?: string;\n\n /**\n * To display multi stack callout or single callout\n * @default flase\n */\n isCalloutForStack?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: VerticalStackedBarChartStyles;\n\n /**\n * Define a custom callout renderer for a stack; default is to render per data point\n */\n onRenderCalloutPerStack?: RenderFunction<VerticalStackedChartProps>;\n\n /**\n * Define a custom callout renderer for a data point\n */\n onRenderCalloutPerDataPoint?: RenderFunction<VSChartDataPoint>;\n\n /**\n * yMinValue is not supported for bar charts, so only allow \"undefined\"\n */\n yMinValue?: undefined;\n\n /**\n * Allow hover actions on the legend\n * @default true\n */\n allowHoverOnLegend?: boolean;\n\n /**\n * Click handler for bars; type of data is dependant on isCalloutForStack\n */\n onBarClick?: (event: React.MouseEvent<SVGElement>, data: VerticalStackedChartProps | VSChartDataPoint) => void;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n\n /**\n * it's padding between bar's or lines in the graph\n */\n xAxisPadding?: number;\n\n /**\n * options for the line drawn\n */\n lineOptions?: LineChartLineOptions;\n\n /**\n * Prop to hide the bar labels\n * @default false\n */\n hideLabels?: boolean;\n\n /**\n * Maximum width of a bar, in pixels.\n * @default 24\n */\n maxBarWidth?: number;\n\n /**\n * Padding between bars as a fraction of the [step](https://d3js.org/d3-scale/band#band_step).\n * Takes a number in the range [0, 1]. Only applicable to string x-axis.\n * @default 2/3\n */\n xAxisInnerPadding?: number;\n\n /**\n * Padding before the first bar and after the last bar as a fraction of\n * the [step](https://d3js.org/d3-scale/band#band_step). Takes a number in the range [0, 1].\n * Only applicable to string x-axis.\n */\n xAxisOuterPadding?: number;\n\n /**\n * @default false\n * The prop used to enable gradient fill color for the chart.\n */\n enableGradient?: boolean;\n\n /**\n * @default false\n * The prop used to enable rounded corners for the chart.\n */\n roundCorners?: boolean;\n\n /**\n * Specifies the mode of the chart.\n * @default 'default'\n */\n mode?: 'default' | 'plotly';\n}\n\n/**\n * Vertical Stacked Bar Chart style properties\n * {@docCategory VerticalStackedBarChart}\n */\nexport interface VerticalStackedBarChartStyleProps extends CartesianChartStyleProps {}\n\n/**\n * Vertical Stacked Bar Chart styles\n * {@docCategory VerticalStackedBarChart}\n */\nexport interface VerticalStackedBarChartStyles extends CartesianChartStyles {\n /**\n * Style to change the opacity of bars in dataviz when we hover on a single bar or legends\n */\n opacityChangeOnHover?: string;\n\n /**\n * Style for the bar labels\n */\n barLabel: string;\n}\n"],"names":[],"rangeMappings":";;;;;","mappings":";;;;;iEAAuB"}
1
+ {"version":3,"sources":["VerticalStackedBarChart.types.ts"],"sourcesContent":["import * as React from 'react';\n//import { ICalloutProps } from '@fluentui/react/lib/Callout';\nimport { RenderFunction } from '../../utilities/index';\nimport {\n CartesianChartProps,\n CartesianChartStyleProps,\n CartesianChartStyles,\n LineChartLineOptions,\n VerticalStackedChartProps,\n VSChartDataPoint,\n} from '../../index';\n\n/**\n * Vertical Stacked Bar Chart properties\n * {@docCategory VerticalStackedBarChart}\n */\nexport interface VerticalStackedBarChartProps extends CartesianChartProps {\n /**\n * Data to render in the chart.\n */\n data: VerticalStackedChartProps[];\n\n /**\n * Width of each bar in the chart. When set to `undefined` or `'default'`, the bar width defaults to 16px,\n * which may decrease to prevent overlap. When set to `'auto'`, the bar width is calculated from padding values.\n */\n barWidth?: number | 'default' | 'auto';\n\n /**\n * Gap (max) between bars in a stack. When non-zero, the bars in a stack will\n * be separated by gaps. The actual size of each gap is calculated as 20% of\n * the height of that stack, with a minimum size of 1px and a maximum given by\n * this prop.\n * @default 0\n */\n barGapMax?: number;\n\n /**\n * Corner radius of the bars\n * @default 0\n */\n barCornerRadius?: number;\n\n /**\n * The minimum height of a bar; bars below this height will be displayed at\n * this height. Note that this setting will result in the height of these data\n * points not being to scale.\n * @default 0\n */\n barMinimumHeight?: number;\n\n /**\n * chart title for the chart\n */\n chartTitle?: string;\n\n /**\n * To display multi stack callout or single callout\n * @default flase\n */\n isCalloutForStack?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: VerticalStackedBarChartStyles;\n\n /**\n * Define a custom callout renderer for a stack; default is to render per data point\n */\n onRenderCalloutPerStack?: RenderFunction<VerticalStackedChartProps>;\n\n /**\n * Define a custom callout renderer for a data point\n */\n onRenderCalloutPerDataPoint?: RenderFunction<VSChartDataPoint>;\n\n /**\n * yMinValue is supported for bar charts that has only lines\n */\n yMinValue?: number | undefined;\n\n /**\n * Allow hover actions on the legend\n * @default true\n */\n allowHoverOnLegend?: boolean;\n\n /**\n * Click handler for bars; type of data is dependant on isCalloutForStack\n */\n onBarClick?: (event: React.MouseEvent<SVGElement>, data: VerticalStackedChartProps | VSChartDataPoint) => void;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n\n /**\n * it's padding between bar's or lines in the graph\n */\n xAxisPadding?: number;\n\n /**\n * options for the line drawn\n */\n lineOptions?: LineChartLineOptions;\n\n /**\n * Prop to hide the bar labels\n * @default false\n */\n hideLabels?: boolean;\n\n /**\n * Maximum width of a bar, in pixels.\n * @default 24\n */\n maxBarWidth?: number;\n\n /**\n * Padding between bars as a fraction of the [step](https://d3js.org/d3-scale/band#band_step).\n * Takes a number in the range [0, 1]. Only applicable to string x-axis.\n * @default 2/3\n */\n xAxisInnerPadding?: number;\n\n /**\n * Padding before the first bar and after the last bar as a fraction of\n * the [step](https://d3js.org/d3-scale/band#band_step). Takes a number in the range [0, 1].\n * Only applicable to string x-axis.\n */\n xAxisOuterPadding?: number;\n\n /**\n * @default false\n * The prop used to enable gradient fill color for the chart.\n */\n enableGradient?: boolean;\n\n /**\n * @default false\n * The prop used to enable rounded corners for the chart.\n */\n roundCorners?: boolean;\n\n /**\n * Specifies the mode of the chart.\n * @default 'default'\n */\n mode?: 'default' | 'plotly';\n}\n\n/**\n * Vertical Stacked Bar Chart style properties\n * {@docCategory VerticalStackedBarChart}\n */\nexport interface VerticalStackedBarChartStyleProps extends CartesianChartStyleProps {}\n\n/**\n * Vertical Stacked Bar Chart styles\n * {@docCategory VerticalStackedBarChart}\n */\nexport interface VerticalStackedBarChartStyles extends CartesianChartStyles {\n /**\n * Style to change the opacity of bars in dataviz when we hover on a single bar or legends\n */\n opacityChangeOnHover?: string;\n\n /**\n * Style for the bar labels\n */\n barLabel: string;\n}\n"],"names":[],"rangeMappings":";;;;;","mappings":";;;;;iEAAuB"}
@@ -28,7 +28,7 @@ const SVGTooltipText = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
28
28
  const tooltipHostId = (0, _react.useRef)((0, _reactutilities.useId)('tooltip-host')).current;
29
29
  const ignoreNextFocusEvent = (0, _react.useRef)(false);
30
30
  const portalMountNode = (0, _reactsharedcontexts.usePortalMountNode)();
31
- const PADDING = 4;
31
+ const PADDING = 3;
32
32
  const wrapContentCallback = (0, _react.useCallback)(()=>{
33
33
  var _props_maxWidth;
34
34
  if (props.content && props.wrapContent && props.wrapContent(props.content, tooltipHostId, (_props_maxWidth = props.maxWidth) !== null && _props_maxWidth !== void 0 ? _props_maxWidth : 100, props.maxHeight)) {
@@ -153,12 +153,12 @@ const SVGTooltipText = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
153
153
  ]);
154
154
  const showTooltip = props.isTooltipVisibleProp && isOverflowing && !!props.content || isTooltipVisible && !!props.content;
155
155
  const rectX = (typeof ((_props_textProps = props.textProps) === null || _props_textProps === void 0 ? void 0 : _props_textProps.x) === 'number' ? props.textProps.x : 0) - (textWidth !== null && textWidth !== void 0 ? textWidth : 0) / 2 - PADDING;
156
- const rectY = (typeof ((_props_textProps1 = props.textProps) === null || _props_textProps1 === void 0 ? void 0 : _props_textProps1.y) === 'number' ? props.textProps.y : 0) - (textHeight !== null && textHeight !== void 0 ? textHeight : 0) / 2 - PADDING;
156
+ const rectY = (typeof ((_props_textProps1 = props.textProps) === null || _props_textProps1 === void 0 ? void 0 : _props_textProps1.y) === 'number' ? props.textProps.y : 0) - (textHeight !== null && textHeight !== void 0 ? textHeight : 0) / 2 - 2 * PADDING;
157
157
  return /*#__PURE__*/ _react.createElement(_react.Fragment, null, props.showBackground && /*#__PURE__*/ _react.createElement("rect", {
158
158
  x: rectX,
159
159
  y: rectY,
160
160
  width: (textWidth !== null && textWidth !== void 0 ? textWidth : 0) + 2 * PADDING,
161
- height: (textHeight !== null && textHeight !== void 0 ? textHeight : 0) + 2 * PADDING,
161
+ height: (textHeight !== null && textHeight !== void 0 ? textHeight : 0) + PADDING,
162
162
  transform: (_props_textProps2 = props.textProps) === null || _props_textProps2 === void 0 ? void 0 : _props_textProps2.transform,
163
163
  className: props.className
164
164
  }), /*#__PURE__*/ _react.createElement(_reacttooltip.Tooltip, {
@@ -1 +1 @@
1
- {"version":3,"sources":["SVGTooltipText.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useState, useRef, useEffect, useCallback } from 'react';\nimport { usePortalMountNode } from '@fluentui/react-shared-contexts';\nimport { Tooltip } from '@fluentui/react-tooltip';\nimport { Async } from './async-utils';\nimport { KeyCodes } from './KeyCodes';\nimport { useId } from '@fluentui/react-utilities';\n\ninterface SVGTooltipTextProps {\n closeDelay?: number;\n content: string;\n delay?: number;\n tooltipProps?: React.ComponentProps<typeof Tooltip>;\n textProps?: React.SVGAttributes<SVGTextElement>;\n maxWidth?: number;\n maxHeight?: number;\n shouldReceiveFocus?: boolean;\n isTooltipVisibleProp?: boolean;\n wrapContent?: (content: string, id: string, maxWidth: number, maxHeight?: number) => boolean;\n showBackground?: boolean;\n className?: string;\n}\n\nexport const SVGTooltipText: React.FunctionComponent<SVGTooltipTextProps> = React.forwardRef<\n HTMLDivElement,\n SVGTooltipTextProps\n>((props, forwardedRef) => {\n const [isTooltipVisible, setIsTooltipVisible] = useState(false);\n const [isOverflowing, setIsOverflowing] = useState(false);\n const [textWidth, setTextWidth] = useState(0);\n const [textHeight, setTextHeight] = useState(0);\n\n const tooltipHostRef = useRef<SVGTextElement>(null);\n const async = useRef(new Async()).current;\n const dismissTimerId = useRef<number>();\n const openTimerId = useRef<number>();\n const tooltipHostId = useRef(useId('tooltip-host')).current;\n const ignoreNextFocusEvent = useRef(false);\n const portalMountNode = usePortalMountNode();\n const PADDING = 4;\n\n const wrapContentCallback = useCallback(() => {\n if (\n props.content &&\n props.wrapContent &&\n props.wrapContent(props.content, tooltipHostId, props.maxWidth ?? 100, props.maxHeight)\n // ToDo - Specify a correct fallback value here\n ) {\n setIsOverflowing(true);\n } else {\n setIsOverflowing(false);\n }\n }, [props, tooltipHostId]);\n\n const measureText = useCallback((): void => {\n if (tooltipHostRef.current && typeof tooltipHostRef.current.getBBox === 'function') {\n const bbox = tooltipHostRef.current.getBBox();\n setTextWidth(bbox.width);\n setTextHeight(bbox.height);\n }\n }, []);\n\n useEffect(() => {\n wrapContentCallback();\n return () => {\n async.dispose();\n };\n }, [wrapContentCallback, async]);\n\n useEffect(() => {\n wrapContentCallback();\n }, [props.maxWidth, props.maxHeight, wrapContentCallback]);\n\n useEffect(() => {\n if (isTooltipVisible) {\n measureText();\n }\n }, [isTooltipVisible, measureText]);\n\n useEffect(() => {\n // Recalculate text dimensions when content or dimensions change\n measureText();\n }, [props.content, props.textProps, props.maxWidth, props.maxHeight, measureText]);\n\n const hideTooltip = useCallback(() => {\n async.clearTimeout(openTimerId.current!);\n async.clearTimeout(dismissTimerId.current!);\n setIsTooltipVisible(false);\n }, [async]);\n\n const onTooltipMouseEnter = useCallback(\n (ev: React.MouseEvent<SVGElement>) => {\n if (!isOverflowing) {\n return;\n }\n\n if (ev.target && portalMountNode?.contains(ev.target as HTMLElement)) {\n return;\n }\n\n async.clearTimeout(dismissTimerId.current!);\n async.clearTimeout(openTimerId.current!);\n\n if (props.delay !== 0) {\n openTimerId.current = async.setTimeout(() => {\n setIsTooltipVisible(true);\n }, props.delay!);\n } else {\n setIsTooltipVisible(true);\n }\n },\n [isOverflowing, portalMountNode, async, props.delay],\n );\n\n const onTooltipMouseLeave = useCallback(\n (ev: React.MouseEvent<SVGElement>) => {\n async.clearTimeout(dismissTimerId.current!);\n async.clearTimeout(openTimerId.current!);\n\n if (props.closeDelay) {\n dismissTimerId.current = async.setTimeout(() => {\n setIsTooltipVisible(false);\n }, props.closeDelay);\n } else {\n setIsTooltipVisible(false);\n }\n },\n [async, props.closeDelay],\n );\n\n const onTooltipFocus = useCallback(\n (ev: React.FocusEvent<SVGElement>) => {\n if (ignoreNextFocusEvent.current) {\n ignoreNextFocusEvent.current = false;\n return;\n }\n onTooltipMouseEnter(ev as unknown as React.MouseEvent<SVGElement>);\n },\n [onTooltipMouseEnter],\n );\n\n const onTooltipBlur = useCallback(\n (ev: React.FocusEvent<SVGElement>) => {\n ignoreNextFocusEvent.current = document?.activeElement === ev.target;\n dismissTimerId.current = async.setTimeout(() => {\n setIsTooltipVisible(false);\n }, 0);\n },\n [async],\n );\n\n const onTooltipKeyDown = useCallback(\n (ev: React.KeyboardEvent<SVGElement>) => {\n if ((ev.which === KeyCodes.escape || ev.ctrlKey) && isTooltipVisible) {\n hideTooltip();\n ev.stopPropagation();\n }\n },\n [isTooltipVisible, hideTooltip],\n );\n\n const showTooltip =\n (props.isTooltipVisibleProp && isOverflowing && !!props.content) || (isTooltipVisible && !!props.content);\n\n const rectX = (typeof props.textProps?.x === 'number' ? props.textProps.x : 0) - (textWidth ?? 0) / 2 - PADDING;\n const rectY = (typeof props.textProps?.y === 'number' ? props.textProps.y : 0) - (textHeight ?? 0) / 2 - PADDING;\n\n return (\n <>\n {props.showBackground && (\n <rect\n x={rectX}\n y={rectY}\n width={(textWidth ?? 0) + 2 * PADDING}\n height={(textHeight ?? 0) + 2 * PADDING}\n transform={props.textProps?.transform}\n className={props.className}\n />\n )}\n <Tooltip\n relationship=\"description\"\n {...props.tooltipProps}\n withArrow\n content={props.content}\n // targetElement={getTargetElement()} ToDo - This assignment is causing build failure. Needs to be fixed.\n visible={showTooltip}\n >\n <text\n {...props.textProps}\n id={tooltipHostId}\n ref={tooltipHostRef}\n onFocusCapture={onTooltipFocus}\n onBlurCapture={onTooltipBlur}\n onMouseEnter={onTooltipMouseEnter}\n onMouseLeave={onTooltipMouseLeave}\n onKeyDown={onTooltipKeyDown}\n data-is-focusable={props.shouldReceiveFocus && isOverflowing}\n >\n {props.content}\n </text>\n </Tooltip>\n </>\n );\n});\n\nSVGTooltipText.defaultProps = {\n delay: 0,\n showBackground: false,\n};\n"],"names":["SVGTooltipText","React","forwardRef","props","forwardedRef","isTooltipVisible","setIsTooltipVisible","useState","isOverflowing","setIsOverflowing","textWidth","setTextWidth","textHeight","setTextHeight","tooltipHostRef","useRef","async","Async","current","dismissTimerId","openTimerId","tooltipHostId","useId","ignoreNextFocusEvent","portalMountNode","usePortalMountNode","PADDING","wrapContentCallback","useCallback","content","wrapContent","maxWidth","maxHeight","measureText","getBBox","bbox","width","height","useEffect","dispose","textProps","hideTooltip","clearTimeout","onTooltipMouseEnter","ev","target","contains","delay","setTimeout","onTooltipMouseLeave","closeDelay","onTooltipFocus","onTooltipBlur","document","activeElement","onTooltipKeyDown","which","KeyCodes","escape","ctrlKey","stopPropagation","showTooltip","isTooltipVisibleProp","rectX","x","rectY","y","createElement","Fragment","showBackground","rect","transform","className","Tooltip","relationship","tooltipProps","withArrow","visible","text","id","ref","onFocusCapture","onBlurCapture","onMouseEnter","onMouseLeave","onKeyDown","data-is-focusable","shouldReceiveFocus","defaultProps"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["SVGTooltipText.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useState, useRef, useEffect, useCallback } from 'react';\nimport { usePortalMountNode } from '@fluentui/react-shared-contexts';\nimport { Tooltip } from '@fluentui/react-tooltip';\nimport { Async } from './async-utils';\nimport { KeyCodes } from './KeyCodes';\nimport { useId } from '@fluentui/react-utilities';\n\ninterface SVGTooltipTextProps {\n closeDelay?: number;\n content: string;\n delay?: number;\n tooltipProps?: React.ComponentProps<typeof Tooltip>;\n textProps?: React.SVGAttributes<SVGTextElement>;\n maxWidth?: number;\n maxHeight?: number;\n shouldReceiveFocus?: boolean;\n isTooltipVisibleProp?: boolean;\n wrapContent?: (content: string, id: string, maxWidth: number, maxHeight?: number) => boolean;\n showBackground?: boolean;\n className?: string;\n}\n\nexport const SVGTooltipText: React.FunctionComponent<SVGTooltipTextProps> = React.forwardRef<\n HTMLDivElement,\n SVGTooltipTextProps\n>((props, forwardedRef) => {\n const [isTooltipVisible, setIsTooltipVisible] = useState(false);\n const [isOverflowing, setIsOverflowing] = useState(false);\n const [textWidth, setTextWidth] = useState(0);\n const [textHeight, setTextHeight] = useState(0);\n\n const tooltipHostRef = useRef<SVGTextElement>(null);\n const async = useRef(new Async()).current;\n const dismissTimerId = useRef<number>();\n const openTimerId = useRef<number>();\n const tooltipHostId = useRef(useId('tooltip-host')).current;\n const ignoreNextFocusEvent = useRef(false);\n const portalMountNode = usePortalMountNode();\n const PADDING = 3;\n\n const wrapContentCallback = useCallback(() => {\n if (\n props.content &&\n props.wrapContent &&\n props.wrapContent(props.content, tooltipHostId, props.maxWidth ?? 100, props.maxHeight)\n // ToDo - Specify a correct fallback value here\n ) {\n setIsOverflowing(true);\n } else {\n setIsOverflowing(false);\n }\n }, [props, tooltipHostId]);\n\n const measureText = useCallback((): void => {\n if (tooltipHostRef.current && typeof tooltipHostRef.current.getBBox === 'function') {\n const bbox = tooltipHostRef.current.getBBox();\n setTextWidth(bbox.width);\n setTextHeight(bbox.height);\n }\n }, []);\n\n useEffect(() => {\n wrapContentCallback();\n return () => {\n async.dispose();\n };\n }, [wrapContentCallback, async]);\n\n useEffect(() => {\n wrapContentCallback();\n }, [props.maxWidth, props.maxHeight, wrapContentCallback]);\n\n useEffect(() => {\n if (isTooltipVisible) {\n measureText();\n }\n }, [isTooltipVisible, measureText]);\n\n useEffect(() => {\n // Recalculate text dimensions when content or dimensions change\n measureText();\n }, [props.content, props.textProps, props.maxWidth, props.maxHeight, measureText]);\n\n const hideTooltip = useCallback(() => {\n async.clearTimeout(openTimerId.current!);\n async.clearTimeout(dismissTimerId.current!);\n setIsTooltipVisible(false);\n }, [async]);\n\n const onTooltipMouseEnter = useCallback(\n (ev: React.MouseEvent<SVGElement>) => {\n if (!isOverflowing) {\n return;\n }\n\n if (ev.target && portalMountNode?.contains(ev.target as HTMLElement)) {\n return;\n }\n\n async.clearTimeout(dismissTimerId.current!);\n async.clearTimeout(openTimerId.current!);\n\n if (props.delay !== 0) {\n openTimerId.current = async.setTimeout(() => {\n setIsTooltipVisible(true);\n }, props.delay!);\n } else {\n setIsTooltipVisible(true);\n }\n },\n [isOverflowing, portalMountNode, async, props.delay],\n );\n\n const onTooltipMouseLeave = useCallback(\n (ev: React.MouseEvent<SVGElement>) => {\n async.clearTimeout(dismissTimerId.current!);\n async.clearTimeout(openTimerId.current!);\n\n if (props.closeDelay) {\n dismissTimerId.current = async.setTimeout(() => {\n setIsTooltipVisible(false);\n }, props.closeDelay);\n } else {\n setIsTooltipVisible(false);\n }\n },\n [async, props.closeDelay],\n );\n\n const onTooltipFocus = useCallback(\n (ev: React.FocusEvent<SVGElement>) => {\n if (ignoreNextFocusEvent.current) {\n ignoreNextFocusEvent.current = false;\n return;\n }\n onTooltipMouseEnter(ev as unknown as React.MouseEvent<SVGElement>);\n },\n [onTooltipMouseEnter],\n );\n\n const onTooltipBlur = useCallback(\n (ev: React.FocusEvent<SVGElement>) => {\n ignoreNextFocusEvent.current = document?.activeElement === ev.target;\n dismissTimerId.current = async.setTimeout(() => {\n setIsTooltipVisible(false);\n }, 0);\n },\n [async],\n );\n\n const onTooltipKeyDown = useCallback(\n (ev: React.KeyboardEvent<SVGElement>) => {\n if ((ev.which === KeyCodes.escape || ev.ctrlKey) && isTooltipVisible) {\n hideTooltip();\n ev.stopPropagation();\n }\n },\n [isTooltipVisible, hideTooltip],\n );\n\n const showTooltip =\n (props.isTooltipVisibleProp && isOverflowing && !!props.content) || (isTooltipVisible && !!props.content);\n\n const rectX = (typeof props.textProps?.x === 'number' ? props.textProps.x : 0) - (textWidth ?? 0) / 2 - PADDING;\n const rectY = (typeof props.textProps?.y === 'number' ? props.textProps.y : 0) - (textHeight ?? 0) / 2 - 2 * PADDING;\n\n return (\n <>\n {props.showBackground && (\n <rect\n x={rectX}\n y={rectY}\n width={(textWidth ?? 0) + 2 * PADDING}\n height={(textHeight ?? 0) + PADDING}\n transform={props.textProps?.transform}\n className={props.className}\n />\n )}\n <Tooltip\n relationship=\"description\"\n {...props.tooltipProps}\n withArrow\n content={props.content}\n // targetElement={getTargetElement()} ToDo - This assignment is causing build failure. Needs to be fixed.\n visible={showTooltip}\n >\n <text\n {...props.textProps}\n id={tooltipHostId}\n ref={tooltipHostRef}\n onFocusCapture={onTooltipFocus}\n onBlurCapture={onTooltipBlur}\n onMouseEnter={onTooltipMouseEnter}\n onMouseLeave={onTooltipMouseLeave}\n onKeyDown={onTooltipKeyDown}\n data-is-focusable={props.shouldReceiveFocus && isOverflowing}\n >\n {props.content}\n </text>\n </Tooltip>\n </>\n );\n});\n\nSVGTooltipText.defaultProps = {\n delay: 0,\n showBackground: false,\n};\n"],"names":["SVGTooltipText","React","forwardRef","props","forwardedRef","isTooltipVisible","setIsTooltipVisible","useState","isOverflowing","setIsOverflowing","textWidth","setTextWidth","textHeight","setTextHeight","tooltipHostRef","useRef","async","Async","current","dismissTimerId","openTimerId","tooltipHostId","useId","ignoreNextFocusEvent","portalMountNode","usePortalMountNode","PADDING","wrapContentCallback","useCallback","content","wrapContent","maxWidth","maxHeight","measureText","getBBox","bbox","width","height","useEffect","dispose","textProps","hideTooltip","clearTimeout","onTooltipMouseEnter","ev","target","contains","delay","setTimeout","onTooltipMouseLeave","closeDelay","onTooltipFocus","onTooltipBlur","document","activeElement","onTooltipKeyDown","which","KeyCodes","escape","ctrlKey","stopPropagation","showTooltip","isTooltipVisibleProp","rectX","x","rectY","y","createElement","Fragment","showBackground","rect","transform","className","Tooltip","relationship","tooltipProps","withArrow","visible","text","id","ref","onFocusCapture","onBlurCapture","onMouseEnter","onMouseLeave","onKeyDown","data-is-focusable","shouldReceiveFocus","defaultProps"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -261,7 +261,7 @@ function createNumericXAxis(xAxisParams, tickParams, chartType, culture) {
261
261
  if (hideTickOverlap && typeof xAxisCount === 'undefined') {
262
262
  const longestLabelWidth = calculateLongestLabelWidth(xAxisScale.ticks().map(tickFormat), '.fui-cart__xAxis text') + 20;
263
263
  const [start, end] = xAxisScale.range();
264
- tickCount = Math.max(1, Math.floor(Math.abs(end - start) / longestLabelWidth));
264
+ tickCount = Math.min(Math.max(1, Math.floor(Math.abs(end - start) / longestLabelWidth)), 10);
265
265
  }
266
266
  const xAxis = (0, _d3axis.axisBottom)(xAxisScale).tickSize(xAxistickSize).tickPadding(tickPadding).ticks(tickCount).tickFormat(tickFormat);
267
267
  if (chartType === 6) {
@@ -508,7 +508,7 @@ function createDateXAxis(xAxisParams, tickParams, culture, options, timeFormatLo
508
508
  };
509
509
  const longestLabelWidth = calculateLongestLabelWidth(xAxisScale.ticks().map(tickFormat), '.fui-cart__xAxis text') + 40;
510
510
  const [start, end] = xAxisScale.range();
511
- const maxPossibleTickCount = Math.max(1, Math.floor(Math.abs(end - start) / longestLabelWidth));
511
+ const maxPossibleTickCount = Math.min(Math.max(1, Math.floor(Math.abs(end - start) / longestLabelWidth)), 10);
512
512
  tickCount = Math.min(maxPossibleTickCount, xAxisCount !== null && xAxisCount !== void 0 ? xAxisCount : tickCount);
513
513
  const xAxis = (0, _d3axis.axisBottom)(xAxisScale).tickSize(xAxistickSize).tickPadding(tickPadding).ticks(tickCount).tickFormat(tickFormat);
514
514
  tickParams.tickValues ? xAxis.tickValues(tickParams.tickValues) : '';