@fluentui/react-charts 9.1.2 → 9.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +16 -2
  2. package/dist/index.d.ts +23 -1
  3. package/lib/components/AreaChart/AreaChart.js +18 -8
  4. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  5. package/lib/components/CommonComponents/CartesianChart.js +17 -13
  6. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  7. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  8. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +50 -35
  9. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  10. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +44 -18
  11. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  12. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
  13. package/lib/components/HeatMapChart/HeatMapChart.js +1 -1
  14. package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
  15. package/lib/components/LineChart/LineChart.js +40 -36
  16. package/lib/components/LineChart/LineChart.js.map +1 -1
  17. package/lib/components/ScatterChart/ScatterChart.js +1 -1
  18. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  19. package/lib/components/VerticalBarChart/VerticalBarChart.js +4 -4
  20. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  21. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +61 -23
  22. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  23. package/lib/types/DataPoint.js.map +1 -1
  24. package/lib/utilities/utilities.js +25 -34
  25. package/lib/utilities/utilities.js.map +1 -1
  26. package/lib-commonjs/components/AreaChart/AreaChart.js +16 -7
  27. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  28. package/lib-commonjs/components/CommonComponents/CartesianChart.js +17 -13
  29. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  30. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  31. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +50 -35
  32. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  33. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +43 -17
  34. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  35. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
  36. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +1 -1
  37. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
  38. package/lib-commonjs/components/LineChart/LineChart.js +40 -36
  39. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  40. package/lib-commonjs/components/ScatterChart/ScatterChart.js +1 -1
  41. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  42. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +4 -4
  43. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  44. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +60 -22
  45. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  46. package/lib-commonjs/types/DataPoint.js.map +1 -1
  47. package/lib-commonjs/utilities/utilities.js +25 -34
  48. package/lib-commonjs/utilities/utilities.js.map +1 -1
  49. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["VerticalBarChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useVerticalBarChartStyles } from './useVerticalBarChartStyles.styles';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { line as d3Line } from 'd3-shape';\nimport { select as d3Select } from 'd3-selection';\nimport {\n scaleLinear as d3ScaleLinear,\n ScaleLinear as D3ScaleLinear,\n scaleBand as d3ScaleBand,\n scaleUtc as d3ScaleUtc,\n} from 'd3-scale';\nimport { useId } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n AccessibilityProps,\n CartesianChart,\n Margins,\n Legend,\n RefArrayData,\n VerticalBarChartProps,\n VerticalBarChartDataPoint,\n Legends,\n ChildProps,\n YValueHover,\n ChartPopover,\n Chart,\n} from '../../index';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n NumericAxis,\n getTypeOfAxis,\n tooltipOfXAxislabels,\n formatScientificLimitWidth,\n getBarWidth,\n getScalePadding,\n isScalePaddingDefined,\n calculateAppropriateBarWidth,\n useRtl,\n areArraysEqual,\n calculateLongestLabelWidth,\n} from '../../utilities/index';\n\nenum CircleVisbility {\n show = 'visibility',\n hide = 'hidden',\n}\n\nconst MIN_DOMAIN_MARGIN = 8;\n\n// Create a VerticalBarChart variant which uses these default styles and this styled subcomponent.\n/**\n * VerticalBarchart component\n * {@docCategory VerticalBarChart}\n */\nexport const VerticalBarChart: React.FunctionComponent<VerticalBarChartProps> = React.forwardRef<\n HTMLDivElement,\n VerticalBarChartProps\n>((props, forwardedRef) => {\n let _points: VerticalBarChartDataPoint[] = [];\n let _barWidth: number = 0;\n let _colors: string[];\n const _refArray: RefArrayData[] = [];\n let margins: Margins;\n const _useRtl: boolean = useRtl();\n let _bars: JSX.Element[];\n let _xAxisLabels: string[];\n let _yMax: number;\n let _yMin: number;\n let _isHavingLine: boolean = _checkForLine();\n const _tooltipId: string = useId('VCTooltipID_');\n const _xAxisType: XAxisTypes =\n props.data! && props.data!.length > 0\n ? (getTypeOfAxis(props.data![0].x, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n let _calloutAnchorPoint: VerticalBarChartDataPoint | null;\n let _domainMargin: number;\n const _emptyChartId: string = useId('_VBC_empty');\n const _vbcLineId: string = useId('_VBC_line_');\n const _vbcPointId: string = useId('_VBC_point_');\n const _vbcBarId: string = useId('_VBC_bar_');\n let _xAxisInnerPadding: number = 0;\n let _xAxisOuterPadding: number = 0;\n type ColorScale = (_p?: number) => string;\n const cartesianChartRef = React.useRef<Chart>(null);\n\n const [color, setColor] = React.useState<string>('');\n const [dataForHoverCard, setDataForHoverCard] = React.useState<number>(0);\n const [activeLegend, setActiveLegend] = React.useState<string | undefined>(undefined);\n const [xCalloutValue, setXCalloutValue] = React.useState<string | undefined>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string | undefined>('');\n const [activeXdataPoint, setActiveXDatapoint] = React.useState<string | number | Date | null>(null);\n const [hoveredYValues, setYValueHover] = React.useState<YValueHover[]>();\n const [hoverXValue, setHoverXValue] = React.useState<string | number | undefined>('');\n const [calloutLegend, setCalloutLegend] = React.useState<string>('');\n const [callOutAccessibilityData, setCalloutAccessibilityData] = React.useState<AccessibilityProps>();\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<VerticalBarChartDataPoint>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const prevPropsRef = React.useRef<VerticalBarChartProps | null>(null);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n }),\n [],\n );\n\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n if (prevProps.height !== props.height || prevProps.width !== props.width) {\n _adjustProps();\n }\n }\n prevPropsRef.current = props;\n }, [props, prevPropsRef, _adjustProps]);\n\n function _createLine(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScale: any,\n containerHeight: number = 0,\n containerWidth: number = 0,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScaleSecondary?: any,\n ): React.ReactNode {\n const isStringAxis = _xAxisType === XAxisTypes.StringAxis;\n const colorScale = _createColors();\n const { data, lineLegendColor = tokens.colorPaletteYellowBackground1, lineLegendText } = props;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const lineData: Array<any> = [];\n const line: JSX.Element[] = [];\n data &&\n data.forEach((item: VerticalBarChartDataPoint, index: number) => {\n if (item.lineData && item.lineData.y) {\n lineData.push({\n x: item.x,\n y: item.lineData!.y,\n useSecondaryYScale: item.lineData!.useSecondaryYScale ?? false,\n point: item,\n index,\n });\n }\n });\n const linePath = d3Line()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => (isStringAxis ? xScale(d.x) + 0.5 * xScale.bandwidth() : xScale(d.x)))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y((d: any) => (d.useSecondaryYScale && yScaleSecondary ? yScaleSecondary(d.y) : yScale(d.y)));\n const shouldHighlight = _legendHighlighted(lineLegendText!) || _noLegendHighlighted() ? true : false;\n const lineBorderWidth = props.lineOptions?.lineBorderWidth\n ? Number.parseFloat(props.lineOptions!.lineBorderWidth!.toString())\n : 0;\n\n if (lineBorderWidth > 0) {\n line.push(\n <path\n key={_vbcLineId}\n id={_vbcLineId}\n opacity={shouldHighlight ? 1 : 0.1}\n d={linePath(lineData)!}\n fill=\"transparent\"\n strokeLinecap=\"square\"\n strokeWidth={3 + lineBorderWidth * 2}\n className={classes.lineBorder}\n />,\n );\n }\n line.push(\n <path\n key={_vbcLineId}\n id={_vbcLineId}\n opacity={shouldHighlight ? 1 : 0.1}\n d={linePath(lineData)!}\n fill=\"transparent\"\n strokeLinecap=\"square\"\n strokeWidth={3}\n stroke={lineLegendColor}\n />,\n );\n\n const dots: React.ReactNode[] = lineData.map(\n (\n item: {\n x: number | string;\n y: number;\n useSecondaryYScale: boolean;\n point: VerticalBarChartDataPoint;\n index: number;\n },\n index: number,\n ) => {\n // Create an object to store line point ref so that the object can be passed by reference to the focus handler\n const circleRef: { refElement: SVGCircleElement | null } = { refElement: null };\n return (\n <circle\n key={index}\n id={`${_vbcPointId}-${index}`}\n cx={isStringAxis ? xScale(item.x) + 0.5 * xScale.bandwidth() : xScale(item.x)}\n cy={item.useSecondaryYScale && yScaleSecondary ? yScaleSecondary(item.y) : yScale(item.y)}\n onMouseOver={event =>\n _legendHighlighted(lineLegendText!)\n ? _lineHover(item.point, event)\n : _onBarHover(item.point, colorScale(item.y), event)\n }\n onMouseOut={_onBarLeave}\n r={_getCircleVisibilityAndRadius(item.x, lineLegendText!).radius}\n stroke={lineLegendColor}\n fill={tokens.colorNeutralBackground1}\n strokeWidth={3}\n visibility={_getCircleVisibilityAndRadius(item.x, lineLegendText!).visibility}\n onClick={item.point.lineData?.onClick}\n // When no legend is highlighted: Line points are automatically displayed along with the bars\n // at the same x-axis point in the stack callout. So to prevent an increase in focusable elements\n // and avoid conveying duplicate info, make these line points non-focusable.\n data-is-focusable={_legendHighlighted(lineLegendText!)}\n ref={e => (circleRef.refElement = e)}\n onFocus={_lineFocus.bind(item.point, circleRef)}\n onBlur={_handleChartMouseLeave}\n />\n );\n },\n );\n\n return (\n <>\n {line}\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 === activeXdataPoint && _legendHighlighted(legend)) {\n return { visibility: CircleVisbility.show, radius: 8 };\n } else if (_legendHighlighted(legend)) {\n // Don't hide the circle to keep it focusable. For more information,\n // see https://fuzzbomb.github.io/accessibility-demos/visually-hidden-focus-test.html\n return { visibility: CircleVisbility.show, radius: 0.3 };\n } else {\n return { visibility: CircleVisbility.hide, radius: 0 };\n }\n } else {\n return {\n visibility: activeXdataPoint === xAxisPoint ? CircleVisbility.show : CircleVisbility.hide,\n radius: 8,\n };\n }\n }\n\n function _checkForLine(): boolean {\n const { data } = props;\n return data!.some((item: VerticalBarChartDataPoint) => item?.lineData?.y !== undefined);\n }\n\n function _adjustProps(): void {\n _points = props.data || [];\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n const defaultColors: string[] = [\n tokens.colorPaletteBlueForeground2,\n tokens.colorPaletteCornflowerForeground2,\n tokens.colorPaletteDarkGreenForeground2,\n tokens.colorPaletteNavyForeground2,\n tokens.colorPaletteDarkOrangeForeground2,\n ];\n _colors = props.colors || defaultColors;\n _isHavingLine = _checkForLine();\n _xAxisInnerPadding = getScalePadding(props.xAxisInnerPadding, props.xAxisPadding, 2 / 3);\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding, props.xAxisPadding, 0);\n }\n\n function _getMargins(_margins: Margins) {\n margins = _margins;\n }\n\n function _renderContentForBothLineAndBars(point: VerticalBarChartDataPoint): JSX.Element {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { YValueHover, hoverXValue } = _getCalloutContentForLineAndBar(point);\n const content: JSX.Element[] = YValueHover.map((item: YValueHover, index: number) => {\n return (\n <>\n <ChartPopover\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n legend={item.legend!}\n {...(index === 0 && { XValue: `${hoverXValue || item.data}` })}\n YValue={item.data || item.y}\n color={item.color}\n isCalloutForStack={false}\n />\n </>\n );\n });\n return <>{content}</>;\n }\n\n function _renderContentForOnlyBars(_props: VerticalBarChartDataPoint): JSX.Element {\n return (\n <>\n <ChartPopover\n XValue={_props.xAxisCalloutData || (_props.x as string)}\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n legend={_props.legend!}\n YValue={_props.yAxisCalloutData || _props.y}\n color={!props.useSingleColor && _props.color ? _props.color : _createColors()(_props.y)}\n isCalloutForStack={false}\n />\n </>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n function _renderCallout(props?: VerticalBarChartDataPoint): JSX.Element | null {\n return props ? (_isHavingLine ? _renderContentForBothLineAndBars(props) : _renderContentForOnlyBars(props)) : null;\n }\n\n function _getCustomizedCallout() {\n return props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps, _renderCallout)\n : null;\n }\n\n function _getGraphData(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale: any,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n ) {\n return (_bars =\n _xAxisType === XAxisTypes.NumericAxis\n ? _createNumericBars(containerHeight, containerWidth, xElement!)\n : _xAxisType === XAxisTypes.DateAxis\n ? _createDateBars(containerHeight, containerWidth, xElement!)\n : _createStringBars(containerHeight, containerWidth, xElement!));\n }\n\n function _createColors(): D3ScaleLinear<string, string> | ColorScale {\n const increment = _colors.length <= 1 ? 1 : 1 / (_colors.length - 1);\n const { useSingleColor = false } = props;\n if (useSingleColor) {\n return (_p?: number) => {\n const { colors } = props;\n return colors && colors.length > 0 ? colors[0] : tokens.colorPaletteBlueBackground2;\n };\n }\n const domainValues = [];\n for (let i = 0; i < _colors.length; i++) {\n domainValues.push(increment * i * _yMax);\n }\n const colorScale = d3ScaleLinear<string>().domain(domainValues).range(_colors);\n return colorScale;\n }\n\n function _refCallback(element: SVGRectElement, legendTitle: string): void {\n _refArray.push({ index: legendTitle, refElement: element });\n }\n\n function _getCalloutContentForLineAndBar(point: VerticalBarChartDataPoint): {\n YValueHover: YValueHover[];\n hoverXValue: string | number | undefined;\n } {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const YValueHover: YValueHover[] = [];\n const { useSingleColor = false } = props;\n const { data, lineLegendText, lineLegendColor = tokens.colorPaletteYellowBackground1 } = props;\n const selectedPoint = data!.filter((xDataPoint: VerticalBarChartDataPoint) => xDataPoint.x === point.x);\n // Check if the line legend is highlighted or no legend is highlighted\n if (\n _isHavingLine &&\n selectedPoint[0].lineData?.y !== undefined &&\n (_legendHighlighted(lineLegendText) || _noLegendHighlighted())\n ) {\n // Add callout data for the line\n YValueHover.push({\n legend: lineLegendText,\n color: lineLegendColor,\n y: selectedPoint[0].lineData?.y,\n data: selectedPoint[0].lineData?.yAxisCalloutData,\n yAxisCalloutData: selectedPoint[0].lineData?.yAxisCalloutData,\n });\n }\n // Check if the bar legend is highlighted or no legend is highlighted\n if (selectedPoint[0].legend && (selectedLegends.includes(selectedPoint[0].legend) || _noLegendHighlighted())) {\n // Add callout data for the bar\n YValueHover.push({\n legend: selectedPoint[0].legend,\n y: selectedPoint[0].y,\n color: !useSingleColor\n ? selectedPoint[0].color\n ? selectedPoint[0].color\n : _createColors()(selectedPoint[0].y)\n : _createColors()(1),\n data: selectedPoint[0].yAxisCalloutData,\n yAxisCalloutData: selectedPoint[0].yAxisCalloutData,\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const hoverXValue = point.x instanceof Date ? point.x.toLocaleString() : point.x.toString();\n return {\n YValueHover,\n hoverXValue: point.xAxisCalloutData || hoverXValue,\n };\n }\n\n function _onBarHover(\n point: VerticalBarChartDataPoint,\n // eslint-disable-next-line @typescript-eslint/no-shadow\n color: string,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void {\n mouseEvent.persist();\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { YValueHover, hoverXValue } = _getCalloutContentForLineAndBar(point);\n if (_calloutAnchorPoint !== point) {\n _calloutAnchorPoint = point;\n /** Show the callout if highlighted bar is hovered and Hide it if unhighlighted bar is hovered */\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(point.legend));\n setDataForHoverCard(point.y);\n setCalloutLegend(point.legend!);\n setColor(point.color || color);\n // To display callout value, if no callout value given, taking given point.x value as a string.\n setXCalloutValue(\n point.xAxisCalloutData || (point.x instanceof Date ? point.x.toLocaleDateString() : point.x.toString()),\n );\n setDataPointCalloutProps(point);\n // Hovering over a bar should highlight corresponding line points only when no legend is selected\n setActiveXDatapoint(_noLegendHighlighted() ? point.x : null);\n setYValueHover(YValueHover);\n setHoverXValue(hoverXValue);\n setCalloutAccessibilityData(point.callOutAccessibilityData);\n }\n }\n\n function _onBarLeave(): void {\n /**/\n }\n\n function _handleChartMouseLeave(): void {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n setActiveXDatapoint(null);\n setYValueHover([]);\n setHoverXValue('');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n function _onBarFocus(point: VerticalBarChartDataPoint, refArrayIndexNumber: number, color: string): void {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { YValueHover, hoverXValue } = _getCalloutContentForLineAndBar(point);\n _refArray.forEach((obj: RefArrayData, index: number) => {\n if (obj.index === point.legend! && refArrayIndexNumber === index) {\n /** Show the callout if highlighted bar is hovered and Hide it if unhighlighted bar is hovered */\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(point.legend));\n setDataForHoverCard(point.y);\n setCalloutLegend(point.legend!);\n setColor(point.color || color);\n // To display callout value, if no callout value given, taking given point.x value as a string.\n setXCalloutValue(\n point.xAxisCalloutData || (point.x instanceof Date ? point.x.toLocaleDateString() : point.x.toString()),\n );\n setYCalloutValue(point.yAxisCalloutData!);\n setDataPointCalloutProps(point);\n // Hovering over a bar should highlight corresponding line points only when no legend is selected\n setActiveXDatapoint(point.x);\n setYValueHover(YValueHover);\n setHoverXValue(hoverXValue);\n setCalloutAccessibilityData(point.callOutAccessibilityData);\n }\n });\n }\n\n function _lineHover(point: VerticalBarChartDataPoint, mouseEvent: React.MouseEvent<SVGElement>) {\n mouseEvent.persist();\n _lineHoverFocus(point, mouseEvent);\n }\n\n function _lineFocus(point: VerticalBarChartDataPoint, ref: { refElement: SVGCircleElement | null }) {\n if (ref.refElement) {\n _lineHoverFocus(point, ref.refElement);\n }\n }\n\n function _lineHoverFocus(\n point: VerticalBarChartDataPoint,\n _refSelected: React.MouseEvent<SVGElement> | SVGCircleElement,\n ) {\n const { lineLegendText = '', lineLegendColor = tokens.colorPaletteYellowBackground1 } = props;\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(lineLegendText));\n setCalloutLegend(lineLegendText);\n setDataForHoverCard(point.lineData!.y);\n setColor(lineLegendColor);\n setXCalloutValue(\n point.xAxisCalloutData || (point.x instanceof Date ? point.x.toLocaleDateString() : point.x.toString()),\n );\n setYCalloutValue(point.lineData!.yAxisCalloutData);\n setDataPointCalloutProps(point);\n setActiveXDatapoint(point.x);\n }\n\n function _getScales(\n containerHeight: number,\n containerWidth: number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): { xBarScale: any; yBarScale: any } {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let xBarScale: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const yBarScale: any = d3ScaleLinear()\n .domain([_yMin, _yMax])\n .range([0, containerHeight - margins.bottom! - margins.top!]);\n\n if (_xAxisType === XAxisTypes.NumericAxis) {\n const xMax = d3Max(_points, (point: VerticalBarChartDataPoint) => point.x as number)!;\n const xMin = d3Min(_points, (point: VerticalBarChartDataPoint) => point.x as number)!;\n xBarScale = d3ScaleLinear()\n .domain(_useRtl ? [xMax, xMin] : [xMin, xMax])\n .nice()\n .range([margins.left! + _domainMargin, containerWidth - margins.right! - _domainMargin]);\n } else if (_xAxisType === XAxisTypes.DateAxis) {\n const sDate = d3Min(_points, (point: VerticalBarChartDataPoint) => point.x as Date)!;\n const lDate = d3Max(_points, (point: VerticalBarChartDataPoint) => point.x as Date)!;\n xBarScale = d3ScaleUtc()\n .domain([sDate, lDate])\n .range(\n _useRtl\n ? [containerWidth - margins.right! - _domainMargin, margins.left! + _domainMargin]\n : [margins.left! + _domainMargin, containerWidth - margins.right! - _domainMargin],\n );\n } else {\n xBarScale = d3ScaleBand()\n .domain(_xAxisLabels)\n .range(\n _useRtl\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\n return { xBarScale, yBarScale };\n }\n\n const classes = useVerticalBarChartStyles(props);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _calculateMinBarHeight(yMin: number, yMax: number, yReferencePoint: number, yBarScale: any): number {\n const maxHeightFromBaseline =\n yMax < 0\n ? Math.abs(yMin - yReferencePoint)\n : Math.max(Math.abs(yMax - yReferencePoint), Math.abs(yMin - yReferencePoint));\n return Math.ceil(yBarScale(maxHeightFromBaseline) / 100.0);\n }\n\n function _createNumericBars(containerHeight: number, containerWidth: number, xElement: SVGElement): JSX.Element[] {\n const { useSingleColor = false } = props;\n const { xBarScale, yBarScale } = _getScales(containerHeight, containerWidth);\n const colorScale = _createColors();\n const yReferencePoint = _yMax < 0 ? _yMax : 0;\n const bars = _points.map((point: VerticalBarChartDataPoint, index: number) => {\n const shouldHighlight = _legendHighlighted(point.legend!) || _noLegendHighlighted() ? true : false;\n\n let barHeight: number = yBarScale(point.y) - yBarScale(yReferencePoint);\n const isHeightNegative = barHeight < 0;\n barHeight = Math.abs(barHeight);\n // Calculate threshold for minimum visible bar height\n const minBarHeight = _calculateMinBarHeight(_yMin, _yMax, yReferencePoint, yBarScale);\n let adjustedBarHeight = barHeight;\n\n if (barHeight === 0) {\n return <React.Fragment key={point.x as string}> </React.Fragment>;\n }\n // Adjust bar height if it's smaller than the threshold\n else if (barHeight <= minBarHeight) {\n adjustedBarHeight = minBarHeight;\n }\n const xPoint = xBarScale(point.x as number) - _barWidth / 2;\n const yPoint =\n containerHeight -\n margins.bottom! -\n (isHeightNegative ? -1 * adjustedBarHeight : adjustedBarHeight) -\n yBarScale(yReferencePoint);\n const baselineHeight = containerHeight - margins.bottom! - yBarScale(yReferencePoint);\n return (\n <g key={`${point.x}_${index}` as string}>\n <rect\n id={`${_vbcBarId}-${index}`}\n x={xPoint}\n y={!isHeightNegative ? yPoint : baselineHeight}\n width={_barWidth}\n data-is-focusable={!props.hideTooltip && shouldHighlight}\n height={adjustedBarHeight}\n ref={(e: SVGRectElement) => {\n _refCallback(e, point.legend!);\n }}\n onClick={point.onClick}\n onMouseOver={event => _onBarHover(point, colorScale(point.y), event)}\n aria-label={_getAriaLabel(point)}\n role=\"img\"\n onMouseLeave={_onBarLeave}\n onFocus={_onBarFocus.bind(point, index, colorScale(point.y))}\n onBlur={_onBarLeave}\n fill={point.color && !useSingleColor ? point.color : colorScale(point.y)}\n tabIndex={point.legend !== '' ? 0 : undefined}\n opacity={shouldHighlight ? 1 : 0.1}\n rx={props.roundCorners ? 3 : 0}\n />\n {_renderBarLabel(xPoint, yPoint, point.y, point.legend!, isHeightNegative)}\n </g>\n );\n });\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n // eslint-disable-next-line no-restricted-globals\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n // eslint-disable-next-line no-restricted-globals\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;\n }\n\n function _createStringBars(containerHeight: number, containerWidth: number, xElement: SVGElement): JSX.Element[] {\n const { xBarScale, yBarScale } = _getScales(containerHeight, containerWidth);\n const colorScale = _createColors();\n const yReferencePoint = _yMax < 0 ? _yMax : 0;\n const bars = _points.map((point: VerticalBarChartDataPoint, index: number) => {\n const shouldHighlight = _legendHighlighted(point.legend!) || _noLegendHighlighted() ? true : false;\n let barHeight: number = yBarScale(point.y) - yBarScale(yReferencePoint);\n const isHeightNegative = barHeight < 0;\n barHeight = Math.abs(barHeight);\n // Calculate threshold for minimum visible bar height\n const minBarHeight = _calculateMinBarHeight(_yMin, _yMax, yReferencePoint, yBarScale);\n let adjustedBarHeight = barHeight;\n\n if (barHeight === 0) {\n return <React.Fragment key={point.x as string}> </React.Fragment>;\n }\n // Adjust bar height if it's smaller than the threshold\n else if (barHeight <= minBarHeight) {\n adjustedBarHeight = minBarHeight;\n }\n const xPoint = xBarScale(point.x);\n const yPoint =\n containerHeight -\n margins.bottom! -\n (isHeightNegative ? -1 * adjustedBarHeight : adjustedBarHeight) -\n yBarScale(yReferencePoint);\n const baselineHeight = containerHeight - margins.bottom! - yBarScale(yReferencePoint);\n // Setting the bar width here is safe because there are no dependencies earlier in the code\n // that rely on the width of bars in vertical bar charts with string x-axis.\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth, xBarScale.bandwidth());\n return (\n <g\n key={point.x instanceof Date ? `${point.x.getTime()}_${index}` : `${point.x}_${index}`}\n transform={`translate(${0.5 * (xBarScale.bandwidth() - _barWidth)}, 0)`}\n >\n <rect\n id={`${_vbcBarId}-${index}`}\n x={xPoint}\n y={!isHeightNegative ? yPoint : baselineHeight}\n width={_barWidth}\n height={adjustedBarHeight}\n aria-label={_getAriaLabel(point)}\n role=\"img\"\n ref={(e: SVGRectElement) => {\n _refCallback(e, point.legend!);\n }}\n onClick={point.onClick}\n onMouseOver={event => _onBarHover(point, colorScale(point.y), event)}\n onMouseLeave={_onBarLeave}\n onBlur={_onBarLeave}\n data-is-focusable={!props.hideTooltip && shouldHighlight}\n onFocus={_onBarFocus.bind(point, index, colorScale(point.y))}\n fill={point.color ? point.color : colorScale(point.y)}\n tabIndex={point.legend !== '' ? 0 : undefined}\n rx={props.roundCorners ? 3 : 0}\n opacity={shouldHighlight ? 1 : 0.1}\n />\n {_renderBarLabel(xPoint, yPoint, point.y, point.legend!, isHeightNegative)}\n </g>\n );\n });\n\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n // eslint-disable-next-line no-restricted-globals\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n // eslint-disable-next-line no-restricted-globals\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 showTooltip: props.showXAxisLablesTooltip,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return bars;\n }\n\n function _createDateBars(containerHeight: number, containerWidth: number, xElement: SVGElement): JSX.Element[] {\n const { useSingleColor = false } = props;\n const { xBarScale, yBarScale } = _getScales(containerHeight, containerWidth);\n const colorScale = _createColors();\n const yReferencePoint = _yMax < 0 ? _yMax : 0;\n const bars = _points.map((point: VerticalBarChartDataPoint, index: number) => {\n const shouldHighlight = _legendHighlighted(point.legend!) || _noLegendHighlighted() ? true : false;\n let barHeight: number = yBarScale(point.y) - yBarScale(yReferencePoint);\n const isHeightNegative = barHeight < 0;\n barHeight = Math.abs(barHeight);\n // Calculate threshold for minimum visible bar height\n const minBarHeight = _calculateMinBarHeight(_yMin, _yMax, yReferencePoint, yBarScale);\n let adjustedBarHeight = barHeight;\n\n if (barHeight === 0) {\n return <React.Fragment key={point.x as string}> </React.Fragment>;\n }\n // Adjust bar height if it's smaller than the threshold\n else if (barHeight <= minBarHeight) {\n adjustedBarHeight = minBarHeight;\n }\n const xPoint = xBarScale(point.x as number) - _barWidth / 2;\n const yPoint =\n containerHeight -\n margins.bottom! -\n (isHeightNegative ? -1 * adjustedBarHeight : adjustedBarHeight) -\n yBarScale(yReferencePoint);\n const baselineHeight = containerHeight - margins.bottom! - yBarScale(yReferencePoint);\n return (\n <g key={point.x instanceof Date ? `${point.x.getTime()}_${index}` : `${point.x}_${index}`}>\n <rect\n id={`${_vbcBarId}-${index}`}\n x={xPoint}\n className={classes.opacityChangeOnHover}\n y={!isHeightNegative ? yPoint : baselineHeight}\n width={_barWidth}\n data-is-focusable={!props.hideTooltip && shouldHighlight}\n height={adjustedBarHeight}\n ref={(e: SVGRectElement) => {\n _refCallback(e, point.legend!);\n }}\n onClick={point.onClick}\n onMouseOver={event => _onBarHover(point, colorScale(point.y), event)}\n aria-label={_getAriaLabel(point)}\n role=\"img\"\n onMouseLeave={_onBarLeave}\n onFocus={_onBarFocus.bind(point, index, colorScale(point.y))}\n onBlur={_onBarLeave}\n fill={point.color && !useSingleColor ? point.color : colorScale(point.y)}\n tabIndex={point.legend !== '' ? 0 : undefined}\n rx={props.roundCorners ? 3 : 0}\n opacity={shouldHighlight ? 1 : 0.1}\n />\n {_renderBarLabel(xPoint, yPoint, point.y, point.legend!, isHeightNegative)}\n </g>\n );\n });\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n // eslint-disable-next-line no-restricted-globals\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n // eslint-disable-next-line no-restricted-globals\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;\n }\n\n function _onLegendHover(legendTitle: string): void {\n setActiveLegend(legendTitle);\n }\n\n function _onLegendLeave(): void {\n setActiveLegend(undefined);\n }\n\n function _getLegendData(data: VerticalBarChartDataPoint[]): JSX.Element {\n const { useSingleColor } = props;\n const { lineLegendText, lineLegendColor = tokens.colorPaletteYellowForeground1 } = props;\n const actions: Legend[] = [];\n const mapLegendToColor: Record<string, string> = {};\n data.forEach((point: VerticalBarChartDataPoint, _index: number) => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const color: string = !useSingleColor ? point.color! : _createColors()(1);\n mapLegendToColor[point.legend!] = color;\n });\n Object.entries(mapLegendToColor).forEach(([legendTitle, color]) => {\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: legendTitle,\n color,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(legendTitle);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n actions.push(legend);\n });\n if (_isHavingLine && lineLegendText && lineLegendColor) {\n const lineLegend: Legend = {\n title: lineLegendText,\n color: lineLegendColor,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(lineLegendText);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n isLineLegendInBarChart: true,\n };\n actions.unshift(lineLegend);\n }\n const legends = (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n selectedLegends={selectedLegends}\n onChange={_onLegendSelectionChange}\n />\n );\n return legends;\n }\n\n function _onLegendSelectionChange(\n legendsSelected: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(legendsSelected);\n } else {\n setSelectedLegends(legendsSelected.slice(-1));\n }\n\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(legendsSelected, event, currentLegend);\n }\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 _yMin = Math.min(domainValue[0], props.yMinValue || 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 _legendHighlighted(legendTitle: string | undefined): boolean {\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(): boolean {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _getAriaLabel(point: VerticalBarChartDataPoint): string {\n const xValue = point.xAxisCalloutData\n ? point.xAxisCalloutData\n : point.x instanceof Date\n ? point.x.toLocaleString()\n : point.x;\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.y;\n const lineLegend = props.lineLegendText || 'Line';\n const lineYValue = point.lineData?.yAxisCalloutData || point.lineData?.y;\n return (\n point.callOutAccessibilityData?.ariaLabel ||\n `${xValue}. ` +\n (legend ? `${legend}, ` : '') +\n `${yValue}.` +\n (typeof lineYValue !== 'undefined' ? ` ${lineLegend}, ${lineYValue}.` : '')\n );\n }\n\n function _renderBarLabel(xPoint: number, yPoint: number, barValue: number, legend: string, isNegativeBar: boolean) {\n if (props.hideLabels || _barWidth < 16 || !(_legendHighlighted(legend) || _noLegendHighlighted())) {\n return null;\n }\n\n return (\n <text\n x={xPoint + _barWidth / 2}\n y={isNegativeBar ? yPoint + 12 : yPoint - 6}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-hidden={true}\n >\n {typeof props.yAxisTickFormat === 'function'\n ? props.yAxisTickFormat(barValue)\n : formatScientificLimitWidth(barValue)}\n </text>\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 uniqueX: Record<number, number | Date> = {};\n props.data?.forEach(point => {\n if (point.x instanceof Date) {\n uniqueX[point.x.getTime()] = point.x;\n } else {\n uniqueX[point.x as number] = point.x as number;\n }\n });\n const data = Object.values(uniqueX) as number[] | Date[];\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 _isChartEmpty(): boolean {\n return _points.length === 0 || (_points.every(point => point.y === 0) && !_isHavingLine);\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 _adjustProps();\n _xAxisLabels = _points.map((point: VerticalBarChartDataPoint) => point.x as string);\n _yMax = Math.max(d3Max(_points, (point: VerticalBarChartDataPoint) => point.y)!, props.yMaxValue || 0);\n _yMin = Math.min(d3Min(_points, (point: VerticalBarChartDataPoint) => point.y)!, props.yMinValue || 0);\n const legendBars: JSX.Element = _getLegendData(_points);\n const calloutProps = {\n ...(_isHavingLine && {\n YValueHover: hoveredYValues,\n hoverXValue: hoverXValue,\n }),\n color: color,\n legend: calloutLegend,\n XValue: xCalloutValue,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData),\n clickPosition: clickPosition,\n isPopoverOpen: isPopoverOpen,\n isCalloutForStack: _isHavingLine && (_noLegendHighlighted() || _getHighlightedLegend().length > 1),\n culture: props.culture ?? 'en-us',\n isCartesian: true,\n customCallout: {\n customizedCallout: _getCustomizedCallout() != null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n };\n\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n points={_points}\n chartType={ChartTypes.VerticalBarChart}\n xAxisType={_xAxisType}\n calloutProps={calloutProps}\n tickParams={tickParams}\n {...(_isHavingLine && _noLegendHighlighted() && { isCalloutForStack: true })}\n legendBars={legendBars}\n datasetForXAxisDomain={_xAxisLabels}\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 // eslint-disable-next-line react/no-children-prop\n children={(props: ChildProps) => {\n return (\n <>\n <g>{_bars}</g>\n {_isHavingLine && (\n <g>\n {_createLine(\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 <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nVerticalBarChart.displayName = 'VerticalBarChart';\n"],"names":["VerticalBarChart","CircleVisbility","MIN_DOMAIN_MARGIN","React","forwardRef","props","forwardedRef","_points","_barWidth","_colors","_refArray","margins","_useRtl","useRtl","_bars","_xAxisLabels","_yMax","_yMin","_isHavingLine","_checkForLine","_tooltipId","useId","_xAxisType","data","length","getTypeOfAxis","x","XAxisTypes","StringAxis","_calloutAnchorPoint","_domainMargin","_emptyChartId","_vbcLineId","_vbcPointId","_vbcBarId","_xAxisInnerPadding","_xAxisOuterPadding","cartesianChartRef","useRef","color","setColor","useState","dataForHoverCard","setDataForHoverCard","activeLegend","setActiveLegend","undefined","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","activeXdataPoint","setActiveXDatapoint","hoveredYValues","setYValueHover","hoverXValue","setHoverXValue","calloutLegend","setCalloutLegend","callOutAccessibilityData","setCalloutAccessibilityData","dataPointCalloutProps","setDataPointCalloutProps","clickPosition","setClickPosition","y","isPopoverOpen","setPopoverOpen","selectedLegends","setSelectedLegends","legendProps","prevPropsRef","useImperativeHandle","componentRef","chartContainer","current","useEffect","prevProps","areArraysEqual","height","width","_adjustProps","_createLine","xScale","yScale","containerHeight","containerWidth","yScaleSecondary","isStringAxis","colorScale","_createColors","lineLegendColor","tokens","colorPaletteYellowBackground1","lineLegendText","lineData","line","forEach","item","index","push","useSecondaryYScale","point","linePath","d3Line","d","bandwidth","shouldHighlight","_legendHighlighted","_noLegendHighlighted","lineBorderWidth","lineOptions","Number","parseFloat","toString","createElement","path","key","id","opacity","fill","strokeLinecap","strokeWidth","className","classes","lineBorder","stroke","dots","map","circleRef","refElement","circle","cx","cy","onMouseOver","event","_lineHover","_onBarHover","onMouseOut","_onBarLeave","r","_getCircleVisibilityAndRadius","radius","colorNeutralBackground1","visibility","onClick","data-is-focusable","ref","e","onFocus","_lineFocus","bind","onBlur","_handleChartMouseLeave","Fragment","xAxisPoint","legend","some","getBarWidth","barWidth","maxBarWidth","defaultColors","colorPaletteBlueForeground2","colorPaletteCornflowerForeground2","colorPaletteDarkGreenForeground2","colorPaletteNavyForeground2","colorPaletteDarkOrangeForeground2","colors","getScalePadding","xAxisInnerPadding","xAxisPadding","xAxisOuterPadding","_getMargins","_margins","_renderContentForBothLineAndBars","YValueHover","_getCalloutContentForLineAndBar","content","ChartPopover","culture","XValue","YValue","isCalloutForStack","_renderContentForOnlyBars","_props","xAxisCalloutData","yAxisCalloutData","useSingleColor","_renderCallout","_getCustomizedCallout","onRenderCalloutPerDataPoint","_getGraphData","xElement","NumericAxis","_createNumericBars","DateAxis","_createDateBars","_createStringBars","increment","_p","colorPaletteBlueBackground2","domainValues","i","d3ScaleLinear","domain","range","_refCallback","element","legendTitle","selectedPoint","filter","xDataPoint","includes","Date","toLocaleString","mouseEvent","persist","updatePosition","clientX","clientY","toLocaleDateString","_onBarFocus","refArrayIndexNumber","obj","_lineHoverFocus","_refSelected","_getScales","xBarScale","yBarScale","bottom","top","xMax","d3Max","xMin","d3Min","nice","left","right","sDate","lDate","d3ScaleUtc","d3ScaleBand","paddingInner","paddingOuter","useVerticalBarChartStyles","_calculateMinBarHeight","yMin","yMax","yReferencePoint","maxHeightFromBaseline","Math","abs","max","ceil","bars","barHeight","isHeightNegative","minBarHeight","adjustedBarHeight","xPoint","yPoint","baselineHeight","g","rect","hideTooltip","aria-label","_getAriaLabel","role","onMouseLeave","tabIndex","rx","roundCorners","_renderBarLabel","showXAxisLablesTooltip","document","getElementById","remove","wrapXAxisLables","xAxisElement","d3Select","call","tooltipProps","tooltipCls","tooltip","xAxis","tooltipOfXAxislabels","getTime","transform","showTooltip","opacityChangeOnHover","_onLegendHover","_onLegendLeave","_getLegendData","colorPaletteYellowForeground1","actions","mapLegendToColor","_index","Object","entries","title","hoverAction","onMouseOutAction","lineLegend","isLineLegendInBarChart","unshift","legends","Legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onChange","_onLegendSelectionChange","legendsSelected","currentLegend","canSelectMultipleLegends","slice","_getAxisData","yAxisData","yAxisDomainValues","domainValue","yMaxValue","min","yMinValue","_getHighlightedLegend","xValue","yValue","lineYValue","ariaLabel","barValue","isNegativeBar","hideLabels","text","textAnchor","barLabel","aria-hidden","yAxisTickFormat","formatScientificLimitWidth","_getDomainMargins","totalWidth","barGapRate","isScalePaddingDefined","reqWidth","mode","margin1","step","calculateLongestLabelWidth","margin2","uniqueX","values","calculateAppropriateBarWidth","_isChartEmpty","every","newX","newY","threshold","distance","sqrt","pow","legendBars","calloutProps","getAccessibleDataObject","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","tickValues","tickFormat","CartesianChart","points","chartType","ChartTypes","xAxisType","datasetForXAxisDomain","barwidth","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","children","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["VerticalBarChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useVerticalBarChartStyles } from './useVerticalBarChartStyles.styles';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { line as d3Line } from 'd3-shape';\nimport { select as d3Select } from 'd3-selection';\nimport {\n scaleLinear as d3ScaleLinear,\n ScaleLinear as D3ScaleLinear,\n scaleBand as d3ScaleBand,\n scaleUtc as d3ScaleUtc,\n} from 'd3-scale';\nimport { useId } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n AccessibilityProps,\n CartesianChart,\n Margins,\n Legend,\n RefArrayData,\n VerticalBarChartProps,\n VerticalBarChartDataPoint,\n Legends,\n ChildProps,\n YValueHover,\n ChartPopover,\n Chart,\n} from '../../index';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n NumericAxis,\n getTypeOfAxis,\n tooltipOfXAxislabels,\n formatScientificLimitWidth,\n getBarWidth,\n getScalePadding,\n isScalePaddingDefined,\n calculateAppropriateBarWidth,\n useRtl,\n areArraysEqual,\n calculateLongestLabelWidth,\n} from '../../utilities/index';\n\nenum CircleVisbility {\n show = 'visibility',\n hide = 'hidden',\n}\n\nconst MIN_DOMAIN_MARGIN = 8;\n\n// Create a VerticalBarChart variant which uses these default styles and this styled subcomponent.\n/**\n * VerticalBarchart component\n * {@docCategory VerticalBarChart}\n */\nexport const VerticalBarChart: React.FunctionComponent<VerticalBarChartProps> = React.forwardRef<\n HTMLDivElement,\n VerticalBarChartProps\n>((props, forwardedRef) => {\n let _points: VerticalBarChartDataPoint[] = [];\n let _barWidth: number = 0;\n let _colors: string[];\n const _refArray: RefArrayData[] = [];\n let margins: Margins;\n const _useRtl: boolean = useRtl();\n let _bars: JSX.Element[];\n let _xAxisLabels: string[];\n let _yMax: number;\n let _yMin: number;\n let _isHavingLine: boolean = _checkForLine();\n const _tooltipId: string = useId('VCTooltipID_');\n const _xAxisType: XAxisTypes =\n props.data! && props.data!.length > 0\n ? (getTypeOfAxis(props.data![0].x, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n let _calloutAnchorPoint: VerticalBarChartDataPoint | null;\n let _domainMargin: number;\n const _emptyChartId: string = useId('_VBC_empty');\n const _vbcLineId: string = useId('_VBC_line_');\n const _vbcPointId: string = useId('_VBC_point_');\n const _vbcBarId: string = useId('_VBC_bar_');\n let _xAxisInnerPadding: number = 0;\n let _xAxisOuterPadding: number = 0;\n type ColorScale = (_p?: number) => string;\n const cartesianChartRef = React.useRef<Chart>(null);\n\n const [color, setColor] = React.useState<string>('');\n const [dataForHoverCard, setDataForHoverCard] = React.useState<number>(0);\n const [activeLegend, setActiveLegend] = React.useState<string | undefined>(undefined);\n const [xCalloutValue, setXCalloutValue] = React.useState<string | undefined>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string | undefined>('');\n const [activeXdataPoint, setActiveXDatapoint] = React.useState<string | number | Date | null>(null);\n const [hoveredYValues, setYValueHover] = React.useState<YValueHover[]>();\n const [hoverXValue, setHoverXValue] = React.useState<string | number | undefined>('');\n const [calloutLegend, setCalloutLegend] = React.useState<string>('');\n const [callOutAccessibilityData, setCalloutAccessibilityData] = React.useState<AccessibilityProps>();\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<VerticalBarChartDataPoint>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const prevPropsRef = React.useRef<VerticalBarChartProps | null>(null);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n }),\n [],\n );\n\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n if (prevProps.height !== props.height || prevProps.width !== props.width) {\n _adjustProps();\n }\n }\n prevPropsRef.current = props;\n }, [props, prevPropsRef, _adjustProps]);\n\n function _createLine(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScalePrimary: any,\n containerHeight: number = 0,\n containerWidth: number = 0,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScaleSecondary?: any,\n ): React.ReactNode {\n const isStringAxis = _xAxisType === XAxisTypes.StringAxis;\n const colorScale = _createColors();\n const { data, lineLegendColor = tokens.colorPaletteYellowBackground1, lineLegendText } = props;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const lineData: Array<any> = [];\n const line: JSX.Element[] = [];\n data &&\n data.forEach((item: VerticalBarChartDataPoint, index: number) => {\n if (item.lineData && item.lineData.y) {\n lineData.push({\n x: item.x,\n y: item.lineData!.y,\n useSecondaryYScale: item.lineData!.useSecondaryYScale ?? false,\n point: item,\n index,\n });\n }\n });\n const linePath = d3Line()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => (isStringAxis ? xScale(d.x) + 0.5 * xScale.bandwidth() : xScale(d.x)))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y((d: any) => (d.useSecondaryYScale && yScaleSecondary ? yScaleSecondary(d.y) : yScalePrimary(d.y)));\n const shouldHighlight = _legendHighlighted(lineLegendText!) || _noLegendHighlighted() ? true : false;\n const lineBorderWidth = props.lineOptions?.lineBorderWidth\n ? Number.parseFloat(props.lineOptions!.lineBorderWidth!.toString())\n : 0;\n\n if (lineBorderWidth > 0) {\n line.push(\n <path\n key={_vbcLineId}\n id={_vbcLineId}\n opacity={shouldHighlight ? 1 : 0.1}\n d={linePath(lineData)!}\n fill=\"transparent\"\n strokeLinecap=\"square\"\n strokeWidth={3 + lineBorderWidth * 2}\n className={classes.lineBorder}\n />,\n );\n }\n line.push(\n <path\n key={_vbcLineId}\n id={_vbcLineId}\n opacity={shouldHighlight ? 1 : 0.1}\n d={linePath(lineData)!}\n fill=\"transparent\"\n strokeLinecap=\"square\"\n strokeWidth={3}\n stroke={lineLegendColor}\n />,\n );\n\n const dots: React.ReactNode[] = lineData.map(\n (\n item: {\n x: number | string;\n y: number;\n useSecondaryYScale: boolean;\n point: VerticalBarChartDataPoint;\n index: number;\n },\n index: number,\n ) => {\n // Create an object to store line point ref so that the object can be passed by reference to the focus handler\n const circleRef: { refElement: SVGCircleElement | null } = { refElement: null };\n return (\n <circle\n key={index}\n id={`${_vbcPointId}-${index}`}\n cx={isStringAxis ? xScale(item.x) + 0.5 * xScale.bandwidth() : xScale(item.x)}\n cy={item.useSecondaryYScale && yScaleSecondary ? yScaleSecondary(item.y) : yScalePrimary(item.y)}\n onMouseOver={event =>\n _legendHighlighted(lineLegendText!)\n ? _lineHover(item.point, event)\n : _onBarHover(item.point, colorScale(item.y), event)\n }\n onMouseOut={_onBarLeave}\n r={_getCircleVisibilityAndRadius(item.x, lineLegendText!).radius}\n stroke={lineLegendColor}\n fill={tokens.colorNeutralBackground1}\n strokeWidth={3}\n visibility={_getCircleVisibilityAndRadius(item.x, lineLegendText!).visibility}\n onClick={item.point.lineData?.onClick}\n // When no legend is highlighted: Line points are automatically displayed along with the bars\n // at the same x-axis point in the stack callout. So to prevent an increase in focusable elements\n // and avoid conveying duplicate info, make these line points non-focusable.\n data-is-focusable={_legendHighlighted(lineLegendText!)}\n ref={e => (circleRef.refElement = e)}\n onFocus={_lineFocus.bind(item.point, circleRef)}\n onBlur={_handleChartMouseLeave}\n />\n );\n },\n );\n\n return (\n <>\n {line}\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 === activeXdataPoint && _legendHighlighted(legend)) {\n return { visibility: CircleVisbility.show, radius: 8 };\n } else if (_legendHighlighted(legend)) {\n // Don't hide the circle to keep it focusable. For more information,\n // see https://fuzzbomb.github.io/accessibility-demos/visually-hidden-focus-test.html\n return { visibility: CircleVisbility.show, radius: 0.3 };\n } else {\n return { visibility: CircleVisbility.hide, radius: 0 };\n }\n } else {\n return {\n visibility: activeXdataPoint === xAxisPoint ? CircleVisbility.show : CircleVisbility.hide,\n radius: 8,\n };\n }\n }\n\n function _checkForLine(): boolean {\n const { data } = props;\n return data!.some((item: VerticalBarChartDataPoint) => item?.lineData?.y !== undefined);\n }\n\n function _adjustProps(): void {\n _points = props.data || [];\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n const defaultColors: string[] = [\n tokens.colorPaletteBlueForeground2,\n tokens.colorPaletteCornflowerForeground2,\n tokens.colorPaletteDarkGreenForeground2,\n tokens.colorPaletteNavyForeground2,\n tokens.colorPaletteDarkOrangeForeground2,\n ];\n _colors = props.colors || defaultColors;\n _isHavingLine = _checkForLine();\n _xAxisInnerPadding = getScalePadding(props.xAxisInnerPadding, props.xAxisPadding, 2 / 3);\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding, props.xAxisPadding, 0);\n }\n\n function _getMargins(_margins: Margins) {\n margins = _margins;\n }\n\n function _renderContentForBothLineAndBars(point: VerticalBarChartDataPoint): JSX.Element {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { YValueHover, hoverXValue } = _getCalloutContentForLineAndBar(point);\n const content: JSX.Element[] = YValueHover.map((item: YValueHover, index: number) => {\n return (\n <>\n <ChartPopover\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n legend={item.legend!}\n {...(index === 0 && { XValue: `${hoverXValue || item.data}` })}\n YValue={item.data || item.y}\n color={item.color}\n isCalloutForStack={false}\n />\n </>\n );\n });\n return <>{content}</>;\n }\n\n function _renderContentForOnlyBars(_props: VerticalBarChartDataPoint): JSX.Element {\n return (\n <>\n <ChartPopover\n XValue={_props.xAxisCalloutData || (_props.x as string)}\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n culture={props.culture ?? 'en-us'}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n legend={_props.legend!}\n YValue={_props.yAxisCalloutData || _props.y}\n color={!props.useSingleColor && _props.color ? _props.color : _createColors()(_props.y)}\n isCalloutForStack={false}\n />\n </>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n function _renderCallout(props?: VerticalBarChartDataPoint): JSX.Element | null {\n return props ? (_isHavingLine ? _renderContentForBothLineAndBars(props) : _renderContentForOnlyBars(props)) : null;\n }\n\n function _getCustomizedCallout() {\n return props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps, _renderCallout)\n : null;\n }\n\n function _getGraphData(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale: any,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n ) {\n return (_bars =\n _xAxisType === XAxisTypes.NumericAxis\n ? _createNumericBars(containerHeight, containerWidth, xElement!)\n : _xAxisType === XAxisTypes.DateAxis\n ? _createDateBars(containerHeight, containerWidth, xElement!)\n : _createStringBars(containerHeight, containerWidth, xElement!));\n }\n\n function _createColors(): D3ScaleLinear<string, string> | ColorScale {\n const increment = _colors.length <= 1 ? 1 : 1 / (_colors.length - 1);\n const { useSingleColor = false } = props;\n if (useSingleColor) {\n return (_p?: number) => {\n const { colors } = props;\n return colors && colors.length > 0 ? colors[0] : tokens.colorPaletteBlueBackground2;\n };\n }\n const domainValues = [];\n for (let i = 0; i < _colors.length; i++) {\n domainValues.push(increment * i * _yMax);\n }\n const colorScale = d3ScaleLinear<string>().domain(domainValues).range(_colors);\n return colorScale;\n }\n\n function _refCallback(element: SVGRectElement, legendTitle: string): void {\n _refArray.push({ index: legendTitle, refElement: element });\n }\n\n function _getCalloutContentForLineAndBar(point: VerticalBarChartDataPoint): {\n YValueHover: YValueHover[];\n hoverXValue: string | number | undefined;\n } {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const YValueHover: YValueHover[] = [];\n const { useSingleColor = false } = props;\n const { data, lineLegendText, lineLegendColor = tokens.colorPaletteYellowBackground1 } = props;\n const selectedPoint = data!.filter((xDataPoint: VerticalBarChartDataPoint) => xDataPoint.x === point.x);\n // Check if the line legend is highlighted or no legend is highlighted\n if (\n _isHavingLine &&\n selectedPoint[0].lineData?.y !== undefined &&\n (_legendHighlighted(lineLegendText) || _noLegendHighlighted())\n ) {\n // Add callout data for the line\n YValueHover.push({\n legend: lineLegendText,\n color: lineLegendColor,\n y: selectedPoint[0].lineData?.y,\n data: selectedPoint[0].lineData?.yAxisCalloutData,\n yAxisCalloutData: selectedPoint[0].lineData?.yAxisCalloutData,\n });\n }\n // Check if the bar legend is highlighted or no legend is highlighted\n if (selectedPoint[0].legend && (selectedLegends.includes(selectedPoint[0].legend) || _noLegendHighlighted())) {\n // Add callout data for the bar\n YValueHover.push({\n legend: selectedPoint[0].legend,\n y: selectedPoint[0].y,\n color: !useSingleColor\n ? selectedPoint[0].color\n ? selectedPoint[0].color\n : _createColors()(selectedPoint[0].y)\n : _createColors()(1),\n data: selectedPoint[0].yAxisCalloutData,\n yAxisCalloutData: selectedPoint[0].yAxisCalloutData,\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const hoverXValue = point.x instanceof Date ? point.x.toLocaleString() : point.x.toString();\n return {\n YValueHover,\n hoverXValue: point.xAxisCalloutData || hoverXValue,\n };\n }\n\n function _onBarHover(\n point: VerticalBarChartDataPoint,\n // eslint-disable-next-line @typescript-eslint/no-shadow\n color: string,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void {\n mouseEvent.persist();\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { YValueHover, hoverXValue } = _getCalloutContentForLineAndBar(point);\n if (_calloutAnchorPoint !== point) {\n _calloutAnchorPoint = point;\n /** Show the callout if highlighted bar is hovered and Hide it if unhighlighted bar is hovered */\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(point.legend));\n setDataForHoverCard(point.y);\n setCalloutLegend(point.legend!);\n setColor(point.color || color);\n // To display callout value, if no callout value given, taking given point.x value as a string.\n setXCalloutValue(\n point.xAxisCalloutData || (point.x instanceof Date ? point.x.toLocaleDateString() : point.x.toString()),\n );\n setDataPointCalloutProps(point);\n // Hovering over a bar should highlight corresponding line points only when no legend is selected\n setActiveXDatapoint(_noLegendHighlighted() ? point.x : null);\n setYValueHover(YValueHover);\n setHoverXValue(hoverXValue);\n setCalloutAccessibilityData(point.callOutAccessibilityData);\n }\n }\n\n function _onBarLeave(): void {\n /**/\n }\n\n function _handleChartMouseLeave(): void {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n setActiveXDatapoint(null);\n setYValueHover([]);\n setHoverXValue('');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n function _onBarFocus(point: VerticalBarChartDataPoint, refArrayIndexNumber: number, color: string): void {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { YValueHover, hoverXValue } = _getCalloutContentForLineAndBar(point);\n _refArray.forEach((obj: RefArrayData, index: number) => {\n if (obj.index === point.legend! && refArrayIndexNumber === index) {\n /** Show the callout if highlighted bar is hovered and Hide it if unhighlighted bar is hovered */\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(point.legend));\n setDataForHoverCard(point.y);\n setCalloutLegend(point.legend!);\n setColor(point.color || color);\n // To display callout value, if no callout value given, taking given point.x value as a string.\n setXCalloutValue(\n point.xAxisCalloutData || (point.x instanceof Date ? point.x.toLocaleDateString() : point.x.toString()),\n );\n setYCalloutValue(point.yAxisCalloutData!);\n setDataPointCalloutProps(point);\n // Hovering over a bar should highlight corresponding line points only when no legend is selected\n setActiveXDatapoint(point.x);\n setYValueHover(YValueHover);\n setHoverXValue(hoverXValue);\n setCalloutAccessibilityData(point.callOutAccessibilityData);\n }\n });\n }\n\n function _lineHover(point: VerticalBarChartDataPoint, mouseEvent: React.MouseEvent<SVGElement>) {\n mouseEvent.persist();\n _lineHoverFocus(point, mouseEvent);\n }\n\n function _lineFocus(point: VerticalBarChartDataPoint, ref: { refElement: SVGCircleElement | null }) {\n if (ref.refElement) {\n _lineHoverFocus(point, ref.refElement);\n }\n }\n\n function _lineHoverFocus(\n point: VerticalBarChartDataPoint,\n _refSelected: React.MouseEvent<SVGElement> | SVGCircleElement,\n ) {\n const { lineLegendText = '', lineLegendColor = tokens.colorPaletteYellowBackground1 } = props;\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(lineLegendText));\n setCalloutLegend(lineLegendText);\n setDataForHoverCard(point.lineData!.y);\n setColor(lineLegendColor);\n setXCalloutValue(\n point.xAxisCalloutData || (point.x instanceof Date ? point.x.toLocaleDateString() : point.x.toString()),\n );\n setYCalloutValue(point.lineData!.yAxisCalloutData);\n setDataPointCalloutProps(point);\n setActiveXDatapoint(point.x);\n }\n\n function _getScales(\n containerHeight: number,\n containerWidth: number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): { xBarScale: any; yBarScale: any } {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let xBarScale: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const yBarScale: any = d3ScaleLinear()\n .domain([_yMin, _yMax])\n .range([0, containerHeight - margins.bottom! - margins.top!]);\n\n if (_xAxisType === XAxisTypes.NumericAxis) {\n const xMax = d3Max(_points, (point: VerticalBarChartDataPoint) => point.x as number)!;\n const xMin = d3Min(_points, (point: VerticalBarChartDataPoint) => point.x as number)!;\n xBarScale = d3ScaleLinear()\n .domain(_useRtl ? [xMax, xMin] : [xMin, xMax])\n .nice()\n .range([margins.left! + _domainMargin, containerWidth - margins.right! - _domainMargin]);\n } else if (_xAxisType === XAxisTypes.DateAxis) {\n const sDate = d3Min(_points, (point: VerticalBarChartDataPoint) => point.x as Date)!;\n const lDate = d3Max(_points, (point: VerticalBarChartDataPoint) => point.x as Date)!;\n xBarScale = d3ScaleUtc()\n .domain([sDate, lDate])\n .range(\n _useRtl\n ? [containerWidth - margins.right! - _domainMargin, margins.left! + _domainMargin]\n : [margins.left! + _domainMargin, containerWidth - margins.right! - _domainMargin],\n );\n } else {\n xBarScale = d3ScaleBand()\n .domain(_xAxisLabels)\n .range(\n _useRtl\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\n return { xBarScale, yBarScale };\n }\n\n const classes = useVerticalBarChartStyles(props);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _calculateMinBarHeight(yMin: number, yMax: number, yReferencePoint: number, yBarScale: any): number {\n const maxHeightFromBaseline =\n yMax < 0\n ? Math.abs(yMin - yReferencePoint)\n : Math.max(Math.abs(yMax - yReferencePoint), Math.abs(yMin - yReferencePoint));\n return Math.ceil(yBarScale(maxHeightFromBaseline) / 100.0);\n }\n\n function _createNumericBars(containerHeight: number, containerWidth: number, xElement: SVGElement): JSX.Element[] {\n const { useSingleColor = false } = props;\n const { xBarScale, yBarScale } = _getScales(containerHeight, containerWidth);\n const colorScale = _createColors();\n const yReferencePoint = _yMax < 0 ? _yMax : 0;\n const bars = _points.map((point: VerticalBarChartDataPoint, index: number) => {\n const shouldHighlight = _legendHighlighted(point.legend!) || _noLegendHighlighted() ? true : false;\n\n let barHeight: number = yBarScale(point.y) - yBarScale(yReferencePoint);\n const isHeightNegative = barHeight < 0;\n barHeight = Math.abs(barHeight);\n // Calculate threshold for minimum visible bar height\n const minBarHeight = _calculateMinBarHeight(_yMin, _yMax, yReferencePoint, yBarScale);\n let adjustedBarHeight = barHeight;\n\n if (barHeight === 0) {\n return <React.Fragment key={point.x as string}> </React.Fragment>;\n }\n // Adjust bar height if it's smaller than the threshold\n else if (barHeight <= minBarHeight) {\n adjustedBarHeight = minBarHeight;\n }\n const xPoint = xBarScale(point.x as number) - _barWidth / 2;\n const yPoint =\n containerHeight -\n margins.bottom! -\n (isHeightNegative ? -1 * adjustedBarHeight : adjustedBarHeight) -\n yBarScale(yReferencePoint);\n const baselineHeight = containerHeight - margins.bottom! - yBarScale(yReferencePoint);\n return (\n <g key={`${point.x}_${index}` as string}>\n <rect\n id={`${_vbcBarId}-${index}`}\n x={xPoint}\n y={!isHeightNegative ? yPoint : baselineHeight}\n width={_barWidth}\n data-is-focusable={!props.hideTooltip && shouldHighlight}\n height={adjustedBarHeight}\n ref={(e: SVGRectElement) => {\n _refCallback(e, point.legend!);\n }}\n onClick={point.onClick}\n onMouseOver={event => _onBarHover(point, colorScale(point.y), event)}\n aria-label={_getAriaLabel(point)}\n role=\"img\"\n onMouseLeave={_onBarLeave}\n onFocus={_onBarFocus.bind(point, index, colorScale(point.y))}\n onBlur={_onBarLeave}\n fill={point.color && !useSingleColor ? point.color : colorScale(point.y)}\n tabIndex={point.legend !== '' ? 0 : undefined}\n opacity={shouldHighlight ? 1 : 0.1}\n rx={props.roundCorners ? 3 : 0}\n />\n {_renderBarLabel(xPoint, yPoint, point.y, point.legend!, isHeightNegative)}\n </g>\n );\n });\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n // eslint-disable-next-line no-restricted-globals\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n // eslint-disable-next-line no-restricted-globals\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;\n }\n\n function _createStringBars(containerHeight: number, containerWidth: number, xElement: SVGElement): JSX.Element[] {\n const { xBarScale, yBarScale } = _getScales(containerHeight, containerWidth);\n const colorScale = _createColors();\n const yReferencePoint = _yMax < 0 ? _yMax : 0;\n const bars = _points.map((point: VerticalBarChartDataPoint, index: number) => {\n const shouldHighlight = _legendHighlighted(point.legend!) || _noLegendHighlighted() ? true : false;\n let barHeight: number = yBarScale(point.y) - yBarScale(yReferencePoint);\n const isHeightNegative = barHeight < 0;\n barHeight = Math.abs(barHeight);\n // Calculate threshold for minimum visible bar height\n const minBarHeight = _calculateMinBarHeight(_yMin, _yMax, yReferencePoint, yBarScale);\n let adjustedBarHeight = barHeight;\n\n if (barHeight === 0) {\n return <React.Fragment key={point.x as string}> </React.Fragment>;\n }\n // Adjust bar height if it's smaller than the threshold\n else if (barHeight <= minBarHeight) {\n adjustedBarHeight = minBarHeight;\n }\n const xPoint = xBarScale(point.x);\n const yPoint =\n containerHeight -\n margins.bottom! -\n (isHeightNegative ? -1 * adjustedBarHeight : adjustedBarHeight) -\n yBarScale(yReferencePoint);\n const baselineHeight = containerHeight - margins.bottom! - yBarScale(yReferencePoint);\n // Setting the bar width here is safe because there are no dependencies earlier in the code\n // that rely on the width of bars in vertical bar charts with string x-axis.\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth, xBarScale.bandwidth());\n return (\n <g\n key={point.x instanceof Date ? `${point.x.getTime()}_${index}` : `${point.x}_${index}`}\n transform={`translate(${0.5 * (xBarScale.bandwidth() - _barWidth)}, 0)`}\n >\n <rect\n id={`${_vbcBarId}-${index}`}\n x={xPoint}\n y={!isHeightNegative ? yPoint : baselineHeight}\n width={_barWidth}\n height={adjustedBarHeight}\n aria-label={_getAriaLabel(point)}\n role=\"img\"\n ref={(e: SVGRectElement) => {\n _refCallback(e, point.legend!);\n }}\n onClick={point.onClick}\n onMouseOver={event => _onBarHover(point, colorScale(point.y), event)}\n onMouseLeave={_onBarLeave}\n onBlur={_onBarLeave}\n data-is-focusable={!props.hideTooltip && shouldHighlight}\n onFocus={_onBarFocus.bind(point, index, colorScale(point.y))}\n fill={point.color ? point.color : colorScale(point.y)}\n tabIndex={point.legend !== '' ? 0 : undefined}\n rx={props.roundCorners ? 3 : 0}\n opacity={shouldHighlight ? 1 : 0.1}\n />\n {_renderBarLabel(xPoint, yPoint, point.y, point.legend!, isHeightNegative)}\n </g>\n );\n });\n\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n // eslint-disable-next-line no-restricted-globals\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n // eslint-disable-next-line no-restricted-globals\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 showTooltip: props.showXAxisLablesTooltip,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return bars;\n }\n\n function _createDateBars(containerHeight: number, containerWidth: number, xElement: SVGElement): JSX.Element[] {\n const { useSingleColor = false } = props;\n const { xBarScale, yBarScale } = _getScales(containerHeight, containerWidth);\n const colorScale = _createColors();\n const yReferencePoint = _yMax < 0 ? _yMax : 0;\n const bars = _points.map((point: VerticalBarChartDataPoint, index: number) => {\n const shouldHighlight = _legendHighlighted(point.legend!) || _noLegendHighlighted() ? true : false;\n let barHeight: number = yBarScale(point.y) - yBarScale(yReferencePoint);\n const isHeightNegative = barHeight < 0;\n barHeight = Math.abs(barHeight);\n // Calculate threshold for minimum visible bar height\n const minBarHeight = _calculateMinBarHeight(_yMin, _yMax, yReferencePoint, yBarScale);\n let adjustedBarHeight = barHeight;\n\n if (barHeight === 0) {\n return <React.Fragment key={point.x as string}> </React.Fragment>;\n }\n // Adjust bar height if it's smaller than the threshold\n else if (barHeight <= minBarHeight) {\n adjustedBarHeight = minBarHeight;\n }\n const xPoint = xBarScale(point.x as number) - _barWidth / 2;\n const yPoint =\n containerHeight -\n margins.bottom! -\n (isHeightNegative ? -1 * adjustedBarHeight : adjustedBarHeight) -\n yBarScale(yReferencePoint);\n const baselineHeight = containerHeight - margins.bottom! - yBarScale(yReferencePoint);\n return (\n <g key={point.x instanceof Date ? `${point.x.getTime()}_${index}` : `${point.x}_${index}`}>\n <rect\n id={`${_vbcBarId}-${index}`}\n x={xPoint}\n className={classes.opacityChangeOnHover}\n y={!isHeightNegative ? yPoint : baselineHeight}\n width={_barWidth}\n data-is-focusable={!props.hideTooltip && shouldHighlight}\n height={adjustedBarHeight}\n ref={(e: SVGRectElement) => {\n _refCallback(e, point.legend!);\n }}\n onClick={point.onClick}\n onMouseOver={event => _onBarHover(point, colorScale(point.y), event)}\n aria-label={_getAriaLabel(point)}\n role=\"img\"\n onMouseLeave={_onBarLeave}\n onFocus={_onBarFocus.bind(point, index, colorScale(point.y))}\n onBlur={_onBarLeave}\n fill={point.color && !useSingleColor ? point.color : colorScale(point.y)}\n tabIndex={point.legend !== '' ? 0 : undefined}\n rx={props.roundCorners ? 3 : 0}\n opacity={shouldHighlight ? 1 : 0.1}\n />\n {_renderBarLabel(xPoint, yPoint, point.y, point.legend!, isHeightNegative)}\n </g>\n );\n });\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n // eslint-disable-next-line no-restricted-globals\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n // eslint-disable-next-line no-restricted-globals\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;\n }\n\n function _onLegendHover(legendTitle: string): void {\n setActiveLegend(legendTitle);\n }\n\n function _onLegendLeave(): void {\n setActiveLegend(undefined);\n }\n\n function _getLegendData(data: VerticalBarChartDataPoint[]): JSX.Element {\n const { useSingleColor } = props;\n const { lineLegendText, lineLegendColor = tokens.colorPaletteYellowForeground1 } = props;\n const actions: Legend[] = [];\n const mapLegendToColor: Record<string, string> = {};\n data.forEach((point: VerticalBarChartDataPoint, _index: number) => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const color: string = !useSingleColor ? point.color! : _createColors()(1);\n mapLegendToColor[point.legend!] = color;\n });\n Object.entries(mapLegendToColor).forEach(([legendTitle, color]) => {\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: legendTitle,\n color,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(legendTitle);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n actions.push(legend);\n });\n if (_isHavingLine && lineLegendText && lineLegendColor) {\n const lineLegend: Legend = {\n title: lineLegendText,\n color: lineLegendColor,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(lineLegendText);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n isLineLegendInBarChart: true,\n };\n actions.unshift(lineLegend);\n }\n const legends = (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n selectedLegends={selectedLegends}\n onChange={_onLegendSelectionChange}\n />\n );\n return legends;\n }\n\n function _onLegendSelectionChange(\n legendsSelected: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(legendsSelected);\n } else {\n setSelectedLegends(legendsSelected.slice(-1));\n }\n\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(legendsSelected, event, currentLegend);\n }\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 _yMin = Math.min(domainValue[0], props.yMinValue || 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 _legendHighlighted(legendTitle: string | undefined): boolean {\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(): boolean {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _getAriaLabel(point: VerticalBarChartDataPoint): string {\n const xValue = point.xAxisCalloutData\n ? point.xAxisCalloutData\n : point.x instanceof Date\n ? point.x.toLocaleString()\n : point.x;\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.y;\n const lineLegend = props.lineLegendText || 'Line';\n const lineYValue = point.lineData?.yAxisCalloutData || point.lineData?.y;\n return (\n point.callOutAccessibilityData?.ariaLabel ||\n `${xValue}. ` +\n (legend ? `${legend}, ` : '') +\n `${yValue}.` +\n (typeof lineYValue !== 'undefined' ? ` ${lineLegend}, ${lineYValue}.` : '')\n );\n }\n\n function _renderBarLabel(xPoint: number, yPoint: number, barValue: number, legend: string, isNegativeBar: boolean) {\n if (props.hideLabels || _barWidth < 16 || !(_legendHighlighted(legend) || _noLegendHighlighted())) {\n return null;\n }\n\n return (\n <text\n x={xPoint + _barWidth / 2}\n y={isNegativeBar ? yPoint + 12 : yPoint - 6}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-hidden={true}\n >\n {typeof props.yAxisTickFormat === 'function'\n ? props.yAxisTickFormat(barValue)\n : formatScientificLimitWidth(barValue)}\n </text>\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 uniqueX: Record<number, number | Date> = {};\n props.data?.forEach(point => {\n if (point.x instanceof Date) {\n uniqueX[point.x.getTime()] = point.x;\n } else {\n uniqueX[point.x as number] = point.x as number;\n }\n });\n const data = Object.values(uniqueX) as number[] | Date[];\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 _isChartEmpty(): boolean {\n return _points.length === 0 || (_points.every(point => point.y === 0) && !_isHavingLine);\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 _adjustProps();\n _xAxisLabels = _points.map((point: VerticalBarChartDataPoint) => point.x as string);\n _yMax = Math.max(d3Max(_points, (point: VerticalBarChartDataPoint) => point.y)!, props.yMaxValue || 0);\n _yMin = Math.min(d3Min(_points, (point: VerticalBarChartDataPoint) => point.y)!, props.yMinValue || 0);\n const legendBars: JSX.Element = _getLegendData(_points);\n const calloutProps = {\n ...(_isHavingLine && {\n YValueHover: hoveredYValues,\n hoverXValue: hoverXValue,\n }),\n color: color,\n legend: calloutLegend,\n XValue: xCalloutValue,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData),\n clickPosition: clickPosition,\n isPopoverOpen: isPopoverOpen,\n isCalloutForStack: _isHavingLine && (_noLegendHighlighted() || _getHighlightedLegend().length > 1),\n culture: props.culture ?? 'en-us',\n isCartesian: true,\n customCallout: {\n customizedCallout: _getCustomizedCallout() != null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n };\n\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n points={_points}\n chartType={ChartTypes.VerticalBarChart}\n xAxisType={_xAxisType}\n calloutProps={calloutProps}\n tickParams={tickParams}\n {...(_isHavingLine && _noLegendHighlighted() && { isCalloutForStack: true })}\n legendBars={legendBars}\n datasetForXAxisDomain={_xAxisLabels}\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 // eslint-disable-next-line react/no-children-prop\n children={(props: ChildProps) => {\n return (\n <>\n <g>{_bars}</g>\n {_isHavingLine && (\n <g>\n {_createLine(\n props.xScale!,\n props.yScalePrimary!,\n props.containerHeight,\n props.containerWidth,\n props.yScaleSecondary,\n )}\n </g>\n )}\n </>\n );\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nVerticalBarChart.displayName = 'VerticalBarChart';\n"],"names":["VerticalBarChart","CircleVisbility","MIN_DOMAIN_MARGIN","React","forwardRef","props","forwardedRef","_points","_barWidth","_colors","_refArray","margins","_useRtl","useRtl","_bars","_xAxisLabels","_yMax","_yMin","_isHavingLine","_checkForLine","_tooltipId","useId","_xAxisType","data","length","getTypeOfAxis","x","XAxisTypes","StringAxis","_calloutAnchorPoint","_domainMargin","_emptyChartId","_vbcLineId","_vbcPointId","_vbcBarId","_xAxisInnerPadding","_xAxisOuterPadding","cartesianChartRef","useRef","color","setColor","useState","dataForHoverCard","setDataForHoverCard","activeLegend","setActiveLegend","undefined","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","activeXdataPoint","setActiveXDatapoint","hoveredYValues","setYValueHover","hoverXValue","setHoverXValue","calloutLegend","setCalloutLegend","callOutAccessibilityData","setCalloutAccessibilityData","dataPointCalloutProps","setDataPointCalloutProps","clickPosition","setClickPosition","y","isPopoverOpen","setPopoverOpen","selectedLegends","setSelectedLegends","legendProps","prevPropsRef","useImperativeHandle","componentRef","chartContainer","current","useEffect","prevProps","areArraysEqual","height","width","_adjustProps","_createLine","xScale","yScalePrimary","containerHeight","containerWidth","yScaleSecondary","isStringAxis","colorScale","_createColors","lineLegendColor","tokens","colorPaletteYellowBackground1","lineLegendText","lineData","line","forEach","item","index","push","useSecondaryYScale","point","linePath","d3Line","d","bandwidth","shouldHighlight","_legendHighlighted","_noLegendHighlighted","lineBorderWidth","lineOptions","Number","parseFloat","toString","createElement","path","key","id","opacity","fill","strokeLinecap","strokeWidth","className","classes","lineBorder","stroke","dots","map","circleRef","refElement","circle","cx","cy","onMouseOver","event","_lineHover","_onBarHover","onMouseOut","_onBarLeave","r","_getCircleVisibilityAndRadius","radius","colorNeutralBackground1","visibility","onClick","data-is-focusable","ref","e","onFocus","_lineFocus","bind","onBlur","_handleChartMouseLeave","Fragment","xAxisPoint","legend","some","getBarWidth","barWidth","maxBarWidth","defaultColors","colorPaletteBlueForeground2","colorPaletteCornflowerForeground2","colorPaletteDarkGreenForeground2","colorPaletteNavyForeground2","colorPaletteDarkOrangeForeground2","colors","getScalePadding","xAxisInnerPadding","xAxisPadding","xAxisOuterPadding","_getMargins","_margins","_renderContentForBothLineAndBars","YValueHover","_getCalloutContentForLineAndBar","content","ChartPopover","culture","XValue","YValue","isCalloutForStack","_renderContentForOnlyBars","_props","xAxisCalloutData","yAxisCalloutData","useSingleColor","_renderCallout","_getCustomizedCallout","onRenderCalloutPerDataPoint","_getGraphData","yScale","xElement","NumericAxis","_createNumericBars","DateAxis","_createDateBars","_createStringBars","increment","_p","colorPaletteBlueBackground2","domainValues","i","d3ScaleLinear","domain","range","_refCallback","element","legendTitle","selectedPoint","filter","xDataPoint","includes","Date","toLocaleString","mouseEvent","persist","updatePosition","clientX","clientY","toLocaleDateString","_onBarFocus","refArrayIndexNumber","obj","_lineHoverFocus","_refSelected","_getScales","xBarScale","yBarScale","bottom","top","xMax","d3Max","xMin","d3Min","nice","left","right","sDate","lDate","d3ScaleUtc","d3ScaleBand","paddingInner","paddingOuter","useVerticalBarChartStyles","_calculateMinBarHeight","yMin","yMax","yReferencePoint","maxHeightFromBaseline","Math","abs","max","ceil","bars","barHeight","isHeightNegative","minBarHeight","adjustedBarHeight","xPoint","yPoint","baselineHeight","g","rect","hideTooltip","aria-label","_getAriaLabel","role","onMouseLeave","tabIndex","rx","roundCorners","_renderBarLabel","showXAxisLablesTooltip","document","getElementById","remove","wrapXAxisLables","xAxisElement","d3Select","call","tooltipProps","tooltipCls","tooltip","xAxis","tooltipOfXAxislabels","getTime","transform","showTooltip","opacityChangeOnHover","_onLegendHover","_onLegendLeave","_getLegendData","colorPaletteYellowForeground1","actions","mapLegendToColor","_index","Object","entries","title","hoverAction","onMouseOutAction","lineLegend","isLineLegendInBarChart","unshift","legends","Legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onChange","_onLegendSelectionChange","legendsSelected","currentLegend","canSelectMultipleLegends","slice","_getAxisData","yAxisData","yAxisDomainValues","domainValue","yMaxValue","min","yMinValue","_getHighlightedLegend","xValue","yValue","lineYValue","ariaLabel","barValue","isNegativeBar","hideLabels","text","textAnchor","barLabel","aria-hidden","yAxisTickFormat","formatScientificLimitWidth","_getDomainMargins","totalWidth","barGapRate","isScalePaddingDefined","reqWidth","mode","margin1","step","calculateLongestLabelWidth","margin2","uniqueX","values","calculateAppropriateBarWidth","_isChartEmpty","every","newX","newY","threshold","distance","sqrt","pow","legendBars","calloutProps","getAccessibleDataObject","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","tickValues","tickFormat","CartesianChart","points","chartType","ChartTypes","xAxisType","datasetForXAxisDomain","barwidth","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","children","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -42,11 +42,13 @@ const VerticalStackedBarChart = (props)=>{
42
42
  let _margins;
43
43
  let _lineObject;
44
44
  let _yMax;
45
+ let _yMin;
45
46
  let _calloutAnchorPoint;
46
47
  let _domainMargin = MIN_DOMAIN_MARGIN;
47
48
  let _xAxisInnerPadding = 0;
48
49
  let _xAxisOuterPadding = 0;
49
50
  const cartesianChartRef = _react.useRef(null);
51
+ const Y_ORIGIN = 0;
50
52
  const [selectedLegends, setSelectedLegends] = _react.useState(((_props_legendProps = props.legendProps) === null || _props_legendProps === void 0 ? void 0 : _props_legendProps.selectedLegends) || []);
51
53
  const [activeLegend, setActiveLegend] = _react.useState(undefined);
52
54
  const [dataForHoverCard, setDataForHoverCard] = _react.useState(0);
@@ -276,7 +278,8 @@ const VerticalStackedBarChart = (props)=>{
276
278
  function _getAxisData(yAxisData) {
277
279
  if (yAxisData && yAxisData.yAxisDomainValues.length) {
278
280
  const { yAxisDomainValues: domainValue } = yAxisData;
279
- _yMax = Math.max(domainValue[domainValue.length - 1], props.yMaxValue || 0);
281
+ _yMax = Math.max(domainValue[domainValue.length - 1], props.yMaxValue || Y_ORIGIN);
282
+ _yMin = Math.min(domainValue[0], props.yMinValue || Y_ORIGIN);
280
283
  }
281
284
  }
282
285
  /**
@@ -368,7 +371,7 @@ const VerticalStackedBarChart = (props)=>{
368
371
  });
369
372
  return lineLegends;
370
373
  }
371
- function _createLines(xScale, yScale, containerHeight, containerWidth, secondaryYScale) {
374
+ function _createLines(xScale, yScalePrimary, containerHeight, containerWidth, yScaleSecondary) {
372
375
  var _props_lineOptions;
373
376
  const lineObject = _getFormattedLineData(props.data);
374
377
  const lines = [];
@@ -382,10 +385,10 @@ const VerticalStackedBarChart = (props)=>{
382
385
  for(let i = 1; i < lineObject[item].length; i++){
383
386
  var _lineObject_item__lineOptions, _lineObject_item__lineOptions1, _lineObject_item__lineOptions2;
384
387
  const x1 = xScale(lineObject[item][i - 1].xItem.xAxisPoint);
385
- const useSecondaryYScale = lineObject[item][i - 1].useSecondaryYScale && lineObject[item][i].useSecondaryYScale && secondaryYScale;
386
- const y1 = useSecondaryYScale ? secondaryYScale(lineObject[item][i - 1].y) : yScale(lineObject[item][i - 1].y);
388
+ const useSecondaryYScale = lineObject[item][i - 1].useSecondaryYScale && lineObject[item][i].useSecondaryYScale && yScaleSecondary;
389
+ const y1 = useSecondaryYScale ? yScaleSecondary(lineObject[item][i - 1].y) : yScalePrimary(lineObject[item][i - 1].y);
387
390
  const x2 = xScale(lineObject[item][i].xItem.xAxisPoint);
388
- const y2 = useSecondaryYScale ? secondaryYScale(lineObject[item][i].y) : yScale(lineObject[item][i].y);
391
+ const y2 = useSecondaryYScale ? yScaleSecondary(lineObject[item][i].y) : yScalePrimary(lineObject[item][i].y);
389
392
  if (lineBorderWidth > 0) {
390
393
  borderForLines.push(/*#__PURE__*/ _react.createElement("line", {
391
394
  key: `${index}-${i}-BorderLine`,
@@ -429,7 +432,7 @@ const VerticalStackedBarChart = (props)=>{
429
432
  dots.push(/*#__PURE__*/ _react.createElement("circle", {
430
433
  key: `${index}-${subIndex}-dot`,
431
434
  cx: xScale(circlePoint.xItem.xAxisPoint),
432
- cy: circlePoint.useSecondaryYScale && secondaryYScale ? secondaryYScale(circlePoint.y) : yScale(circlePoint.y),
435
+ cy: circlePoint.useSecondaryYScale && yScaleSecondary ? yScaleSecondary(circlePoint.y) : yScalePrimary(circlePoint.y),
433
436
  onMouseOver: _isLegendHighlighted(item) ? (event)=>_lineHover(circlePoint, event) : (event)=>_onStackHover(circlePoint.xItem, event),
434
437
  ..._isLegendHighlighted(item) && {
435
438
  onMouseLeave: _lineHoverOut
@@ -552,7 +555,7 @@ const VerticalStackedBarChart = (props)=>{
552
555
  // When displaying gaps between the bars, the height of each bar is
553
556
  // adjusted so that the total of all bars is not changed by the gaps
554
557
  const totalData = bars.reduce((iter, value)=>iter + Math.abs(value.data), 0);
555
- const totalHeight = defaultTotalHeight !== null && defaultTotalHeight !== void 0 ? defaultTotalHeight : yBarScale(totalData);
558
+ const totalHeight = defaultTotalHeight !== null && defaultTotalHeight !== void 0 ? defaultTotalHeight : Math.abs(yBarScale(totalData) - yBarScale(Y_ORIGIN));
556
559
  let sumOfPercent = 0;
557
560
  bars.forEach((point)=>{
558
561
  let value = Math.abs(point.data) / totalData * 100;
@@ -568,15 +571,15 @@ const VerticalStackedBarChart = (props)=>{
568
571
  return {
569
572
  gapHeight,
570
573
  heightValueScale,
571
- adjustedTotalHeight: sumOfPercent
574
+ absStackTotal: totalData
572
575
  };
573
576
  }
574
577
  function _getScales(containerHeight, containerWidth) {
575
- const yMax = _yMax;
576
- const yBarScale = (0, _d3scale.scaleLinear)().domain([
577
- 0,
578
- yMax
579
- ]).range([
578
+ const yDomain = [
579
+ Math.min(Y_ORIGIN, _yMin),
580
+ Math.max(Y_ORIGIN, _yMax)
581
+ ];
582
+ const yBarScale = (0, _d3scale.scaleLinear)().domain(yDomain).range([
580
583
  0,
581
584
  containerHeight - _margins.bottom - _margins.top
582
585
  ]);
@@ -706,18 +709,22 @@ const VerticalStackedBarChart = (props)=>{
706
709
  _barWidth = (0, _index1.getBarWidth)(props.barWidth, props.maxBarWidth, xBarScale.bandwidth());
707
710
  }
708
711
  const bars = _points.map((singleChartData, indexNumber)=>{
709
- let yPoint = containerHeight - _margins.bottom;
710
712
  const xPoint = xBarScale(_xAxisType === _index1.XAxisTypes.NumericAxis ? singleChartData.xAxisPoint : _xAxisType === _index1.XAxisTypes.DateAxis ? singleChartData.xAxisPoint : singleChartData.xAxisPoint);
711
713
  const xScaleBandwidthTranslate = _xAxisType !== _index1.XAxisTypes.StringAxis ? -_barWidth / 2 : (xBarScale.bandwidth() - _barWidth) / 2;
712
714
  let barTotalValue = 0;
713
- const barsToDisplay = singleChartData.chartData.filter((point)=>point.data > 0);
715
+ const barsToDisplay = singleChartData.chartData.filter((point)=>point.data !== 0);
714
716
  if (!barsToDisplay.length) {
715
717
  return undefined;
716
718
  }
717
- const { gapHeight, heightValueScale, adjustedTotalHeight } = _getBarGapAndScale(barsToDisplay, yBarScale);
719
+ const { gapHeight, heightValueScale, absStackTotal } = _getBarGapAndScale(barsToDisplay, yBarScale);
718
720
  if (heightValueScale < 0) {
719
721
  return undefined;
720
722
  }
723
+ const yBaseline = containerHeight - _margins.bottom - yBarScale(Y_ORIGIN);
724
+ let yPositiveStart = yBaseline;
725
+ let yNegativeStart = yBaseline;
726
+ let yPoint = 0;
727
+ let heightOfLastBar = 0;
721
728
  const singleBar = barsToDisplay.map((point, index)=>{
722
729
  const startColor = point.color ? point.color : _colors[index];
723
730
  const ref = {};
@@ -733,12 +740,22 @@ const VerticalStackedBarChart = (props)=>{
733
740
  onClick: (event)=>_onClick(point, event),
734
741
  role: 'img'
735
742
  };
736
- let barHeight = heightValueScale * point.data;
737
- if (barHeight < Math.max(heightValueScale * adjustedTotalHeight / 100.0, barMinimumHeight)) {
738
- barHeight = Math.max(heightValueScale * adjustedTotalHeight / 100.0, barMinimumHeight);
743
+ let barHeight = Math.abs(heightValueScale * point.data);
744
+ // FIXME: The current scaling logic may produce different min and gap heights for each bar stack.
745
+ const minHeight = Math.max(heightValueScale * absStackTotal / 100.0, barMinimumHeight);
746
+ if (barHeight < minHeight) {
747
+ barHeight = minHeight;
748
+ }
749
+ const gapOffset = index ? gapHeight : 0;
750
+ if (point.data >= Y_ORIGIN) {
751
+ yPositiveStart -= barHeight + gapOffset;
752
+ yPoint = yPositiveStart;
753
+ } else {
754
+ yPoint = yNegativeStart + gapOffset;
755
+ yNegativeStart = yPoint + barHeight;
739
756
  }
740
- yPoint = yPoint - barHeight - (index ? gapHeight : 0);
741
757
  barTotalValue += point.data;
758
+ heightOfLastBar = index === barsToDisplay.length - 1 ? barHeight : 0;
742
759
  if (barCornerRadius && barHeight > barCornerRadius && index === barsToDisplay.length - 1) {
743
760
  return /*#__PURE__*/ _react.createElement(_react.Fragment, {
744
761
  key: index + indexNumber + `${shouldFocusWholeStack}`
@@ -819,7 +836,8 @@ const VerticalStackedBarChart = (props)=>{
819
836
  tabIndex: !props.hideTooltip ? 0 : undefined
820
837
  }, singleBar), !props.hideLabels && _barWidth >= 16 && showLabel && /*#__PURE__*/ _react.createElement("text", {
821
838
  x: xPoint + _barWidth / 2,
822
- y: yPoint - 6,
839
+ //if total bar value >=0, show label above top bar, otherwise below bottom bar
840
+ y: barLabel >= Y_ORIGIN ? yPoint - 6 : yPoint + heightOfLastBar + 12,
823
841
  textAnchor: "middle",
824
842
  className: classes.barLabel,
825
843
  "aria-label": `Total: ${barLabel}`,
@@ -848,6 +866,25 @@ const VerticalStackedBarChart = (props)=>{
848
866
  }
849
867
  return bars.filter((bar)=>!!bar);
850
868
  }
869
+ function _getMinMaxOfYAxis(dataset, yAxisType, useSecondaryYScale) {
870
+ if (!useSecondaryYScale) {
871
+ return (0, _index1.findVSBCNumericMinMaxOfY)(dataset);
872
+ }
873
+ const values = [];
874
+ props.data.forEach((xPoint)=>{
875
+ var _xPoint_lineData;
876
+ (_xPoint_lineData = xPoint.lineData) === null || _xPoint_lineData === void 0 ? void 0 : _xPoint_lineData.forEach((point)=>{
877
+ // useSecondaryYScale is applicable only for lines in VSBC
878
+ if (point.useSecondaryYScale) {
879
+ values.push(point.y);
880
+ }
881
+ });
882
+ });
883
+ return {
884
+ startValue: (0, _d3array.min)(values),
885
+ endValue: (0, _d3array.max)(values)
886
+ };
887
+ }
851
888
  if (!_isChartEmpty()) {
852
889
  _adjustProps();
853
890
  const _isHavingLines = props.data.some((item)=>item.lineData && item.lineData.length > 0);
@@ -882,6 +919,7 @@ const VerticalStackedBarChart = (props)=>{
882
919
  points: _dataset,
883
920
  chartType: _index1.ChartTypes.VerticalStackedBarChart,
884
921
  xAxisType: _xAxisType,
922
+ getMinMaxOfYAxis: _getMinMaxOfYAxis,
885
923
  calloutProps: calloutProps,
886
924
  tickParams: tickParams,
887
925
  legendBars: legendBars,
@@ -899,7 +937,7 @@ const VerticalStackedBarChart = (props)=>{
899
937
  },
900
938
  componentRef: cartesianChartRef,
901
939
  /* eslint-disable react/jsx-no-bind */ children: (props)=>{
902
- return /*#__PURE__*/ _react.createElement(_react.Fragment, null, /*#__PURE__*/ _react.createElement("g", null, _bars), /*#__PURE__*/ _react.createElement("g", null, _isHavingLines && _createLines(props.xScale, props.yScale, props.containerHeight, props.containerWidth, props.yScaleSecondary)));
940
+ return /*#__PURE__*/ _react.createElement(_react.Fragment, null, /*#__PURE__*/ _react.createElement("g", null, _bars), /*#__PURE__*/ _react.createElement("g", null, _isHavingLines && _createLines(props.xScale, props.yScalePrimary, props.containerHeight, props.containerWidth, props.yScaleSecondary)));
903
941
  }
904
942
  });
905
943
  }